Што такое RAG: як запобiec там, каб чатботы стваралі некальканыя факты пра компанію
Практычныя вядомасці пра праграмнай схеме RAG — чытальнікі дадзей, разбіўка на часткі, эмбеддынгі, храненне вектараў, практыка перыяранавання, гібрыдны пошук і RRF — а таксама калі вообшча не трэба выкарыстоўваць функцыю пошуку.
Крыніцы: RAG Explained: How I Learned Not to Let My Chatbot Make Up Stuff
Звычныя задачы для чат-ботаў на пачатковым этапе выглядаюць так: адпаведзаць на запытанні з корпаратыўных дасяглінаў. Швыдкі пратэтап часта здаецца вывераным — але стварае неправдзівыя факты. Ён можа стверджваць «падтрымка 24/7 у 12 краінах», калі на самай працэ ёсьць падтрымка толькі в аднай краўні, толькі па рабочы час і толькі калі ёсць адпаведны спецыяліст па IT.
Самэ гэтае недастаткі ёсьць сэрцая метаю RAG (Retrieval-Augmented Generation): мадэль, якая можа даць адпаведзенне, не тая ж самая, як мадэль, якая мае рэальныя даны організацыі. Без асновы ў фарматах з вялікай колькасцю слоў яны паводзяцца як упэўненыя роднікі, якія на свадзьбе выдумваюць історыю сям’і — працоўна ў 40 процэтаў правільна, але на 100 процэтаў упэўнена.
Частка 1: Што такое RAG на самай працэ?
RAG значыць Retrieval-Augmented Generation. Ідэя простая.
У заместо таго, каб прабавіцца заставіць мадэль адпавядаць толькі на базе памяці, выучанай час трэнавання, сістэма спачатку запрашоўвае актуальны матэрыял, а пасля — адпаведзь, якая мусіць быць створаная на аснове гэтага матэрыялу.
Спрэчываюцца з мадэллю тэксту як з агрэсіўным, занадта самавярлівым стажэрам: выдатным у пісьменнай працы, але слабым у запамятовванні правіл кадровай політыкі 2023 года. Заведаменне RAG — гэта тое, што дае стажэру правыя дакументы до таго, як ён пачне адпавядаць.
Без RAG: адпаведзі паслужаюцца памяцю (старой, універсальной або неактуальной для конкрэтнай компаніі). З RAG: адпаведзі паслужаюцца памяцю плюс дакументы, запрашоўваныя для адпаведзі на гэты запіт.
Короткая формула, якая застаецца актуальной:
Правыя меркаванні × Правы кантэкст × Правы запіт = Правая адпаведзь
Частка 2: Працэс RAG
Пашырэнне памяці за дапамою запрашоўвання дакументаў — гэта не адна магічная дзеянне. Гэта багатоэтапны працэс: калі хоць адна з стадзій не выйдзе, адпаведзі будуць запазджаць або быць некорэктнымі.
Стоп-пункт 1 — Джэрэлы знання
Дзе знаходзіцца матэрыял? PDF-файлы, файлы Word, сторанкі Notion, табелі SQL, экспорты з Slack і забутыя электронныя табліцы — усе гэта ўваходзіць у кантэкст джэрэл знання.
Стоп-пункт 2 — Завантажувачы дакументаў (прыем даных)
Працэс прыема ператварае PDF/HTML/CSV і т. п. у чыстую, аднородную форму — часта ў такі выгляд:
Document(
page_content="The quick brown fox...",
metadata={"source": "annual_report.pdf", "page": 12, "author": "Finance Team"}
)
Ігнораванне астаточнага завантажэння і проста вставкі неапдоробленых байтов PDF у поток часта прыводзіць да таго, што загалавкі і падзагаловкі стаюць «фактамі» («За данымі сторанкі 47 з 92…»). Ніхто не прасіў про дэталі сторанкі.
Урок: нечысты прыем даўае нечыстыя рэзультаты пошуку і некарэктныя адпаведзі. Неабходна чыстасць з самага пачатку.
Стоп-пункт 3 — Разбіўка на часткі
PDF з 200 сторанакамі нельга проста вставіць у запіт. Вікна кантэксту маюць пярэдзелы, і перэплыванне мадэлі цэлай кнігай прыпэксаў, калі была запраслена толькі адна рэцептура, паграждае тачнасцю.
Таму дакументы дзеляцца на сегменты.
Паўзлівыя стратэгіі:
- Раздзелэнне на фіксаваныя часткі — розрываецца кожныя N токанаў. Шырока, але выконваюцца розрывы ў серэдзіне запэўднення.
- Раздзелэнне на фіксаваныя часткі з перакрыццем — тыя ж розрывы, але з невелікім перакрыццем, каб захаваўся кантэкст межы. Частая стандартная настройка.
- Хіерархічнае/рэкурсыўнае раздзелэнне — спачатку выважваюцца раздэлы і параграфы, а потым — розрывы.
- Семантычнае раздзелэнне — аб’еднаваюцься запэўднення з адной тэмай за дапамогою імбедынгаў. Болей розумнае, але трэба больш вычыслаўных рэсурсоў.
- Раздзелэнне на адной лінгвістычнай машыне / Агентнае раздзелэнне — мадэль вядома, дзе трэба робіць розрывы. Дорога, але корысна для юрыдычных/медыцынскіх тэкстаў.
Практычная правіла пасля таго, як бачыліся, як у дакуменце з контрактам слова “shall NOT be liable” раздзеляюцца пасля “shall”: пачынайце з фіксаванага размеру частакаў з перакрыццем; дадзейце большую складнась толькі тады, калі якасць выкарыстоўвання інфармацыі справа ўжо падлегла.
Стоп-пункт 4 — Эмбеддынгі (ператварэнне слоў у GPS-коордынаты)
Эмбеддынг ператварае рэчанку ў спіс цячэнняў, які фіксуе значэнне, а не правапіс. Рэчанкі з падобным значэннем знаходзяцца рыжыя, нават якшо у іх няма жадных спаканых слоў.
Фразы «Як можна перазначыць пароль?» і «Кранты для заходу забыты» практычна не маюць спаканых элементаў, але значэнне іх майжэ адна і тая ж. Пошук па ключавым словам не бачыць гэтага зв’язку; эмбеддынг фіксуе яго па прыняццю значэння.
Історыя развіцця праходзіла ад методу «Кошачка слоў» (які лічыць толькі) → TF-IDF → Word2Vec → BERT → сучасных API для эмбеддынга і адкрытых модэляў (OpenAI, Cohere, BGE, E5 і іншыя), якія уважаюць кантэкст.
Аналагія: «Кошачка слоў» — цэна машынны пераклад слоў за слоўма. Сучасныя эмбеддынгі больш супамінаюць чалавека, які жыў у обох культурах і розумее намер.
Стоп-пункт 5 — Хранілішча вектараў (бібліятэкі, дзе зберагаюцца всі гэтыя спісы цячэнняў)
Калі сегменты стаюць вектарамі, ім патрэбна быстрая збероžка і пошук: Pinecone, Qdrant, Weaviate, Milvus, ChromaDB, FAISS і падобныя сістэмы.
Пры наявнасці запіту неабходна вярнуць топ-K сегментоў, чыія вектары знаходзяцца найбліжэй да вектара запіту. Варыянты індэксавання включаюць:
- Brute force — парабяляваць усё. Точны, але медленны праз вялікія об’ёмы дадзеных.
- ANN (Approximate Nearest Neighbor) — адносна менш точны, але значна шырэй. Стандартны выбор.
- IVF — спачатку ствараць кластэры; шукаць толькі перспектывныя з іх.
- HNSW — шырэй праходзіць па графе суседзей. Часта вікорыстоўваецца у практычных рашэннях RAG.
Іспытанне мільйонав вектараў методам Brute force «для абсалютнай точнасці» можа ператворыць запіты, якія займаюць калісэкунды, на задзейнення трываючыя час перапынкі. Выбірайце спосаб індэксавання па розмеру дадзеных, а не па гордасці.
Этап 6 — Адзысканне (Пошук падобнасці)
Калі прыходзіць запіт, яго трэба адключыць за дапамою таго ж модэля, які вікорыстоўваецца для файлаў — сумешчанне модэляў ёсць класычныяй працою, — пасля чаго запрашваюцца Топ-К сэгментаў, якія ўзаемна супадаюць.
Косінейская супадзімасць — гэта стандартны показнік: насколькі два вектары супадаюць па направленні, не адзіраючыся ад дужнасці. Гэта стабільны стандарт для розных дужнасцей тэкста.
Этап 7 — Адгэнераванне (падача правільнага файлу інтэрну)
Запрашаныя сэгменты дадаюцца ў запрошэнне разам з запітам карыстальніка. Гэта і ёсць «этап адгэнеравання»:
System: You are a helpful assistant. Only answer using the context below.
Context: [retrieved chunk 1] [retrieved chunk 2] [retrieved chunk 3]
Question: What is our refund policy?
Этап 8 — Генераванне (LLM нарэшце выказваецца)
Лячына толькі тады модэль пішае заканчоўны адказ — апаруч з запрашаным кантэкстам, а не на адчутках.
Частка 3: Тое, што розлічвае «гэта працуе» ад «гэта працуе добра»
У навучальных матэрыялах часта зупіняюцца на базовым прайску. Для якосці жывых сістэм зазвычай трэба больш.
Перыякораванне — таму што парад першых рэзультатаў пошуку не завжды ёсць найлепшыя рэзультаты
Метод бі-енкодэраў ёсць быстрым, але грубым: запіт і дакумент кодуюцца окалічна, а пасля порৱнююцца. Ён чырплівы для скарычэння мільйонава элементаў да ~50 кандыдатаў.
«Быстрая і прыблізна правільная» адпаведзь не завжды ёсць «праўдзівая», таму медленнейшы крос-енкодэр для перыякоравання оцінюе запіт і дакумент разам, фіксуючы нюансы, запароджэння і кантэкст. Ён працуе толькі з скорачаным спісакам і выдвайае справжнія найлепшыя рэзультаты.
Аналагія: бі-енкодэры працуюць над рэзюме, каб стварыць скорачаны спіс; крос-енкодэры адбываюць спрабу.
У боце з частаючымі запітаннямі ў медыцынскай сферэ без пераранжавання запіт пра взаімадзейсць з алкаголем можа выявіць іншы прыёмны прыбор, які толькі мае аднаковую лексыку. Крос-кодэр для пераранжавання часта негайна выправляе гэта. Калі важліва точнасць (у правовых, медычных чы або фінансавых кантэкстах), пераранжавання ўмовна, а не факультатыўна.
Гібрыдны пошук — таму што як лексычны, так і векторны пошук самі па сабе ў меры слепы
Векторны пошук фіксуе значэнне, але можа працягнуцься праз точныя токены — коды SKU, ідэнтыфікаторы абоеракцый, власныя імены. Лексычны пошук BM25 точна знаходзіць строкі, але не бачыць сінонімав.
Гібрыдны пошук спалюе BM25 і векторную методыку аднароўнавання: тачная пашуковая ключоўка плюс семантычнае вярнаванне. Калі няма ўпевненасці, гібрыдны варыянт — адлучны выбор: рэдкасцю гіршы, а часта лепшы.
Фюзыя RAG — аб’еднанне калькіляўванняя думак, як у груповым праекце (але гэты раз цяпер справдзіцца)
Разныя методы адзьвечання на запіты (густыя, на ключавыя словы, спецыфічныя для домэна) ствараюць калькольнікі з рангаванням. RAG Fusion спаўнае іх за дапамою Reciprocal Rank Fusion (RRF).
Ідэя простая, нават калі формула выглядае формальна: дакумент, які займае высокую пазіцыю за дапамою калькольнікаў, створаных разнымі методамі, верагатываўна ёсць рэлевантным. RRF адзначае значэнне цэласносці межы калькольнікаў, а не сухіх балоў, якія немагчыма пораўняваць между разнымі методамі адзьвечання.
RRF(d) = Σ 1 / (k + rank_i(d))
Часта значэнне k становіць 60 — гэта прыемство ў індастрыі, а не выведзена константа.
Метаданы — атрыбуты, якія пазней выважаюцься важлівымі
Метаданы — гэта даны пра даны: заглавле, авар, дата, адказчык, рэжым доступу. Яны здаюцца беззначнымі, пакуль не з’яўляецца правіло доступу — «ніколы не паказваць внутршнія документы кадровага апарату зовнішнім корыстнікам» — і тады атрыбуты access_level: internal стаюць важлівымі.
Метаданыя дазваляюць выкорыстоўваць фільтры, падвышэнне рангу, контроль доступу і адлучэння бягаў (“чаму дакумент 2019 года адпаведзеў на запыт 2026 года?” → нехватка фільтраў па даце).
Памяць і кэшаванне — таму што ніхто не хоча плаціць за адны і той жа вычысленні два разы
Две ідэі, якія часта плутаюцца:
- Памяць = давялегае запам’ятовванне прыязнасцей, пакульніх дзеянняў, стойкіх фактам.
- Кэшаванне = кароткатрывалое паўтарны выкарыстоўванне дорогіх рэзультатаў (адпаведзей мадэлі, рэзультатаў пошуку) для паўтарных запытаў.
Памяць робіць асістэнтов стабільнымі. Кэшаванне робіць іх быстрымі і дышэўнымі. Іх сумешчанне — напрыклад, “кэшаванне” прыязнасцей з таймаўмем 10 хвілін — можа выцераты імя карыстальніка падчас чата. Храніце цяперышнія панявы окрэма.
Частка 4: Калі не трэба выкорыстоўваць RAG?
Пашырэнне праз адзыскванне дадзенняў — гэта не універсальны інструмент.
Адкладзіце RAG, калі:
- Этажэнне ўскладненая, але яна ужо знаходзіцца ў межах загальных знанняў, якімі распаляецца мадэль (“століця Францыі” не патрабуе вектарнага індэкса).
- Факты постоянна зміняюцца (цены, рэзультаты гэманаў) — лепш выкарыстоўваць API.
- Задача ўсё адно чыста творчая (паэзія, брэйнштармінг) — адзыскванне інфармацыі рэдка калі дапамагае.
- Корпус дастаткова маленькі, ўсё можна практычна падаць у запіт.
- Ультракороткі час адпаведзення не дазволяе додатковых крокаў адзысквання інфармацыі.
Інодзе рашэнне крыўціцца ў праверанні запыту або тонкай наладзе, а не ў цэлым вектарным прайсепты. Выберыце інструмент прычаму до таго, як працаваць з сістэмай.
Частка 5: Найлепшыя практыкі, выучаныя на скасце
- Раздзеляйце тэкст розумна, а не на мінімальныя часткі. Мінімальныя фрагменты втрачаюць кантэкст; вялікія фрагменты — тачнасць. Лепш выкарыстоўваць перакрыцце.
- Выкарыстоўвайце аднаго эмбэдэра для файлаў і запытанняў. Сумешчанне модэляў значыць вімераванне ў сумешанных едыніцах.
Команды, які розглядаюць процэс выкарыстоўвання інформацыі як дадатковы элемент, зазвычай знову сталкаюцца з тымі ж проблемамі: тыхае зменшэння структуры дадзеных у прыстроях загрузкі, межы частак, якія паўдзеляюць заперчання, несувярэннасці модэляў у процэсе індэксавання па афлайн-методам і запыткаў у рэжыме онлайн, а таксама панелі керування, якія вімерваюць толькі „час адпаведзення“, ігнаруючы якосьць рэсультатаў. Эфектывае практыкаванне RAG розглядае кожны этап працы як окрэмую частку продукту, для якой ёсць відпаведальныя адносабы, тэсты і планы на віпадак збою — особліва калі асістэнт працуе з кліентамі чыста ў рамках рэгулююцыхся процэсаў.
Пры ацэнке змян лепш выкарыстоўваць парныя експерыменты: той самы набор запыткаў, тая ж крэтыранія для оцэнкі, паўтарнае вылічэнне показначыкаў Recall@k і ступеня адпаведнасці да фактамаў пры змяні способу часткавання дадзеных чыста ў рамках рэнкіраў. Незначныя праграсы ў процэсе выкарыстоўвання інформацыі часта ёсць крашчымі за большыя змены, якія выкарыстоўваюць толькі запыткі, адтакоўваючы, што генератор не можа цітаваць тое, чаго няма ў вікні кантэксту.
Мантра RAG
Точная інфармацыя → Тачны кантэкст → Тачны запрос → Тачна адказ.
RAG — гэта тэхніка, а не магія. Чысты запоўнення даных, разумны выкарыстанне інформацыі, чыстая адбудова адказу і чытка формуліравання запросу ператвараюць занадто самавярогодзілаго чалавека на кваліфікованага спецыяліста, які спачатку прачытае файл, і такім чынам запобегаюць выдумванню ідэі 24/7 глобальной падтрымкі, якой неймае.