Як працуе база дадзенаў вектораў: імбеддынгі, пошук вектораў і людская памяць
Ментальная модель, апелюючыя да памяці, для пошуку вектораў: як працуюць імбеддынгі, сэмпіларнасць, індэксы найбліжэйшых суседаў і фільтры метадаў у базе дадзенаў вектораў для RAG.
Крыніцы: Your Brain Is a Vector Database. It Just Doesn’t Call Itself That.
Можаць працысці гадзіны, аднак не падумаць ні разу пра вучыцу з дзецінства. А потым запах пылку з мела, аромат школьнай столовайчыкі або песня, яка грала па дарозе дадому, момантальна і жываўа вяртае тую людзіну. Нічога не шукалі па імені; прыйшоў што-то падобнае, і спомненне сама сабою выйшла на паверхню.
Гэта тое, што прабуюць відтворыць семантычныя системы пошуку, тэхнологіі RAG і системы рэкамендацый на AI — хоць і недосконала, але серйозна. Компонент, які гэта можа, — это векторная база дадзеных. Метод запамятовання па асоціяцыях стварае хорашую псіхічную модель для пояснення таго, што такое вектары, як вимерваецца сэмабільнасць, як функцыонуе пошук найбліжэйшага суседа і як усе гэта складаецца ў процес выкарыстоўвання дадзеных. Ён таксама паказвае, дзе аналагія перестае быць актуальной, бо самэ гэткія моменты ёсць прычынай парадоксаў у прымененні такіх систем у практыцы.
Зберагачванне па значэнні, а не па назе
У людскай памяці няма абеткавога індэкса. Не існуе такога „ментальнага“ папкі пад назе „Ежа“, яка б мела падсабкапку „Італійскія стравы“ з файлам пад назе „Піцца“. Самэўсёледжваная іерархія — гэта спосаб, якім традыцыйныя базы дадзэных арганізуюць даны: кожны запис знаходзіцца за вядомым адресам і можа быць знайдзены за дапамою точнага ключа.
Памяц жа арганізуецца па значэнні і асоціяціях: па контэксте, па адчуваннях, па тым, як адна рэч асоціюецца з іншымі. Ідея піццы асоціюецца з пятнічным вечарам, паездкай у Неаполь, стравамі, якія даюць комфорт, суцэльными шматкамі сыра, запахам орэгана, а можа і з камрадам па кварцыре, які зіпсав кожную партію домашньяго тесту. Калі думаеш пра піццу, ты не ачынаеш адзін файл — ты актываўшы цэлы раён сувязаных спогадоў, прычым самыя сильна асоціююцыяся спачатку.
База дадзэных вектараў выкарыстоўвае самэ гэтае прынцыпа. Элементы зберагаюцца ў залежнасці ад таго, што яны значаць, і яны аднаходзяцца па тым, насколькі яны супадаюць з запитам, а не па тым, чы роўнасць ключа ўсё правільна.
Што кодуе вектар укладкі
Ёсць разумець базу дадзэных, спачатку трэба разумець, што ў яй ёсць. Вектар тут — гэта проста арранжаваны список цэфр, які выражае значэнне.
Машына не мае жывога уявлення пра тое, што такое піцца. Модель укладкі можа выучыць, обрабоўваючы вельмі вялікія кантэксты, якія асоціяцыі мае слова. Слова «піцца» з’яўляецца поблізу слов «сыр», «італійскі», «теста», «печка» і «шматак». Гэтыя асоціяцыі разлічная ад тых, якія є ў слова «суші», але значна пераходзяць з тыми, якія є ў слова «плоскі хлеб» або «кальцоне».
Модель скондэнсавае тыя шаблоны ў спіс цячкоў фіксаванай дужыны, які зазвычай складаецца з калькі сотняў да калькі тыяч значэнняў; 384 і 1,536 — это типовыя розмеры. Жадна адна цячка не несе чытальнага пазначэння, але разам яны точна пазначаюць элемент у высака-вымірнам прасторе. Важныя якосці — гэта тое, што вхідныя даны з падобным значэннем ствараюць вектары, якія знаходзяцца падалёку адзін ад другога. «Піцца» знаходзіцца падалёку ад «плоскага хлеба», а дужа далёка ад «звясткі пра квартальныя доходы».
Іншымі словамі, значэнне ператвараецца ў адстань. Усе іншае вынікае з гэтага простага крока.
Падобнасць як спектр, а не падпаданне
Традыцыйны запыт ёсць бінарным: рэкорд альбо задовольняе умову, альбо не задовольняе яе. Якщо фільтруваць па слове „сёнь“, то будуць атрыбутаваны рэкорды, якія точна маюць слово „сёнь“, а дык нічога для „цуценя“, „голдэн-ретрівер“ чы ў „вярнага чатырохногага сябра“.
Семантычная сэроднечнасць заменяе гэты адказ „так“ чы „нет“ на бал, які паказвае, насколькі близкія ўзаемна два значэння. На прыклад, „цуценя“ можа маць бал 0,94 па адносу да „сёня“, „вовк“ — прыблізна 0,71, а „рахунак“ — адо 0,08. Як правілу, як метрыка вжываецца косайнавая сэроднечнасць чы якаясь з адносных відстаней, такіх як скалярны добутак чы евклідава відстань, прычым, правы выбор залежыць ад таго, як трэнавалася модель укладання.
Это адаптаванне ад эфекту пылі ад мела: гэта не точны адпаведнік, а радыя сігналы, якія актываюць суседнія спомненні, а тыя зноў актываюць іх суседзей. У базе дадзеных на адной вектарнай основе механізмы ўжо числовыя. Запит ператвараецца ў вектар, і база дадзеных вяртае зберагнутыя элементы, вектары якіх знаходзяцца найбліжэй да яго. «Блізкасць» значыць сэмантычнае саадпавенне.
Самэй таго пошук фразы «як выправіць повольны запит у базе дадзеных» можа прадстаўіць дакумент пад назвай «оптымізацыя выконвання запитоў у великых масштабах», нават якіх фразах практычна няма спакойных слоў. Їх вектары знаходзяцца нядаўна адзін ад другога, таму што яны выражаюць аднаковыя намеры.
Заўважэнне пра цыфры
Рэштынкі падобнасці ўзельні, а не абсалютныя. Рэштынка 0,8 ад аднаго модэлю імбеддынгу нельга парабяляваць з рэштынкай 0,8 ад іншага, а нават у межах аднаго модэлю типовы дыяпазон залежыць ад сферы прыменення. Вядзіце рэштынкі як спосаб размешчэння кандыдатаў па рангу, а якщо вы вжываеце прагу, настроюйце яе на савойных дадзенах, а не выбірайце заканчанае число.
Адносна паўтарэнне: звычны SQL, апараны на ключоўых словах, не можа выражаць сэмантычную падобнасць, але гэта не значыць, што базы дадзенаў SQL адключаныя. Расшырэнні, такія як pgvector, пра якіх пагаворыцца нижэй, дадаюць вектарныя столбцы і аператары падобнасці да Postgres, таму такая можлівасць можа існаваць унутрь реляцыйнай базы дадзенаў.
Пошук найбліжэйшага суседа у масштабе
Як сама база дадзенаў насправды знаходзіць найбліжэйшыя вектары? Асновная операцыя называецца пошукам найбліжэйшага суседа, і яго прыгнечэнне да шырокага тэхна чырвоным праблемам, з-за якіх і існуюць вектарныя базы дадзенаў.
Уявіце кожны зберагучыся элемент як зору ў галактыцы, распакаваную па ўзначэнні, пры чым супаўзвучныя элементы збіраюцца ў аднай рэгіяні. Запит дадае новую зору ў тую галактыцу і запытае, якія пяць існуючых зораў знаходзяцца найбліжэй.
Просты падход вымервае адстань ад запиту да кожнага зберагучага вектара, сортавае рэзультаты і вяртае найболей значныя. Для тыяў тысяч вектараў гэта шырока і абліковае. Але для мільйонаў чы більш як мільярдаў пораўнанне з усім стае вельмі дорогім за лічыцыя секундаў.
Таму системы вырабаткі завісяць ад алгорытмаў апрыксиматыўскага найбліжэйшага суседа (ANN). Уместо таго, каб адвідаваць кожную зорę, яны выкарыстоўваюць індэкс, які скарочвае пошук да перспективных рэгіонаў, прыймаючы невялікія втраты ў тачнасці зарады значных прыбыткаў у швальнасці. Найбольш популярным алгорытам сёння є HNSW, абвяртанне ад Hierarchical Navigable Small World. Чырпаць базу дадзенаў вектараў не трэба знаць яе внутршнія прынцыпы, але варта знаты, што самэ гэта ўрабляе тое, што пошук сярод ста мільйонаў эмбедынгаў можа завершыцца за каліксекунды.
Слова „апрабоцяйнае“ заслуговае на увагу. Індэкс АНН іноды не можа знайсці справжньяго найбліжэйшага суседа, а шчыта, па якім ён знаходзіць справжніяя лепшыя рэзультаты, які называецца рекал, залежыць ад параметраў індэкса, якія ставяць парадакс межы памяці, часу адпаведзення і точнасці. Якщо якасць выкарыстоўвання індэкса на вялікіх масштабах выглядае незрозумела неравнамерна, варта пераканацца ў настройках індэкса; наша інструкцыя па настройцы індэксаў HNSW для прыменення ў RAG дакладна раскрывае гэтыя параметры.
Усередзіне базы дадзеных вектараў
У сваій сутнасці база дадзеных вектараў — это сховішча, оптымізаванае для аднаго завадзка: зберагчыць вектары і дужа шыбка адрабатваць пошук найбліжэйшых суседаў сярод іх.
Уявіце бібліятэку, яка ігнаруе Дьюўскую дэсятковую систему і розмішчае кнігі за ўсімі ўпадзіцелямі. Кнігі пра сум стояць паляўкі з кнігамі пра втрату, якія зноў паляўкі з кнігамі пра саматнечу, потым — пра ізоляцыю, а пасля — з мемуарамі пра самастоятныя экспедыцыі. Ніхто не прызначаў гэтыя катэгорыі вручную; такое распаложэння выйшла сама сабою, таму што чытальнікі, якія прывабляюцца адной кнігай, часта жадаюць і іншых.
Pinecone, Weaviate, Chroma і Qdrant — гэта прыклады такіх бібліятэкаў. Вы завантажуеце ў яны эмбедынгі дакументаў, апісанні продуктав, з’явы, ператвораныя на вектары, або шаблоны поведзення корыстувачаў, і яны падтрымліваюць індэкс, так што пошук заставаецца шырокім, нават калі калекцыя расте.
Кожны збераглы запис зазвычай складаецца з трох частак:
- ID, який унікальна ідэнтыфікуе айтэм.
- Вектар, які выражае яго значэнне.
- Неабавязковыя метаданы, такія як заглавле, дата, катэгорыя або URL-адрэса джерела, якія можна выкарыстоўваць для фільтрацыі рэзультатаў.
Метаданыя маюць большую цэнна, чым можа здавацца на першы погляд. Рэалістычны запит выглядае так: знайсці пяць дакументаў, якія наіболей супадаюць з запитам, але толькі тыя, якія з’явіліся за апошнія 30 дзён і якія знаходзяцца толькі ў базе знанняў інжынерскай команды. Гэта ўзаеднанне вектарнага пошуку і фільтра метаданых, і большасць прыменных систем паводзяцца самэ так. Таксама важнае значэнне мае спосаб прыменення фільтра: фільтрацыя пасля пошуку супадамоў можа залічыць менш рэзультатаў, чым вы прасілі, таму пераканайцеся, чы ваша база дадзенаў фільтруе падчас самага пошуку.
Працэс адзысквання дакументаў у RAG ад пачатку да канца
Незалежна ад таго, чы розташоўваецца ён у системе RAG, функцыі семантычнага пошуку чы ў будзь-ям прымененні, якое выкарыстоўвае зберагнутыя знанні, адзыскванне дакументаў адбываецца за аднаковымі чатырма крокамі.
- Умякчыць контэнт. Кожны дакумент, стаття, апісанне продукту чы архів, якія хочаце, каб яны былі доступныя для пошуку, праходзіць через модель умякчэння, і отрыманы вектар зберагаецца разам з первісным контэнтам. Дзялёныя дакументы зазвычай спачатку дзеляюцца на часткі, таму што адзін вектар для цэлага інструкцыянара злучае занадта многа ідэй.
- Умякчыць запит за дапамою той самой моделі. Гэта не ўзначальна. Разныя моделі умякчэння ствараюць вектары ў незв’язаных прасторах, таму паўтарны аналіз запита з адной моделі з дакументамі з іншай дае бессэнсавыя значэнні расстоянняў. Змена моделі значыць паўторны умякчэння всей колекцыі.
- Пошук. Вектар запита падае ў базу дадзенаў, пошук найбліжэйшых суседаў знаходзіць найбліжэйшыя зберажаныя вектары, і вяртаюцца самыя релевантныя рэзультаты, як правіло, заўважваючыся з рэйтингамі сэмплярнасці.
З точкі зору корыстніка, рэлевантны адказ паказваецца за кальканы хвіліны. Праз тым значэнні было пераканана ў цифры, гэтыя цифры былі паўпорачаны з мільйонамі збераглых элементаў, былі вярнуты найбліжэйшыя падабенні, а адказ быў створаны на базе справжніх контэнтаў.
Чаму векторны пошук зараз ўсюды
Няма дзеўна, вектарныя базы дадзеных былі нішавым інструментам, які выкарыстоўвалі толькі пад час стварэння семантычных пошукавых систем або спецыялізаваных рэкамендатараў. Якраз зараз яны сталі стандартной часткай багатох АІ-зялённяў. Для тэхнологіі RAG патрэбна адна ўстановка для зберагчэння та запытання эмбедынгаў дакументаў. Агенты запытваюць базы знанняў на адной па значэнні. Масштабныя рэкамендатары функцыонуюць на адной па сэмабільнасці вектараў. Мультімодальны пошук, такі як пошук адобразаў на адной тэкстовым апісаннем або продуктаў на адной заванесенай фота, таксама выконваецца за дапамогою вектараў.
Якщо вы ствараеце продакты на адной большых мовных моделях, існуе вялікая шанса, што вы вялікі час вяжаецеся з вектарным пошукам або скора так зрабіце. Адраднае ў тым, што асновная ідея вже знайома: як толькі мы жывем, памяць завжды знаходзіла найбліжэйшыя асоціяцыі да таго, што толькі дасягла нашых чуткаў. Вектарная база дадзеных робіць тое ж самае з цыфрамі, за мілісекунды, з мільйонамі елементаў.
Дзе ламае аналагія з памяцю
Порэшчанне з мозгам ўжыткова для інтуіцыі, але ў практыцы маюць значэння калькі разлікі:
- Памяць постаўна адаптуецца; модель укладання застаеяцца незменной. Якщо скарыстаецца слоўнік вашай галіны, вектары сабе не апдэйтуецца.
- Памяць без працы спаўнае контэкст; вектар фіксуе толькі тое, што ў ён увайшло. Некачэнны або з бягамі текст дае паслабыя «суседзі».
- Падобнасць не значыць релевантнасць. Два абзацы можуць быць блізкія па значэнні, але толькі адны ў рэальнасці адпавядае на запытанне, таму багатыя системы дадаюць пошук за ключоўымі словамі аб крок переранкінгу.
Практычныя эксперыменты
Вы можете експерыментаваць без стварэння жадной інфраструктуры:
- ChromaDB работае локальна ў Python без неабяжнасці стварання адказу, API-клуча чыя-небудзь развёрткі, і для яго інсталяцыі і наладжвання патрабуецца толькі калькі ліній коду. Ён падходзіць для навучэння і малых проектаў.
- Qdrant адказвае безкоштовным хмарным рівнем і простым кліентам на Python, што ўзгодна, калі хочаце ўтварыць сістэму, падобную да прыменнай у працэ, не керуючы самімі серверамі. Перад тым, як паспелівацца на іх можлівасці, пераканайцеся ў ныях межах.
- pgvector — гэта расширэнне для Postgres. Якщо вы вялікі час вжываеце Postgres, яно даўае можлівасць вектарнага пошуку без стварання аддзельнай базы дадзеных, чым спростоўваецца структура системы.
Які бы вы выбралі варыянт, працэс застаецца аднаковым: выбіраеце модель для эмбеддынгу, эмбеддуеце свой контэнт, зберагаеце вектары, эмбеддуеце прыходзячыя запиты і адмахваецеся. Канцэпцыі застаюцца тымі ж; зменяецца толькі бібліятэка кліента.
Короткая характарыстыка ментальнага модэлю
- Умяшчэнне ператварае значэнне ў пазіцыю, таму падобныя элементы апынуцца падалей адзін ад другога.
- Рэйтингі сэраблівасці класіфікуюць кандыдатаў; настройцы ліміту трэба адрабатваць на сасобах савых дадзэнняў.
- Індэксы ANN, такія як HNSW, падменяюць частыя прыклады на большую шыроцу адказаў за рахунак зростання швальнасці при вялікіх масштабах.
- Фільтры метададзэнаў ператвараюць чыстую сэраблівасць у адказы, якія салідарны з правіламі часу, выканання і доступу.
- Запыты і дакументы должны выкарыстоўваць аднойчы той самы модель умяшчэння, а якасць аднаходжэння залежыць таксама ад способу разбівання на часткі і якосці дадзэнняў, як і ад самай базы дадзэнняў.
Супаўзеўныя матэрыялы
- Як насправды працуюць вектарныя базы дадзэнняў: ад умяшчэнняў да гібрыднага пошуку: Пасвячана таму, як умяшчэнні кодуюць значэнні, як масштабуецца пошук і індэкаванне на аднойчы сэраблівасці, і калі гібрыдны пошук і вектарныя базы дадзэнняў падходзяць для корпоратыўскіх систем AI.