Лого на 91. НЕГ „Проф. Константин Гълъбов“

Избираем модул · Урок 20

Вектори на думите

Думите като точки в пространство, в което близостта означава близък смисъл. Косинусова близост и семантично търсене.

Проблемът с номерата

След урок 19 всяка дума има номер. Но номерът не носи смисъл: ако „куче“ е 4312, а „котка“ — 8907, единственото, което моделът вижда, е, че числата са различни. Нужно е представяне, при което близките по смисъл думи са и близки като числа.

Вектор на думата (embedding)

Редица от няколкостотин числа, която представя дума или цял текст така, че близките по смисъл единици са близо една до друга.

кучекоткаконколакамионмоторрадостщастиеИстинското пространство има стотици измерения — тук са свити до две.
Думите се групират по смисъл, без някой да е задавал групите.

Откъде идва смисълът

Идеята е стара колкото езикознанието: думата се познава по компанията, в която се среща. Ако „котка“ и „куче“ се появяват в едни и същи контексти („храня“, „ветеринар“, „домашен“), значи имат близък смисъл.

Векторите се научават точно от това. Моделът чете милиарди изречения и настройва числата така, че думи със сходно обкръжение да получат сходни вектори. Никой не е задавал категориите „животни“ и „превозни средства“ — те се появяват сами.

Известният пример

крал − мъж + жена ≈ кралица. Върху векторите могат да се правят аритметични действия и посоките в пространството носят смисъл — една посока е „пол“, друга е „множествено число“, трета е „минало време“.

Как се мери близост

Разстоянието по права линия работи, но при текстове по-често се използва косинусова близост — тя гледа ъгъла между векторите, а не дължината им.

  • 1 — векторите сочат в една посока: почти един и същ смисъл.
  • 0 — перпендикулярни: несвързани неща.
  • −1 — противоположни посоки.

Предимството пред обикновеното разстояние: дълъг и кратък текст на една и съща тема имат вектори с различна дължина, но с почти еднаква посока.

От думи към изречения

Съвременните модели правят вектор не само на дума, а на цял абзац или документ. Това отваря вратата към семантично търсене:

  1. Правим вектор на всеки документ и ги съхраняваме.
  2. Правим вектор на въпроса на потребителя.
  3. Намираме документите, чиито вектори са най-близо до въпроса.

Разликата с обикновеното търсене

Търсенето по ключови думи намира текстове, съдържащи същите думи. Семантичното намира текстове със същия смисъл: заявка „как да сваля температура“ ще намери документ за „лечение на треска“, макар нито една дума да не съвпада.

Обратното също е вярно: търсенето по ключови думи е незаменимо за точни съвпадения — код на грешка, номер на артикул, име. Затова добрите системи комбинират двете.

Това е основата на урок 26

Семантичното търсене е първата половина от RAG — начина, по който моделът отговаря по вашите документи, вместо да си измисля.

Какво не могат векторите

  • Не различават отрицание добре: „обичам котки“ и „не обичам котки“ имат близки вектори.
  • Наследяват пристрастията от текстовете, върху които са обучени — посоките в пространството отразяват и стереотипите в езика.
  • Векторите от различни модели не са съвместими: не можете да сравнявате вектор от един модел с вектор от друг.