Галоўная / Артыкулы

Чаму адказы RAG выглядаюць цэлымі, калі пошук у Azure DevOps паказвае, што яны такімі не ўсё?

Закрыцья прасоў у цэласці сістэмы Azure DevOps RAG, апарацыйнаея на графах: дэтэрміністычныя перакрыцця тагоў, праходжэнне па графе, ліміты кантэксту і інструменты запытання толькі для чытання.

Выдавец: REACTAPP.TOP6 хв чытання1479 слоў

Крыніцы: **Why Your RAG System Is Lying to You About Being Complete**

Сістэма, якая завантажае історыю Azure DevOps у базу дадзеных у фармаце графа, можа адказваць на запытанні пра праекты, ўладу над імі і завершаную работу, выклікаючы чытальны тэкст і можлівасць клікаць па цытатах. Некалькі часоў гэта здавалася дастатнім — пакуль адказы не сталаць пераглядаць за простай базой: чыстым запытам у Azure DevOps. Разлік межаў між апрацаваным адказам і выключным спісам — гэта тое месца, дзе „полны“ адлік тыхняўно не выходзіць. Ён задавалася патрэбай дэтэрміністычных крокаў, стандартызаваных тэстаў і некалькіх практыкаў, якія самыя стваралі новыя проблэмы.

Запытанне, якое адкрыло гэты разлік

У першыя часы запітоў былі атрыманы чыстыя, падкрэпленыя джэрагамі адказы без значных варыяцый. Шырэй запіт — «Якія працы з AI адбываюцца ў гэтай організацыі?» — таксама выглядаў нормальна: колькае параграфаў, калькі цытатаў, нічога явна некорэктнага. Той жа запіт, паданы праз az boards query — простаю пошуковую функцыю без інтэлігентнага ранжавання — аддаў дзесяткі рэзультатаў, якіх не было ў адкусаным адказе. Кластэры, прызначанныя для ацэнкі дапаможных програмістаў, паравання вартасцей модэляў чы выкарыстання спецыяльных інструментаў для адлучэння бягаў, не з’явіліся, таму што ў іх была мала спадзячаснасць з запітам, і яны ніколі не патраплялі ў верхнюю частку ранжавання семантычнага пошуку.

Такі спосаб абвалення лёгка працягнуць: адказ з высокім ранжаванням не ёсць тым самым, што і цэлісны адказ, а сістэма не дае жадных сігналаў, якія б паведамілі вас, каторы з іх вы атрымалі.

Запіт, які толькі часам дапамагаў

Першым падзецем было прабава паказаць модэлю, каб той быў абераглівейшы — па шырокіх запытаннях, перад адпаведзеннем пераглядаць тэгі катэгарыяў, а не пакладацца толькі на пошук. Гэта часам дапамагала. Аднак аднойчы тое ж сама формулаванне прыводзіла да разныя дзеяння ў разных запусках: іноды модэль пераглядаў тэгі, а іноды іх праігнараваў. У запытанні нічога не змянілася — толькі тое, чыі быў выкананы паказанне ў тым конкрэтным разе.

Паказанне для мовнага модэля — гэта проста падказка, а не гарантыя. Калі важна ўсестороннасць, яе нельзя пакладаць на тое, што модэль у кожны момент сама будзе адлічваць, чы хочаць дакладна працаваць.

Стварэнне дэтэрміністычнага шляху

Наступныя змены паставілі канець запыткам. Код завжды пераглядае тэгі па кожным шырокаму запытку, незалежна ад таго, чы робат сачувае, што гэта неабходна. Лячынай гэтага кластэр абсалютных правдзів перайшыў з працоўна паловыя аднадзесят элементаў да працоўна сямі з шанзесят чатырох — гэта лепей, але яшчэ не завершана. Дальнейшыя крокі выйшлі з конкрэтных прасоў, знайдзеных пад час тэставання, а не з спекуляцый:

Адным з крокаў ёсць перагляд рэзультатаў пошуку па тэгамі на прэдмет павтараючыся імен і фраз, якія з’являюцца два чы тры разы, пасля чаго гэтыя імены шукаюцца безпосерэдна — такім чынам назва продукту стае відным, нават калі ніхто яго не запытаў працоўна, як толькі маленькі кластэр, які яго мае, ужо ўвімкнуты.

Этап, які вырахоўвае адносы межа графамі, а не толькі слоўнае выражэнне, таму што элементы, якія ўзаўме належаць да однай групы, можу мясцавіцца пад аднім керуючым элементам, не маючы ніякіх спакойных заголовкаў. Элемент з заглавлём, падобным да заглавка прыкладнага рэпазітарыя для тэставаў з практычнымі задачамі на програмаванне, можа не мятчыць нічога пра ШЫ у своём тэксце і вырахоўвацца толькі праз іерархію.

