Улучшэнне адказоў RAG: адна меравальная змянена за раз
Працэўны прыем па шляху «меры спачатку» для выправлення слабых адпаведзяў RAG: настраівайце чанкавае раздзелэнне, параметр top_k, перыяранкаванне, гібрыдны пошук і перапісва запыткаў па аднаму і стежыце за метрыкамі выкарыстоўвання дадзеных.
Першы практычны працэспрыёт RAG лёгкая да стварэння: запускаецца завантажэнне дакументаў, яны вбудовваюцца, вектары зберагаюцца, выкарыстоўваюцца канкрэтныя фрагменты, якія пасылаюцца да модэлю LLM. Процес працюе, але адпаведзенні часта бываюць некоректнымі, нават калі дакумент чыста містіць правильную інфармацыю. У большасці такіх случаў прычына не ў самам модэле; наэтапе выкарыстоўвання інфармацыі з дакументаў яму ніколі не даюцца правильныя контэксты. У гэтым кансалтатыве рассказваецца пра факторы, якія зазвычай маюць наўсё большое значэнне, і, што ўжо важлівей, пра методы, якія дапамагаюць пераканацца, каторы з іх насправдзе падтрымлівае вашу систему.
Спачатку спрыяйце рашэнню проблем з выкарыстоўванням інфармацыі
Перш чым зменяць запиты або модэлі, пераканайцеся, калі саме інфармацыя была выкарыстоўана для адпаведзення на некоректны запит. Якщо значыцьвены фрагмент не ўключаны ў контэкст, жадныя налаштаванні запитаў не дапаможуць паспрабаваць выправіць адпаведзенне.
Дзеліце тэкст на фрагменты па значыцьвенных межах
Размах фрагмента мае дзівочаюча вялікі наследкі для якосцы выкарыстоўвання інфармацыі. Фрагменты, якія занадта вялікія, аб’еднуюць калькольныя тэмы, таму ўсаджэнні такіх фрагментаў становяцца нечыстымі, і яны прыключаюць неканэкскурентны текст. Фрагменты, якія занадта маленькія, адсекаюць рэчы з контэксту, які надае ім значэння. У замяне слепаг раздзелення кожных 500 симвалоў, трэба залічыць сяброўскія параграфы або цэлыя часткі разам, а таксама выкарыстоўваць загаловкі і перерывы між параграфамі як прыродныя точкі раздзелення.
Настроюйте параметр top_k замест таго, каб лячыць яго
Большынства пайплайнаў выбірае пяць наіболей сэмабліяных фрагментаў проста таму, што пяць — это стандартная значэнне. Аднак правы тэкст можа знаходзіцца на шасцым або сьпятым месцы. Збільшэнне значэння top_k можа паспрабаваць падняць рэкалі, але кожны дапаможні фрагмент таксама дадае шуму і токэнаў у запит. Спрыяйце top_k як параметру, які трэба теставаць па вашым сабе запитам, а не як сталягу значэнне, якое трэба копіраваць. Шчылённі рэлевантнасці — гэта ўзгалджаная апцыя, пра якую пішацца ў стацыі «Ад top-k да шчылёнаў рэлевантнасці, гібрыднага пошуку і переранкавання».
Дадаць стадію переранкавання
Пошук на адрэсах вектараў ёсць быстры, але грубы: ён добра справляецца з нараджэнням правдападобных кандыдаатаў, але гэрш справляецца з выбірам таго, які ў дзеянні є найкращы. Модель переранжавання адбываецца ў два этапы. Спачатку пошук на адрэсах вектараў вяртае шырокі набор, можа, дзесяць частак. Потым модель переранжавання, зазвычай крос-энкодар, який чытае запит і кожную частку разам, оцінюе ўсе і залишае тры-чатыры найкращыя. Модель отрымае чыстэйшы контекст, але за цю цену падвайваецца затрымка і вартасць за запыт.
Спалучэнне семантычнага і ключавым-словамі пошуку
Эмбедынгі добра фіксуюць значэнне, але іноды точныя токены маюць большое значэнне, чым сама семантыка. Запыт на кшталт ERROR_CODE_4291 мае мала семантычнага кантэнту, таму пошук на сяродзеці можа працягнуць не той дакумент, які яго паводзі. Ранжаванне на ключавыя словы, такое як BM25, добра справляецца з такімі случаям. Таму багатыя системы выконваюць як пошук на адрэсах вектараў, так і пошук на ключавыя словы, а потым з’еднаюць рэзультаты — такой падход вядомы як гібрыдны пошук.
Скорачыце прыемак у слоўніку ў запитах
Пользоватары рэдка формулююць запиты так, як напісаны дакументы. Каму-небудзь можа здавацца, што платеж не прыманоўліваецца, тады як на адпаведной сторанцы говорыца пра непрыманоўліванне карткі. Перапісва запитаў, MultiQuery (стварэнне кальколя разных формулюванняў і пошук для кожнага з яных) і HyDE (стварэнне гіпотэтычнай адпаведзі і пошук за ўжоўвешчаннем) могу ўсе гэта скорачыць. Аднак яны дадаюць колькісці LLM-званакоў і збільшуюць складнасць, таму варта апыляцца на іх толькі пасля выкарыстоўвання простыях способаў, упомянутых вышэй.
Аналізуйце кожную змяну за адносам да базовага стану
Найважнейшыяй прычынкай є адмова ад выкладанняя гіпотэз. Фраза «Мы дадалі переранкінг, таму пошук стаў кращы» є гіпотэзай, пакуль яе не будзе пераканацца. Створыце невялікі набор рэальных запитоў з вядомымі адпаведнымі фрагментамі, а потым стежыце за такімі показнікамі, як:
- Recall@K: чы роўнасці інфармацыя павінна быць сярод першых K адзысканых фрагментаў.
Спачатку зазначыце базовы показнік. У ілюстратывам прымэре ён можа выглядаць так:
Baseline Recall@5: 68%
Потым аплікавайце адну змену за раз, парадзейце тыя ж пытанні і зазначайце кожны рэзультат. Перадача павышэнняў можа выглядаць так:
Better chunking: 74%
Hybrid search: 82%
Reranking: 89%
Гэтыя цыфры — толькі прымэр, а не кантрольны показнік; вашы сабскладные даны будуць дзейваць інакш. Галоўнае — лог з кожной зменай пакажае, які крок прынёс свою складнасць, а які — няў. Для болей дакладнага аналізу выканання, адносна неудач, адзірніце оцэнку RAG па стадіям неудач.
Заключэнне
Пачніце з самай простой ланцоўкі: ад запыту да выкарыстоўвання дадзеных, да стварэння контексту і да працы з LLM, і пасляэтапна удосконалівайце кожны етап: зробіце змяну, вы мерыце яе, аналізаваеце час адпаведы і вартась, і павтараеце. Скромная система RAG, яю можна зразумець і вы мерыць, зазвычай ценяйцца больш, чым сложная система, наполненая тэхнікамі, якія ніхто не можа обґрунтаваць цифрамі.