Галоўная / Артыкулы / Скасоўванне галюцынацый у праграме чат-бота RAG для медычных цэлей

Скасоўванне галюцынацый у праграме чат-бота RAG для медычных цэлей

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

1960 слоў

Проект пачаткаў з простай меты.

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

Гэта ж должна быць дастаткова проста, чы не так?

Аднак такім не стала.

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

Це працавало.

Толькі не надзеянна стабільна.

А ў медычным контэксте „надзеянна стабільна“ — глыбока прычына проблем.

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

Гэта усвядомленне прывела процес выкарыстоўвання інфармацыі да стадіі постаўлення ў спецыяльную фазу сталога удосконалення.

Першая проблема: галюцынаціі

Найбольшая проблема, якую трэба было рашыць, — галюцінацыі.

Моделі мовы адзінакова вправныя у стварэнні адказоў, якія здаюцца пераканаючымі, інодзе нават занадта пераканаючымі.

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

Этая поведэнчная модель трэба было зменіць.

Адказы чат-бота павінны былі выходзіць абоўсумна з паданых матэрыялаў доследжэння, а не з выдумкі самай моделі.

Так сябралася новая філасофія.

Узамест таго, каб спрыймать LLM як автарытет у пытаннях фактов, адпраўленыя дасобы сталі практычным источнікам правды.

Роль LLM была скасавана да тлумачэння гэтага контексту і прыдаткі ў ягообразны адказ.

А калі контекст быў недастатковы?

Система павінна была адмовіцца ад здагадкі.

Пачатак з базавага RAG

Першая версія гіпертэксту выглядала проста:

Это ўоспроіцьвае стандартную схему RAG.

Вялікі дакумент раздзеляецца на меньшыя часткі, кожная з яых вбудовываецца і храніцца ў базе дадзеных вектароў.

Калі корыстнік задае запит, гэты запит таксама вбудовываецца.

Пасля чаго система шукае часткі, якіх вектарныя представы є сэмантычна близкімі.

У тэорыя — проста.

Але быстра адзначылася паводліва.

Сэмантычная близкасць не гарантуе рэальнай актуальнасці.

Чаму вектарны пошук быў недастатковы

Уявіце корыстніка, які запытаецца:

"Калія наследкі рэзыстэнціі да інсуліна?"

Сэмантычны пошук добра справляецца з розумеенням загальнага намеру за гэтым запытам.

Это корыстна.

Аднак медычныя тэксты наполнены точнымі тэрмінамі.

Такімі тэрмінамі, як:

  • рэзістанцыя да інсуліна
  • HbA1c
  • гіперглікемія
  • метформін
  • талерантнасць да глюказы

Этыя конкрэтныя словы маюць важлівое значэнне.

Інодзе вам патрэбна розумеўка загальнага значэння.

Іншыя разы вам патрэбна можлівасць аднаваць сам тачны тэрмін.

Чаму задаваліся толькі адной можлівасцю?

Рашэннем была ўзаеднанне абох.

Гібрыдны пошук

Сюды самэў гібрыдны пошук стаў ключовай часткой дизайна.

У замяне на адны ўзьязд на пошук на адной базе вектараў, быў суставлены семантычны пошук з пошукам на ключовыя словы.

Логіка, якая стоіць за гэтым, дасыльна.

Семантычны пошук па суті запытае:

"Какі контэнт мае падобнае значэнне?"

Пошук на ключовыя словы замест таго запытае:

«Дзе насправды з’являюцца ключовыя тэрміны?»

Кожны метод мае своія перавагі.

І кожны мае своі слабыя месцы.

У сукупнасці яны пакрываюць шырэй спектар запитоў.

Расплет карточкі выглядаў так:

User Query
                        ↓
              ┌─────────┴─────────┐
              ↓                   ↓
        Vector Search       Keyword Search
              ↓                   ↓
              └─────────┬─────────┘
                        ↓
                  Combined Results
                        ↓
                     Reranker
                        ↓
                 Best Context
                        ↓
                       LLM
                        ↓
                      Answer