Этап для рэпазітарыяў, якія не маюць тых сабе падобных катагорыяў, якія ўжо існуюць у элементах працы, і якія інакш засталіся бы невіднымі для шляхоў, базаваных на тагах.

Этап для людзей, пасля таго, як запытанні на кшталт «Як часта два саавтары працавалі разам?» давалі абяцкія некарэктныя адпаведзі.

Кожны з этапаў закрыў адпаведную прасоўку. У канцэ наіскладнейшы случай з шысьцюма элементамі быў вырашаны цэлком — не часткова, а ўсё.

Больш выкарыстоўванага кантэксту падгатавіў гorsыя адпаведзі

У протыяворнасці, калі якасць выкарыстоўвання інформацыі паднялася настаткі, што колькасць элементаў у базе модэлі зросла з кальколька сотак да паўтарох тысяч, адпаведныя адказы сталі корачэй і менш повнамасштабныя. Модэль не зламалася; яна проста пісала менш, нават калі ў ее распаняжэнні была большая колькасць правдападобных дакументаў. Перасічыўшы певны порог колькасці, якасць адказаў не зростае ў прычыну большага кантэксту — наадварот, яна паслабляецца. Паракметры выкарыстоўвання інформацыі падняліся, тады як паракметры готовых адказоў знізіліся ў тым жа тэсце. Рашэнням не было «дадаць больш», а выявленне максімальнага ліміту і яго дазволенне.

Рашэння проблемы працяйнасці, якое спрычыніла занадто дакладная адпаведзь на вузкія запытанні

Калі модэль стварала аптаты замест таго, каб назваць рэальны матэрыял, новы раздзіл з адказамі паказваў элементы, якія былі знайдзены, але не названы, таму нічога не знікало безследна. Першая версія давала болейш чым тысячу слаба супакоўзаных элементаў у адказах на спецыфічныя запітанні, адтак што генератор спіса не мог зрабіць разліку межу точных падпарадоў і звычайнага шуму. Шырока катэгорыя збірала ўсё, што было хоць часткова супакоўзана, і спрыяла ўваходжэнню гэтага матэрыялу на першы план.

Стойкі раўнавага быў не толькі чысловы ліміт. Гэта было раздзеленне двух відаў „знайдзеных, але не названых“: маленькага комплекту точных падпарадоў, якія завжды павінны быць паказаны, і вялікага кола слаба тагаваног шуму, якім патрэбны чысты ліміт плюс прыемлівая адзначка пра тое, што існуе ўсё больш такога матэрыялу. Гэта раззьяўленне мела большое значэнне, чым сам ліміт.

Надаўчы модэлі інструменты — з заходамі

Корыстныя запітанні зумоўлі да працы над рэшэнням іншых праблем: чаму чалавек можа адпаведзець на запітанні, якіх не можа адпаведзець сістэма, калі якія ўбачаюць тыя ж даныя? Чалавекі можуць напісаць новы запіт, калі стандартныя інструменты не падходзяць, і яны перакантролююць адпаведзі, якія здаюцца сумневнымі. Мадэль не мела ніякіх такіх можлівасцей. Яна отрымала інструмент для стварэння савой запіта да базы дадзеных з правамі толькі на чытанне — працаваў яны пад контролем базы дадзеных, меў часовыя обмежэння і ліміт па розмаху рэзультатаў.

Патрэбныя былі ўсьмо тыпы. Калі мадэллю было запітана, як часта саўместна працавалі два адзначаныя імены, яна спачатку выйшла з гадкі, што у іх адна працоўная фамілія, але не знайшла нічога, і тады запэўнялася на адной з несувязаных каментараў, узамініўшы гэта на перапытку ў зв’язку з пустым рэзультатам. Правілам стала такая практыка: спачатку перакантролюваць кожнае імя на яго точны запіс, а пусты самапыт спрацавляць як доказ таго, што запіт некарэктны, а не таго, што колькасць такіх прыкладаў доравнае нулю.

У наступной спробе быў рашыты прыблэмы обох адміністрацый, быў выканан правы запіт, атрымана 25 спільных элементаў — пры тым часу цяжка было паказаць гэтыя цыфры, калі ўсе фактычныя тверджэння выклікалі патрэбу ў ідэнтыфікаторэ цытаты, а вырахаваная колькасць такога ідэнтыфікатора не мела. Следуячы букве правіла цытатаў, справядліва адпаведзь была адхоўнутая. Патрэбна была явная аднаковасць: вырахаваную колькасць можна было проста паказаць без ідэнтыфікатора адказу.

