Значэнне як карабіры: ад імбеддынга да баз дадзэння вектараў і RAG
Эмбеддынгі, косінейная сэмплярнасць, базы дадзэных вектараў і цыкл RAG адказаны чатырма короткімі рэчыма пра сябры, кацоў і Парыж, ўсё гэта для таго, каб сэмантычны пошук працаваў эфектыва.
Крыніцы: Meaning as Coordinates: Semantic Search, Vector Databases, and RAG
Поле пошуку, якое не прагне нічога для запіту „хораша домашня твароць для актыўнай людзі“, нават які база знання заполнена парадамі ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо
1. Dogs are loyal and need daily walks and exercise
2. Cats are independent pets that groom themselves
3. Golden retrievers are friendly family dogs
4. The capital of France is Paris
Пытаецца запытваць карыстальніка:
"What's a good pet for an active person who exercises a lot?"
У запытанні ніколі няма слова «сёнь» чыра «хадзець». Звычны пошук па ключавых словах не дастань нічога корыстнага. Аднак машына все ж можа даць правы адказ, таму што яна парабялівае, дзе тэксты знаходзяцца ў прасторэ значэнняў, а не якія словы ў іхім спакульніваюць.
Падобныя значэнні, блізкія тыпы
Вектар — гэта проста радок цыфр, які кодуе значэнне фрагмента тэксту. Калі падобныя значэнні ствараюць падобныя вектары, пошук супаўзеліглых тэкстаў ператвараецца на пошук блізкіх тыпоў. Гэта ператварае мовны прыем па геаметрычны, што являецца адной з аснов сучаснага пошуку, рэкамендацый і тэхнікі RAG — спосабу, калі мовнаму модэлю даюць званэчную бібліятэку для адказаў, каб ён перастаў выдумваць рэчы.
Калі значэнне — гэта набор коордынатаў, работа з значэннем значыць работа з адстаннем і напрамам, у чым камп’ютары дастойнае справляюцца.
Эмбеддынгі для цэлых абаротак
Вектары на рэвэлі слова недастатковы для пошуку дакументаў. Для рэчы, параграфа чы ўсіго старонікі патрэбны адзіны вектар. Мадэлі тыпу Transformer можаюць стварыць такі вектар: як толькі ўводзіцца частка тэксту, яна отрымае вектар, які зазвычай называецца эмбедынгам і які падсумоввае яго значэнне.
"Dogs need daily walks" ──► [ 0.91, 0.08, -0.30, ... ] (e.g. 384 numbers)
"The capital is Paris" ──► [-0.05, 0.62, 0.44, ... ]
Эмбеддыяванне выразэння скартавае тэкст у спіс ціфр фіксаванага дыявежы. Два тэксты на аднай тэме даюць падобныя спісы, а несупаўзаныя тэксты — вельмі разныя. Адзінкавыя ціфры нічога не значаць для чалавека. Важнае — гэта якія зв’язкі между німі існуе, і ніхто не чытае іх безпосерэдна. Іх толькі паўставляюць у адносах.
Абраз ці павінен быць у памяці
Уявіце кожны тэкст як точку ў прасторэ. Тэксты з падобным значэннем знаходзяцца блізка адзін да другога, а несупаўзаныя — далека адзін ад другога.
(a simplified 2-D "meaning space")
dog walks • • golden retriever ← the "dogs" neighborhood
\ /
(pets)
cat grooming • • Paris ← far away, different topic
У той спрасцаванай карце два рэчыпы пра сябецоў знаходзяцца разам, рэчып пра кацоў стоіць поблізу іх, таму што ён таксама пра домашнюе жывотнае, а рэчып пра Парыж знаходзіцца ў абсалютна іншым рэгіоне. Рэальныя прасторы укладкі маюць сотні вымяраў, але інтуіцыя тая ж: супарадныя значэнні означаюць пункты, якія знаходзяцца поблізу. Усё, што ляжыць далей, — гэта спосабы знаходжэння найбліжэйшых пунктав.
Пошук за ключоўымі словамі проты семантычнага пошуку
Пошук за ключоўымі словамі падбірае словы. Пошук па слове “выпэчка” праігноруе дакумент, у яком напісана “дзённыя прагулкі”, таму што няма спакойных слоў. Гэта шырока, але буквальна, і гэта не врачыта значэнне.
Семантычны пошук падбірае значэнні. Запіт ператвараецца на вектар, і вяртаюцца дакументы, вектары якіх знаходзяцца найбліжэй да яго, незалежна ад таго, якія словы ў іх вжываюцца. Ёсць рангаванне, якое было створанае для прыкладу, з выкарыстоўваннем рэальных балав схожасці:
Query: "a good pet for an active person who exercises"
0.999 ############################# Golden retrievers are friendly family dogs
0.995 ############################# Dogs are loyal and need daily walks and exercise
0.398 ########### Cats are independent pets that groom themselves
0.059 # The capital of France is Paris
У запіта няма спільных ключавых слоў з рэчыма пра сябак, пры тымабудзь оба маюць максымальны рэйтынг апоўну 1,0. Рэчь пра кацо знаходзіцца у серэдзіне, таму што кацо таксама ўважаецца домашнім жывотным, а рэчь пра Парыж знаходзіцца маладзе ў нулі. Пошук за ключавымі словамі не даў бы нічога. Самэ таму семантычны пошук здаецца інтэлігентным: ён розпазнае, што актыўная людзіня, якая займаецца фізічнымі вправамі, і сябака, якому патрэбны ўсёдневныя прагулкі, — гэта па-радзіму адно і тое ж. Разлік межа ключавым і семантычным пошукам — гэта разлік межа «нічога не знайдзена» і адпаведнай адпаведзі, якую на самай працоўцы хацелі.
Апылкаванне ступеня блізкасці за дапамой косай схожасці
Звычны інструмент для апылкавання ступеня блізкасці двух вектараў — косая схожасць. Ён аналізуе куточак межа двумя стрэлкамі і ігнаруе ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўжо ўж
Малы куточак межа запытам і дакументам пра сябе выглядае так:
^ query
│ /
│/ small angle → cosine ≈ 1 (similar)
└──────► dog doc
І шырокы камерны практык для дакумента з Парыжа:
^ query
│
└──────► Paris doc big angle → cosine ≈ 0 (unrelated)
Для таго, каб дакладныя тэксты і короткія моглі парабелівацца справядліва, узамен на дзейсныя размеры выкарыстоўваецца кут. Матэматычныя вычысленні можна адрабатаць ў адной лініі: павышыць вектары ў добутак і стандартызаваць яе.
import numpy as np
def cosine(a, b):
return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))
Гэта маленькая функцыя стоіць за кожным рэйтынгам у вышэйшым спісе. Рэйтынгі коліваюцца ад -1 да 1, і значэнне, блізкое да 1, адзначае, што два тэксты маюць адно значэнне.
Базы дадзэння вектараў для пошуку у велікых масштабах
У прыкладзе ёсць чатыры дакументы. Рэальныя сістэмы маюць мільйоны або мільярды такіх дакументаў — напрыклад, кожны запіт на падтрымку, стораніцу продукту чыя-небудзь частку дакументацыі компаніі. Пораўнанне запіта з мільярдам вектараў поўна адна-аднаго пад час кожнага пошуку ёсць дужа медленным.
Для гэтага і існуюць базы дадзэння вектараў. Гэта сховішча, створаныя для эфектывнага выпалення адной задачы: прыйняць вектар запіта і быстра вернуць найбліжэйшыя зберагнутыя вектары. Яны выкарыстоўваюць метод апрыксіматыўнага пошуку найбліжэйшага суседа — групу хітрых індэксаў, якія знаходзяць майжэ найбліжэйшыя падходы, пры чым прыменшаюць колькасць парадоў. Незначныя втраты точнасці компенсуюцца вялікім прыростам у швальнасці.
documents ─► embed ─► [ vector database ]
│ stores millions of vectors
│ + a smart index (ANN)
query ─► embed ─────────► │
▼
top-k nearest matches (in milliseconds)
Дакументы праходзяць праз модэль умяшчэння толькі аднажды і зберагаюцца разам з індэксам. Калі прыходзіць запіт, ён таксама праходзіць праз процэс умяшчэння, і база дадзеных мгновенна адпавядае, прадаючы k найболей адпаведных элементаў, незалежна ад таго, сколькі вектара ў яе ёсць. До продуктам у гэтым сектарэ належаюць FAISS, Pinecone, Weaviate, Chroma і Milvus, а таксама pgvector — пашырэнне, якое дазволяе вектарныя пошукі ў звычным PostgreSQL. Дэталі разныя, але ўсе яны зберагаюць умяшчэнні і шырока шукаюць суседнія элементы. Корача, вектарная база дадзеных — гэта пошуковы механізм для значэнняў.
Што не так у мадэлях простай мовы
Модулі большых мовных модэляў вялікія, але самі по сабе у яных ёсць тры значныя слабасі:
- Галюцінацыі. Калі яны не впевненыя, яны даюць паводлівыя, адказныя, але некарэктныя адпаведзі.
- Межа ведачы. Мадэль знае толькі тое, што было ў даных для навчання, зафіксаваных у певную ранейшую дату.
- Няма ведачы пра вашы даны. Внутршнія документы, прыватныя нотаткі і зустрэчы з мінулага тыдня застаюць невядомымі для мадэлі.
You: "What's our refund policy?"
Plain LLM: "Typically, refunds are offered within 30 days..." ← a guess, not YOUR policy
Калі спытваюць пра політыку вярнення грошаў, просты мадэль адпавядае з памяці, даючы правдападобныя прыпускі, а не фактычную політыку компаніі. Гэта рызыкавана практыка для будзь-яых фактычных чыстаць або прыватных дакументаў. Неабходная ўмова — адразу падаць правільныя факты, калі мадэль адпавядае, без дадатковай падготовкі, і RAG робіць самэ гэта.
Retrieval-augmented generation
RAG аб’еднвае ўсё вышэсказанае ў адну практыку. Уместо таго, каб прасіць мадэль адпавядаць з памяці, спачатку за дапамогою семантычнага пошуку знаходзяцься актуальныя дакументы, а пасля прасіць мадэль адпавядаць на ўснове іх. Назва яўляе сабою апісанне: retrieval — гэта знаходжэнне актуальнага тэксту, augmented — адналежнае да яго даданне да запіту, а generation — можлівасць для мадэлі напісаць адпаведзь.
1. Question ─► embed ─► search the vector DB ─► top relevant chunks
│
2. Build a prompt: "Using ONLY the context below, answer the question.
Context: [retrieved chunks]
Question: [user's question]"
│
3. LLM generates an answer grounded in the retrieved text ─► with sources
Выкананне прыкладу:
Question: "What's a good pet for an active person?"
→ retrieves docs 1 & 3 (the dog sentences, from Figure 3)
→ prompt: "Using this context: [Dogs need daily walks and exercise;
Golden retrievers are friendly family dogs] — answer the question."
→ LLM: "A dog — especially a golden retriever — is a great fit, since
they need daily walks and exercise. (Source: docs 1, 3)"
Адказ цяпер базуецца на рэальных дакументах, якія належаць власніку, і ён можа паказаць, звядзе каналася тая інформацыя. Значна меншая колькасць выдуманых адказоў праскаквае. RAG — гэта сэмантычны пошук плюс мадэль мовы: спачатку выявляюцца правільныя факты, а потым мадэль формулюе адказ.
Практычны працэс і яго галоўная пастка
RAG складаецца з двух фаз. Наладжэнне выконваецца адной раз, а запыткі прыманяюцца ў кожны раз, калі хтось ставіць запыт.
── SETUP (once) ── ── QUERY (every question) ──
documents user question
│ split into chunks │ embed
│ embed each chunk │ search vector DB
│ store in vector DB │ get top-k chunks
▼ │ build prompt with chunks
[ vector database ] ◄───── search ──────┤ send to LLM
▼
grounded answer
Дакументы дзельвяюцца на часткі, уключаюцца і зберагаюцца адно раз. Кожны запіт уключаецца, парабелюецца з тым, што зберагаецца, і найлепшыя часткі надаюцца модэлю для стварэння фінальнай адпаведзі.
Проблема крыўціцца ў самай процэзе дзельвявання, тыям самым у спосабе раздзелення дакументаў пры ўключэнні. Часткі, якія занадта вялікія, зліваюць кальколькі тэм у адны вектар і даюць нечыстыя парабелюванні. Часткі, якія занадта маленькія, втрачаюць кантэкст, і адпаведзь можа быць перэрвана. Выбір розмеру часткі ўскладніць адна з найважлівейшых практычных рашэнняў у рабочый сістэме RAG, і гэта нагадванне пра тое, што простая падготовка дадзеных вплывае на усё, што выконваецца пасля.
То ж самае ў кодзе
Частка RAG, якая адпавядае за пошук, тое ўсьмо тэматычны пошук, для якога патрабуецца толькі кальколькі ліній коду на NumPy. Ён прымеўае вектары дакументаў плюс вектар запіту і сортавае дакументы па косай сумараднасці:
import numpy as np
def cosine(a, b):
return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))def search(query_vec, doc_vecs, docs, k=2):
scores = [(cosine(query_vec, v), d) for v, d in zip(doc_vecs, docs)]
return sorted(scores, reverse=True)[:k] # top-k most similar
Як толькі задаюць чатыры вектора для домашніх жывотных і Парыжа, а таксе запіт пра актываўшагася адвітара, сістэма спачатку вяртае два дакументы пра сябец, якія паспадаюць па рангаванню, паказанам раней. Гэта і ёсць семантычны пошук у калькі ліній коду.
У рэальным праекце векторы не ствараюць вручную. У такім праекце вікорыстоўваецца мадэль эмбедынгу і хранальнік вектораў, а код выглядае прыблізна так:
# Illustrative real-world usage (libraries download a model, so not run here)
from sentence_transformers import SentenceTransformer
import chromadb
model = SentenceTransformer("all-MiniLM-L6-v2") # turns text into vectors
db = chromadb.Client().create_collection("pets")db.add(documents=my_docs, embeddings=model.encode(my_docs).tolist(),
ids=[str(i) for i in range(len(my_docs))])q = "a good pet for an active person"
hits = db.query(query_embeddings=model.encode([q]).tolist(), n_results=2)
# hits now holds the top-2 most semantically similar documents
Бібліятэкі выканаюць большую частку работы, але пад спадом яны выконваюць той самы пошук за дапамою косай схожасці. Сэмантычны пошук — гэта калькы з матэматыкі для вектараў, а рэальныя інструменты практычна застаўляюць гэю ідэю з высокай швальнасцю і масштабаваннем.
Весь цікл
Тэкст пачынаецца з сімвалоў і токэнаў, пасля ператвараецца на эмбедынгі, потым за дапамою механізма адзіркі ў трансфармеры з’яўляецца кантэкст, і нарэшце стае картай знанняў, якая дазволяе лінгвістычным мадэлям быць точнымі і корыстнымі.
raw text
→ characters / tokens / embeddings [article 1: From Characters to Meaning]
→ attention turns them into context-aware
vectors inside a transformer [article 2: Attention, Explained Simply]
→ those vectors become coordinates we can
store, search, and retrieve [article 3: this one]
→ semantic search (find by meaning)
→ vector databases (search at scale)
→ RAG (ground an LLM in real data)
Спаяючы ўсё гэта, ёсць адна ідэя, якая развіваецца: значэнне — гэта тачка ў прасторэ. Спачатку гэта стосуецца слоў, потым — рэчэй у кантэксце, а ў канцы — цэлых бібліятэкаў дакументаў, якія можна шукаць і аналізаваць.
Ішчо адна разліка, якую варта памятаць. RAG дае модэлю доступ да знанняў без змены самага модэля, падобна да таго, калі даеце яму нотаткі для чытання пад час адпаведзення. Тонкая наладка — гэта іншы падход, пры яком узлегкі модэля налаштовуюцца праз трэніраванне на прыкладах. RAG супляўае знанняя для чытання, а тонкая наладка зміняе сам модэль. Ведаць, калі варыта апыляцца на ўсё гэта, — гэта сама по сабе практычная навык.
Спадневаная літэратура
- Практычныя прыемы: Мерыякія вектарнага пошуку ў RAG — косайнае сяродзецтва і іншы аспекты — Практычныя інструкцыі па вектарнам пошуку ў RAG — косайнае сяродзецтва: шаблоны коду, перакананні і перагляды для команд, якія вікорыстоўваюць гэты падход.
- Практычныя прыемы: Вектарныя базы дадзэння для прымененняў RAG: індэксаванне, гібрыдны пошук — Практычныя інструкцыі па вектарных базах дадзэння для прымененняў RAG: індэксаванне, гібрыдны пошук: шаблоны коду, перакананні і перагляды для команд, якія вікорыстоўваюць гэты падход.