Гэта змена паўтарылася ў падходзе да адналёгчэння запытанняў у будучыні.

Але застаўся ўсё той жа проблема.

Адналёгчэнне чаго-небудзь не значыць, што гэта лепшая апцыя

Падазроўваю, што крок гібрыднага пошуку вяртае 20 частак.

Гэта звучыць абяцальна.

Але чыі з тых частак справды ўжытковы?

Не обав’язкова.

Дзеяныя часткі можаць быць адносна актуальныя да тэмы.

Іншыя можаць проста мець супародную лексіку.

Іншыя ж можаць быць толькі касаткова супакоўаныя, не адпаведаючы на фактычнае запытанне.

Перадача ўсьго гэтага безпосередна да LLM — не ідеальны спосаб рашэння.

Большае количество адаптаванага контэксту не прыводзіць апошней да лепшых адказаў.

На самай працэ, гэта можа паспрабаваць зашкодзіць рэзультату.

Гэта дадае больш скарынакоў, больш нерэлевантных фактов і больша затрымка.

Таму была аднаўлена ўсё новая стадія.

Пераранжаванне.

Чаму пераранжаванне змяніла ситуацыю

Ролю апрангальніка можна падсумаваць так:

Аднаходзіць можлівыя кандыдаты.

Роль пераранжавальніка іншая:

Выбірае, калкі з гэтых кандыдатаў ёсць практычна рэлевантныя.

Таму замест простага ланца:

Query → Search → LLM

процес ператворыўся на:

Query
 ↓
Hybrid Search
 ↓
20 Candidate Chunks
 ↓
Reranker
 ↓
Top Relevant Chunks
 ↓
LLM

Гэта раздзеленне абавясцей мае значэнне.

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

Стадія пераранжавання можа тады сфокусавацца конкрэтна на рэлевантнасці і тачнасці.

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

Найважлівейшы элемент: адмова ад фальсіфікацыі

Пашчараваючыся ад простага выкарыстоўвання і переранкавання дакументаў, на стадію генеравання былі даданы строгія правіла.

Основныя інструкцыі сводзіліся да гэтага:

Use the provided context to answer.
Do not invent information.If the context doesn't contain enough information,
say that there isn't enough information available.

Гэта выглядае майже занадто проста, каб матыць значэнне.

Проты яно значным чынам перакраяе спосаб дзейства чат-бота.

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

Гэты спосаб выйсцу выявіўся неабходным.

Інодзе чыстасцовая адпаведзь выглядае так:

„У мяне не было достатнюю інформацыю ў паданым даследавальным матэрыяле.“

Не кожныя запытанні заслуговуюць на абсалютная вядома адпаведна адказ.

Ці халюцынацыі ўсё ж таки павнамасштабна усунутыя?

Не зовсім.

Гэта стала яснаю падчас стварэння системы.

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

Але стверджваць, што халюцынацый няма ўжо зовсім, — значы перэценіваць ситуацыю.

Існуе ўжо багато можлівых прычын неудач.

Механізм пошуку можа выбраць некоректны фрагмент.

Сам процес разбівання на фрагменты можа пазбавіць важлівага контексту.

Механізм ранжыравання можа неправильна оценіць значэнне элементаў.

У самых даследных дакументах можа зусім не быць неабходной інфармацыі.

І нават калі всё вышэй у ланцоўке працюе правільна, LLM все равно можа неправильна расценіць тое, што ён знайшоў.

Таму асалодныя цялі не ў тым:

"Стварыць чат-бота, які ніколі не будзе памыляцца."

Цялі ближэй да:

«Створыце систему, у якой меньша колькасць можлівасцей для памылак, і такую, яка розумее меры таго, што ўжо знае».

Эта значна лёгкавейшая для досягнення мета.

Дыяграматызацыя выклікалася критычнаю

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

Часткі, якія занадта великія, прыносяць некаляжны контэнт.

Часткі, якія занадта маленькія, можуць пазбавіць статэмку неабходнага контексту.

Корыстна спрыяець кожнай часткі як самастоямой ейкавацыі знанняў, а не як будзь-яму фрагменту тексту.