Ніякая з гэтых невыконанасцей не была парадоксам; обе являліся правым выпаленнем інструкцый, якія не пакрывалі гэтую сітуацыю. Гэта разлік мае большое значэнне, чым можа здавацца на першы погляд.

Як тэставанне заставалася чыстым

Абсалютная правда не была простым перакантовкам настроення. Для самага складнага кластэра спачатку было перыявлена шанцзнац вядомых элементаў з аб’ёмнага запытку, а пасля кожных зменэў у рэзультатах адбывалася ўцёнка: сколькі з іх было прынятыя ў фінальны адпаведзь, сколькі было цытавана, сколькі было тыхо адмовлена. Самэ гэта показнік даў значэнне фразам «семь з шанцзнац» і пазней «шанцзнац з шанцзнац». Без зовнішняга, аб’ёмнага спіску фраза «выглядае завершаным» ёсць толькі эстэтычным пытаннем.

Аранжаванне працэсу без перазлівання модэлю

Дэтэрміністычныя крокі все ж такі трэбуюць паводловасці. Спачатку розгортанне тагоў расшырвае сябро кандыдатаў; пасля таго аналіз імен прыглубляе яго; праходжэнне па графе дадае структурных суседзяў; крокі, звязаныя з рэпазітарыем і людзьмі, заполняюць прасоўкі ў спосабах адпаведзення. Лячына, толькі пасля таго, калі створэны такі скарбнік, встановлівае верхнюя межу за размерам, якая обмежвае тое, што прайшоў у запіт. Адворачэнне гэтай паводловасці — калі просім модэль быць рэтэльным да таго, калі скарбнік ўжо створыўся — вяртае нас да проблемы недастатку дакладнасці. Работа над цэлыснасцю — гэта праектаванне практычнага каналу апрацоўкі, а не вжытак лепшых аднарадков у запітаў для модэля.

Цітаты проты вырахаваных фактов

Правіла апеляцыі да кожнай твэрджэбе захоўваюць ад вымыслу, калі мадэль цытуе элементы працы. Яны стаюць шкадлівымі, калі мадэль выкарыстоўвае арыфметычныя расчыткі чыста на базе рэзультатаў інструментаў. Раздзелэнне «цітаванай твэрджэбы» і «рачунаванага сумару» у інструкціях вярнуло лік 25 саўместных праектаў, не паслабляючы дысцыпліны ў апеляцыях да наратывных твэрджэбаў. Сістэмы RAG, якія выкарыстоўваюць інструменты, патрабуюць абоўвах правілаў, якія павінны быць часткам ясна зазначаных інструкцый.

Стан працы

Чысты запіт да базы дадзенаў ў сваій структуры ёсць вялікі: немагчыма працэсаваць радкі, якія не падходзяць. Ён таксама не можа поясніць, групаваць чы нарабляць сэнс — ён вяртае толькі спіс, а не адпаведны адказ. Сістэма цяпер паўтарае гэты прынцып целесообразнасі запіта ў складных кейсах, якія былі знайдзены і працэсаваны, адночасна пояснюючы рэзультаты прозай з пераверымымі джэрамі. Гэты рэзультат мерыцца, а не прыймаецца як аксіум.

Гэта не задача, якая была рашаная. Кожны з вышэўказанных спосабаў рашэння існуе таму, што падчас пераканальвання адпаведзяў з усіма можлівымі данымі з’яўлялася конкрэтная працоўнасць. Такі метод выявляе прасочыні; ён не дазволяе ствердзіць, што іх больш няма. Пасля вышэўказанных змян з’явілася новая разлік тыпу: калі трэба было падтрымаць тверджэнне пра аднаго чалавека, была выкарыстоўвана цітата з іншага джэрэлы, якое нічога пра таго чалавека не пісала — гэта было выявлена, але на момент напісання ўжо не было рашана. Такі патэрн продаважваецца: пераканальваюць тое, што выглядае як ўсё, і з’яўляецца што-нова.

Чыстая адказка — не «Прынцыпова цэласнасць RAG рашаная». Гэта тое, што кожны конкрэтны прыем, які можна было знайсці і перапрацаваць, быў закрыты, з паказаннем цыфр да і пасля. Не можна обяцваць, што больш няма прыемаў, і жадная такая сістэма не должна даўаць такога адчування. Фраза «Мадэль зазвычай правільна» не ўтварае аднойчыну для надзяйнасці — самэ ўжо «зазвычай» являе сабой тое, што не працуе ў ключовым пытанні.