Сем архітэктур RAG за межамі наіўнага канвеера і калі якая падыходзіць
Наіўны RAG ламаецца прадказальна. Сем архітэктур, ад кантэкстных нататак да шматагентнага пошуку і пошуку па памяці, з іх кампрамісамі і сцэнарыямі выкарыстання.
Крыніцы: 7 Advanced RAG Architectures Every AI Developer Must Know: A Complete Guide
Першы практычны працэспрыёт RAG, які стварае большасць людзей, ўсё прост: дакументы дзелюцца на часткі, ствараюцься эмбедынгі, выбіраюцца найболей падходзяшчыя рэзультаты, якія пасля вставляюцца ў запіт і даюць можлівасць ШЫ адпаведзець. Дэман працюе, а адпаведзі здаюцца пераканальнымі. Але потым прыходзяць рэальныя запітанні: вяртаецца неправільная частка, з’являецца правільны дакумент, але не той фрагмент, які трэба. Інодзе інформацыя ёсць у базе дадзеных, але мадэль так і не можа яе пабачыць.
Странна рэч у тым, што жаднага з складовых частак не выклікае проблем. Сістэма выпрацоўвае абочынна тое, для чаго была створана. У навучальных матэрыялах рэдка калі акцэнаванае ўвага на справжняй нарадзе: заполненне базы дадзенаў вектараў — гэта проста, але правільна падаць інформацыю модэлю — гэта складная задача. Такі першы дызайн — гэта наўважны RAG. У яго ёсць прызначэння, ён ўжо ўстаўляеясць як натуральная пачатковая точка, але калі дакументы становяцца хаотычнымі, запіты — сложнейшымі або важнаўцюе надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеянная надзеян
LLM знае толькі тое, што ён апрануў пад час навчання. Калі запытаць пра внутрэшнія дакументы компаніі чыста праз недзеўнія выдарэння, ён альбо з’являе сваю некантэкстуальнасць, альбо, што горша, выдумвае впэўненую адказ. RAG рашае гэтыя проблемы, падабна да таго, калі учнік можа прынесці нотаткі на экзамен. Сістэма спачатку знаходзіць стосунаваны матэрыял і дае яго як апавядомленне, тады модэлю не трэба адказваць толькі на базе свайго памяці.
Базовы працэс выглядае так:
Калі корыстнік задае запыт, сістэма выпрацоўвае чатыры крокі:
- Пошук стосунаванага матэрыялу ў зовнішней базе веды
- Адзысканне найболей прыдатных фрагментаў
- Дадаванне гэтых фрагментаў да запыту разам з пытаннем
- Адправка усяго гэтага да LLM, які піша адказ на адважанні гэтага кантэксту
У стыслым выражэнні: запіт, пошук, адзыявленне, дадзенне кантэксту, LLM, адказ. Гэта хораша методыка для невялікіх, апранутых набораў дакументаў. Рэальныя даны рэдка паводзяцца праўільна, і часта выявляюцца пяць слабых месцаў:
- Фрагменты тыятраюць кантэкст. Фраза пра +3% даходу не паведамляе, якую компанію чы ў яком квартале гэта стосуецца.
- Інформацыя застаёцца нез’явленай. Табліцы, графікі і сканаваныя сторункі часта не перазначаюцца падчас пошуку на адной тэкстовай базе.
- Першы пошук можа быць некорэктным, а простая тэхніка RAG не прабуее зробіць іной пошук.
- Прынедбаныя ранейшыя кансэрваціі знікаюць. Без памяці кожная сесыя пачынаецца з нуля.
- Факты застаюцца ад’еднанымі. Калі інформацыя распадзелена між дакументамі, для таго, каб адказ быў зрозумелым, можа знадобіцца ўз’яеднанне іх.
Гэта не пяць адзінаковых проблем. Яны пояснююць, чаму існуюць разныя архітэктуры, прычаму кожна з ніх спрамована на адзін конкрэтны недагоджанне ў базовай схеме.
1. Зьязкавыя прыметкі да частака
Перад тым, як частак будзе зберагацца, да яго прыўязваецца короткая прыметка, якая паведамляе, пра шта ён, так што ён застаецца зрозумелым пасля таго, як пакінуў свой вучальны дакумент. Уявіце, што вы вырвалі аблакат з кнігі і даеце яго незнаёмцу без назвы чы рэквізіта главы. Ён не зможа зрозумець, да чаго гэта аблакат належыць. Тады спачатку прыўяжыце прыметку: гэта з 4-й главы, пра доходы компаніі за 2-ю частку года. Гэта і ёсць весь сэнс.
У самым частаку напісана, што доходы вырасілі на 3% за апошні квартал, пры чым не вказаны ні компанія, ні годзіннік. Калі ж да яго прыўяжаецца прыметка, стае зрозумела, што гэта даны з справаздачы компаніі ACME Corp за 2-ю частку 2023 года, пасля чаго йдзе тая ж самая фраза.
Raw chunk: "revenue grew 3% over the previous quarter"
-> which company? which year? unclear
With a note attached: "From ACME Corp's Q2 2023 filing.
Revenue grew 3% over the previous quarter."
-> now it makes sense on its own
Позітывна сторона полягае у тым, што отрыманыя фрагменты маюць сенс самі по сабе, а сам метод пошуку застаецца незмінным, оскількі змінюецца толькі тое, што зберагаецца. Негатывная сторона – гэта вітраты: напісання прыміткі до кожнага фрагмента вімагае часу і грошэй шчэ до початку пошуку, а погана напісана прымітка можа спрамаваць пошук у неправільны бок так само легка, як і хороша.
2. Багатомодальны пошук
Документы частацай не ў фармаце звічайнага тэксту. Конвертаванне сторынкі PDF у тэкст можа спошкодзіць табліцы і дыяграмы, таму альтэрнатыва – гэта дазволіць сістэме бачыць сторынку як звычайныя зображэння. Пораўняйце чытанне опісу дыяграмы вадзімою людзьмой з працэю безпосерэдньага перэгляду самай дыяграмы. У опісе могу быць пропусканы дэталі або некорэктна паказаны цыфры, тады як у самай дыяграме гэтага не будзе.
У старым падчынным спосабе сторанка PDF перакладваецца у тэкст, прыбліжна выканаўляецца аналіз структуры таблы, пасля чаго адбываецца пошук у тэксце, таму цыфры і структура могу паспяшна змініцца. У багатомодальным падчынным спосабе сторанка шукаецца безпасоверхнева як звычны атракція.
Old way: PDF page -> extract text -> guess at the table layout -> search the text
(numbers and structure can get scrambled along the way)
Multimodal way: PDF page -> search the page as an image directly
(the table stays a table, the chart stays a chart)
Ўніт распрацоўвае таблы, графікі і сканаваныя матэрыялы, якія спакшуюць выкарыстоўванне алгорытму выдзяляння тэксту, і абэруе ненадзвычайна чутлівы элемент працэсу апрацоўкі. Каштоўка такога падходу — вышэйшыя вычысловы затраты паўстаноўлівання, моладзейшая экасістэма з меншым колікствам інструментоў і меньшай колькасцю знаёмасцей у спяльнай адуменносты.
3. Гібрыдны пошук
Разам працуюць два відменнія спосабы пошуку: адны расумее сэнс запіту, а другі шукае точныя словы, і рэзультаты якіх сумашчаюцца. Уявіце двух бібліятэкароў: адны разумее, што вы мелі на увазе, нават калі ваша формулірацыя некорэктная; другі не розумее кантэксту, але завжды знаходзіць дакумент, які мае точны код, які вы ввелі. Самэ ў тым і сэнс — наяўнасць обох падходаў.
Возьмімо запіт "error E0502 borrow checker." Пошук на аднойчыні знаходзіць дакументы, якія стосуюцца супаўзятага панямання, нават без точнай фразы; пошук на точныя словы знаходзіць буквальную строчку "E0502," а пасля сумашчанне рэзультатаў дае ўсё разам.
Query: "error E0502 borrow checker"
Meaning-based search: finds docs about a similar concept, even without that exact phrase
Exact-word search: finds the literal string "E0502"
Combined: merges both into one final list
Адзін пошук пакрывае як размяклыя концэптуальныя запіты, так і точныя тэхнічныя тэрміны, чыгледзеючы такі распаўзаны недагляд: сам пошук на адной основе значэння часта неэфектыўны для кодаў, ідэнтыфікатораў і жаргану. Цена за гэта — неабходнасць выкарыстоўвання двух сістэм пошуку, а таксама неабходнасць рэшання, які вага павінна маты рэзультаты кожной з іх, што вымагае тонкай налады.
4. Адзыскванне у стылі графа і карты
У працоўванні замест таго, каб хаваць адзеленыя фрагменты, гэты падход паказвае, як людзі, компаніі і ідэі ў дакументах з’яўляюцца у зв’язку, агрупавае супакойленыя элементы і загадзя прабывае напісаць кароткія апісанні для кожной групы. Калі запіт занадта шырокі для якога-небудзь адного фрагмента, сістэма выкарыстоўвае гэтыя апісанні груп і нават можа сама выбраць, якія групы патрабуюць увагі.
Спадзяйце, калі хтось жадае абсалютная сутнісная тэмы для всьго, што было опублікована ў гэтым годзе. Жадана адказ не дае жадны адзін артыкул. Якбы організацыя была раздзелена на аддэкты, кожны з якіх меў бы апісанне свайго работы на адну старонку, то проста чытанне тых сторонак дало бы адказ за короткі час. Гэта і ёсць карта. Болей розумны варыянт працуе як асістэнт, які спачатку выявляе, якія аддэкты ўзаемна супаўязаны з пытаннем, а не проста чытае всі апісанні без разбору.
Працэс складаецца з двух крокаў. Першы — карта ствараецца аднойчы, загадзя: выявляюцца способы зв’язку межа людзьмі і ідэямі, групуюцься супаўязаны элементы, пішуцца апісанні для кожной групы. Другі — на адной з тых картак утвараецца адказ на шырокае пытанне.
Step 1, build the map (done once, ahead of time):
Documents -> find how people/ideas connect -> group related ones
-> write a short summary for each group
Step 2, answer a broad question:
"What are the big themes here?"
-> pick the relevant groups (a smart version does this pick automatically)
-> read just their summaries -> combine into one answer
Прыямы: калі адна-едзінственная частка не можа даць адказ на шырокія тэматычныя запытанні, можна адразу выявіць звязкі між багатымі дакументамі, а функцыя самаадаптавання прыкрывае сумарызы, якія не маюць значэння. Недаклады: для ствароўкі такой карты патрэбны рэальныя праекты, часты ўсёўказанай карты трэба перзбудаваць ўсякі час, калі дакументы сутэйна змінююцца, а крок выбору групы — ўсё тое ж месца, дзе сістэма можа зрабіць неправільны выбар.
5. Агентскі, ітэратыўны спосаб выкарыстоўвання дакументаў
Карта дапамагае адпаведзець на загальныя запытанні, але дзеярыя запытанні вымагаюць кальколько пошукаў, незалежна ад таго, насколькі хораша карта. У такім случыку сістэма вырабляе пошук, аналізуе рэзультаты, вяршыць, чыга ўсё гэта дастатнja, і, як трэба, павтарыць працэс. Поручыце пошуковым сэрвісам асістэнта-дакладніка: сэрвіс вяртае адно спісак і зупыніцца, тады як асістэнт чытае рэзультаты, бачыць, што іх недастатнja, і вяртаецца за ўсём падробней, выкорыстоўваючы свае вучэнне, каб другі раз шукаты болей розумна.
Цікл выглядае так: прыходзіць запытанне, адбываецца адны пошук, і сістэма запытваецца, чыга гэта дастатнja. Калі ні, яна павтарае пошук, выкорыстоўваючы свае вучэнне, а калі і гэта не дапамагае, яна пробуе іншы падход.
Question comes in
-> Search once -> "Is this enough to answer?"
-> No: search again, using what was just learned
-> No, still not enough: search again, from a different angle
-> Yes: now answer
Ён справляецца з запітамі, які дзейсна патрабуюць калькаў з колькох істочнікав, і не перыякае пасля адной нявыразнай пошуку, на вядзімую ад стацыярных практык. Кост заключаецца ў дадатковай пераправцы даных за кожны допамоглівы пошук, што прыносіць дапамоглівыя вітраты і час ачаквання, а неправільна выбраны падход можа змусіць адмахнуцца калькаў, прычым не зазначаючы бягу.
6. Адзінавочны пошук з удзелам калькаў
У гэтым случае адна сістэма не плануе, не шукае, не пераканальвае і не запісвае все сама. Шырокія задачы дзелююцца между меншымі, спецыялізаванымі сістэмамі, кожная з якіх добра віконвае адну задачу, прычым коордынатор керуе всім процэсам. Адна людзь, якая адразу ісследуе, запісвае і пераканальвае факты, зазвычай віконвае простае працу ў всіх трох аспектах. Маленькія каманды, у якіх ёсць адны для планавання, адны для пошуку, адны для пераканальвання і адны для запісу, зазвычай добра віконваюць кожную частку працы.
Прыходзіць запіт, планавальнік выбірае, што трэба знайсці, ашукачы ідуць яго шукаць, інодзе з разных джэрографій адночасна, а пераканальнік пераглядае знайдзеныя на правільнасць.
Question comes in
-> Planner decides what needs to be looked up
-> Searchers go look, sometimes from different sources at the same time
-> Checker reviews what came back for accuracy
-> Writer puts together the final answer
Кожны часткі завадзе прымае пашчотную увагу, замест таго каб адна сістэма разварвала ўсё, а паралельныя пошукі эканаюць час. З іншай боку, большая колькасць саўместна працюючых сістэм падымае косць за адна запытанне, а калі фінальная адпаведзь бывае некорэктная, трэба дасіць многа зусілляў, каб адступіць назад праз калькі крокаў.
7. Адзыскванне на адваге памяці
У такім дзяленні сістэма шукае не толькі фіксаваны набор дакументаў, але і свою сабе історыю са корыстнікам, спрацоўваючы пакананыя размовы як што-то, да чаго можна адвярнуцца, а не як што-то, што трэба забыць пасля ўжо завершэння. Уявіце сабе лекара, які чытае вашу картку перад кожным візітам, у працоўнасці з тым, хто за кожны раз прасіць вас пераказаць усю вашу медычную історыю. Большая частка таго, што вы сказалі пасляпэўнага візіту, яшчэ застаецца ў якім-небудзь папку, і хораша сістэма таксама трывае важлівыя матэрыялы пад рукою і адзысквае іх, калі гэта неабходна.
Ён дазваляе сістэме прыгадваць тое, што было згадана кількі сяброў чы ў тыдні раней, не трэбаючы завучваць усё адразу, і ён падае помочы ў будзь-якіх персональных чы постаўляючыхся задачах, не толькі для пошуку дакументаў. Недзеянняя — гэта дадатковая сістэма памяці, якая дапамагае у пошуку дакументаў, а значыць больш элементаў, якія трэба кераваць, а таксама тое, што старэйшыя даныя іноды компрэсуюцца чы ствараюцца ў сумарны варыянт, каб заўсёды было месца, таму дэталі можа згубіцца.
Выбор
Naive RAG неяўна паспялвае. Ён ніколі не зупіняецца чы не стварае памялкі. Корыстувачы проста атрымоўваюць адпаведзі, пабудованыя на некорэктных даных, і усё выглядае нормальна, пакуль хтось не перагледзіць.
Кожная з вышэўказаных архітэктураў існуе таму, што хтось прычыніўся неправім адпаведзеннем да аднай конкрэтнай, можна выправіць прычыны. Таму найновейшы варыянт не ўсега ёсць тым, які трэба выбраць. Выберыце той варыянт, які пасходзіць да спосабу, якім выконваецца пошук. Паглядзіце на чынны працэс і чыста запытайце ся: калі ён дае неправі адпаведзенне, чы пашук знайшоў неправы элемент, чы частка пакінула свой кантэкст, чы сістэма ніколі не пераглядала інфармацыю зноў? Лячна гэтае запытанне вядомае паказвае, якая архітэктура будзе патрэбная далей.