Якслі часткі добра спроектаваны, гэта адразу прыводзіць да кращага выкарыстоўвання інформацыі.

А кращая выкарыстоўвання інформацыі зазвычай дае лепшыя канечныя адпаведзі.

Акцэлераванне процесу

Правільнасць была толькі паловай часткай вызвання; іншая — гэта час адпаведзі.

Адзін запит RAG можа запускаць калькольнае разныя операцыі:

User Query
   ↓
Embedding
   ↓
Vector Search
   ↓
Keyword Search
   ↓
Merge Results
   ↓
Reranking
   ↓
LLM

Выкананне ўсіх іх строго адна за другой спамячвае ўсё.

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

Пераскладзены лямоўкі выглядаў прыблізна так:

User Query
                     ↓
              ┌──────┴──────┐
              ↓             ↓
        Vector Search   Keyword Search
              ↓             ↓
              └──────┬──────┘
                     ↓
                  Rerank
                     ↓
                    LLM

Гэта зменшыла час чакання між крокамі, якія на самай працы не залежалі адзін ад другога.

Толькі тачнасць не ёсць усём для хорашага системы RAG.

Карыстувальнікі не хочуць сядзець і чакаць на адказ.

Рэзультатныя архітектуры

Пасля калькольнае раундаў доўрабачання, лямоўкі стала выглядаць прыблізна так:

Medical Research Documents
                         ↓
                  Document Processing
                         ↓
                      Chunking
                         ↓
                     Embeddings
                         ↓
                   Vector Database
                         ↓
                      User Query
                         ↓
              ┌──────────┴──────────┐
              ↓                     ↓
       Semantic Search        Keyword Search
              ↓                     ↓
              └──────────┬──────────┘
                         ↓
                    Result Fusion
                         ↓
                      Reranker
                         ↓
                Relevant Context
                         ↓
                 Grounded Prompt
                         ↓
                       LLM
                         ↓
                 Final Response

Кожны компанент у тым дыяграме мае свойю адзінаковую адпаведнасць.

Гэта разделенне стала аднай з найценнейшых наўканаў з проекту.

База дадзеных вектароў не прызначаная для адпаведзення на запытанні.

Апарат для выкарыстоўвання вектараў не прызначаный для стварэння адпаведзей.

Модель большых мовных модэляў не прызначаная для таго, каб за замовчэнням ведала все.

Кожны элемент адпавядае за адну задачу.

І, ідеальна, ён добра выкананыя гэтую задачу.

Урокі з стварэння

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

Якасць выкарыстоўвання дадзеных ёсць непараднае

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

Гібрыдны пошук падтверджвае свою корыстнасць

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

Переранжаванне заслуговае на большую адзначку

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

Большыя контекстныя фрагменты не гарантуюць лепшых адпаведзенняў

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

Адзначэнне неяснасці — гэта сіла, а не слабасць

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

Куда працюваць далей

Існуе ўсё што трэба для паліпшэння. Сферы, якія варта дакладней расследаваць, зключаюць:

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

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

Заключэнне

Тое, што спачатку было простым чат-ботам на адной базе дадзенаў, ператворылася на глэбокій урок пра тое, як на самай адзінакоўцы працуюць системы. Дыялогі пра застосункі AI часта сфокусаваны на мовных моделях, але ў конфігурацыі RAG значную частку роботы пасля кадроў виконвае сам практык працы з адзінакоўкай.

Мінімальная структура можа выглядэць так: дакументы прайходзяць у векторную базу дадзеных, а звідты — у LLM. Болей надзеяна версія выглядае так: дакументы спачатку падаюць на этап фрагментавання, потым — на гібрыдны пошук, пасля — на переранкінг, і толькі пасля гэтаго стаюць базаваным контекстам прыбываючы да LLM. І нават у гэтым процесе ёсць простор для развітку.

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

Прыметка: гэты проект прызначаны толькі для тэхнічных даследжэнняў і эксперыментаў. Ён не ёсць заменай прафесійных медычных прадактов, дыягнозаў чы лечэння.

Спадзяючыся літаратура