За межамі Top-K: прагі матэрыяльнае адпрацоўкі, гібрыдны пошук і перыякораванне ў RAG
Пазірце, чаму база дадзэных вектароў плюс LLM не ёсць системай RAG для прыменення, і як фрагментаванне, прагі сэмабільнасці, гібрыдны пошук, перыякораванне і ацэнка заполняюць гэты прыемак.
Генераванне, адкрэсаванае за дапамою выкарыстоўвання дакументаў, зазвычай апісваецца як трывяховы процес: знаходзіць дакументы, якія стосуюцца запиту, перадае іх мовнаму модэлю і дазволяе яму напісаць адпаведны адказ. Схема ў цэм простая; але зробіць яе надзеямую — не так-то проста. Пайплайн, які безпосередна з’ўязвае пошук на аднойчынных вектарах з LLM, будзе даўаць адказы на аснове слабкага контэксту, праслепляцца точнымі ідентыфікаторамі та выдаваць хвастальскія адказы, калі база знання не мае нічога для сказання. Самэ тут пасляпэдні дизайн выкрывае свае слабасці, і самэ тыя этапы — ад структураванага разбівання на часткі да вимернай ацэнкі — ператвараюць яго на архітектуру выкарыстоўвання дакументаў, якой можна даверыць.
Пасляпэдні пайплайн і яго скрытыя прыпускі
Базовая структура, яка викорыстоўваецца ў большасці навучальных матэрыялаў, выглядае так: дакументы дзелюцца на часткі, яны вбудовуюцца, вектары зберагаюцца, а пад час запиту вбудовываецца сам запит, выявляюцься top_k найбліжэйшых частак, якія пасля таго прыўязуюцца да запиту. Што такое працюе ў дэманстрацыі, але тут мовчком прыямляецца, што кожная частка є значамой ейкавай елементацыяю, а „найбліжэйшая“ означае „релевантная“.
Часткі па структуры дакумента
Разглянем рэўюду для працавікаў. Слабы падход дзеліць яе на хаотычныя фрагменты по 1 000 симвалаў, што прыводзіць да таго, што правілы дзелюцца насередзіне, а канец адной тэмы прыўязуецца да пачатку іншай. Моцнейшы падход следуе за сабеўласной структурой дакумента, ствараючы часткі такія як Работа з дому, Безпека, Выплата за відпачынак і Витраты.
Раздзел, які ўсе неабходнае мае, дае модэлю для вбудоввання достатню кантэкстную інфармацыю, каб той змог усвядоміць, пра шта насправды йдзе ў тексте і як асоціююцься його твэрдзенні. Результуючыя вектары стаюць чыстэйшымі, а семантычны пошук вяртае больш релевантных рэзультатаў.
Функцыя Top-K вяртае найбліжэйшыя рэзультаты, а не релевантныя
Кращыя фрагменты часта вядуць да наступнага неправильнага разумевання. Значэнне top_k = 5 часта тлумачыцца як «дай мне пяць релевантных рэзультатаў». Насправды ж гэта значэнне просіць пяць найбліжэйшых рэзультатаў, незалежна ад таго, чыя з іх є хорашымі. Типовая распадка балавання для запита пра удаленую работу можа выглядаць так:
Remote Work 0.62
Paid Time Off 0.36
Security 0.30
Expenses 0.28
Other Policy 0.24
Першы рэзультат, верагацей, які і трэба корыстніку. Іншы чатыры — гэта слабыя падпарадкі, якія толькі потрапілі ў спіс таму, што трэба было чымось запаўніць вакуум. Перадача ўсіх пяці рэзультатаў модэлю спалучае корыстную інфармацыю з можліваю, слаба повязанай і нерелевантной тэкстам. Модэлю тепер трэба самаму разлічваць справжню інфармацыю ад шуму, чыя выклікае зростанне вартасці обробкі і робіць адпаведны адказ менш прыгадным.
Запытанні, на якія немагчыма даўць адказ, патрабуюць свайгое стаўлення
Ўсілі важным прыкладам є запытанні, на якія база знаёмых проста не можа даўць адказ, напрыклад: "Калі складаеся сума, якая павінна быць заплатыта самам корпарабам за медычную страховку?" — калі ў інструкцыях гэта ніколі не праменавалася. Метод Top-K так і будзе вярнуць пяць фрагментаў, а простая схема обробкі будзе спрыймать найбліжэйшы з іх як доказ і робіць прыбліжны адказ.
Правільная практыка ў корпаратыўнай средзе — адзначыць, што наявныя дакументы не маюць достатнь пазнанняў. Якша спроектаваная система должна магчымае вернуць ўтаманне:
No sufficiently relevant context was found.
Дадаць фільтр рэлевантнасі межы пошукам і модэлем
Работа з як слабымі падходамі, так і з запытаннямі, на якія немагчыма даць адказ, вымагае ўтаманнай стадіі. Простыя практыкі выглядаюць так:
Vector Search
↓
Top-K
↓
LLM
Удосконаўаныя практыкі выкарыстоўваюць Top-K як список кандыдатаў і дадаюць фільтр прыходзячы да модэля:
Vector Search
↓
Top-K candidates
↓
Relevance Filter
↓
LLM
Спадчыны фільтр — гэта праграма схожасці. Кандыдаты, якія падпадаюць пад гэтую праграму, застаюцца:
score >= threshold
→ keep
А тыя, якія нижэй гэтай праграмы, адхоўляюцца:
score < threshold
→ discard
Якшо нічога не застаецца, система вяртае адказ „немае рэлевантнага контексту“, замест таго, каб вызваць модэль з некалькама падбіяў.
Выбіранне праграмы на адной з мераванняў
Прагматыка должны выкліквачыцца з дадзейнаў. Адно маленькае эксперыментацыйнае даследжэнне на наборы дадзейнаў для карпаткі падпрыемства парабяглае практычнасць адпаведзення на запыткі, якім можна даць адпаведзенне („вядомыя“), і шчыткі адхоўлення запыткаў, якім нельга даць адпаведзення („невядомыя“), для калькі разных значэнняў:
| Threshold | Known-query recall | Unknown-query rejection |
| --------: | -----------------: | ----------------------: |
| 0.20 | 100% | 0% |
| 0.25 | 100% | 0% |
| 0.30 | 100% | 50% |
| 0.35 | 100% | 50% |
| 0.40 | 100% | 50% |
| **0.45** | **100%** | **100%** |
| 0.50 | 100% | 100% |
| 0.55 | 100% | 100% |
У гэтым наборе дадзеных 0.45 быў першы порог, які заставаў усе вядомыя запиты, адхіляючы ўсе невядомыя, і таму стаў найкращым спосабам разлікування сярод перакананых значэнняў. Гэты чысла не є переносным. Рэйтингі садоўжнечы выраховваныя на адной модэлі залежнаць ад модэля укладання, корпусу дадзеных, формулювання запытоў і налаштаўвання процесу пошуку; разныя модэлі даюць вельмі розныя значэння. Такса пры адхіленні на 50% таксовых крокаў таксама указвае на вельмі маленькі набор невядомых запытоў, таму для рэальнага выводу патрэбен большы набор атрыбутаваных дадзеных, прычым перш чым паверыць у гэты порог. Тое, што можа быць перанесенае, — гэта метод: мерыць працэс пошуку для вядомых і невядомых запытоў і выбіраць порог на адной падставе доказаў, а не інтуіцыі.
Пошук і ранжыраванне — гэта разныя задачы
Падзеймім, што процэс выкарыстання даст 20 кандыдатаў. Ён выканаў свою задачу: ён знаходзіць 20 фрагментаў тэксту, якія, верагодна, адносуюцца адзін да другога. Але застаёўся другі вопыт: калькі з іх є найлепшым контекстам для гэтага конкрэтнага вопыту? Гэтая задача выпалюе на переранжаванні.
Процэс выкарыстання оптымізаваны для вярнага аднаходжэння інформацыі ў вялікай колькасці дадзеных, пры чым сума 10 000 фрагментаў скурчваецца да прыемнага за размерамі набору кандыдатаў:
10,000 chunks
↓
retrieval
↓
50 candidates
Пасля чаго переранжаванне болей рэтельна практыкуе оценку гэтага маленькага набору, зазвычай за дапамогою модэлю, які чытае вопыт і кожнага кандыдата разам, і залишае найсильнейшыя з яных:
50 candidates
↓
reranker
↓
5 strongest candidates
Такі тэпер выглядае цэлы процес:
Question
↓
Embedding
↓
Vector / Hybrid Search
↓
Candidate Set
↓
Reranking
↓
Best Context
↓
LLM
Семантычны пошук не знаходзіць точных тэрмінаў
Эмбеддынгі адлучна падходзяць да аналізу значэння, але корпоратыўныя дадзеныя заполнены токэнамі, значэнне якіх крыўцяецца ў их точным напісанні:
INC-48271
ERR_CONNECTION_RESET
POL-104
AWS us-east-1
customer_12345
Модель для анкораўвання може зрозумець, што запит стосуецца памылкі з’яўлення звязку, калі пасуне фрагмент, які мае точны код ERR_CONNECTION_RESET, нижэй за звычайны абзац пра сеті, па рангаванню.
Гібрыдны спосаб ахавання інформацыі выкарасоўвае оба сигналы
Стандартным рашэнням є гібрыдны спосаб ахавання інформацыі, які выкарасоўвае семантычны і лексычны пошук адночасна:
Semantic Search
+
Keyword / Lexical Search
Оба пошуку выкарасоўваюцца для аднаго і тога ж запыту, а ўсе яных рэзультаты з’еднаюцца ў аднук набор кандыдаў, часта за дапамогою методу злучэння, які спалохвае два рангавання:
Question
│
┌─────────┴─────────┐
↓ ↓
Semantic Search Keyword Search
│ │
└─────────┬─────────┘
↓
Candidate Set
Сістэма атрымлеўвае семантычную супадзімасць для перафразаваных запытаў і точнае падпаданне тэрмінаў для ідэнтыфікатораў.
Працэс, адпаведны для практычнага выкарыстання
Калі ўсе этапы ўстановлены, цэлы працэс выглядае так:
Documents
↓
Semantic Chunking
↓
Embeddings
↓
Vector / Hybrid Retrieval
↓
Relevance Filtering
↓
Reranking
↓
LLM
↓
Answer + Sources
↓
Evaluation + Observability
Модель большэй не знаходзіцца безпосередня пасля базы дадзэння вектараў. Тепер межу між корыстнікам і LLM стварае рэальная архітектура пошуку. Чыба глэбачэй разумець этап ранжавання і калі його затрымка є корыстной, прачытайце нашу статэю пра тое, чаму reranking павінен заслужыць сваю затрымку.
Базовая структура, якую варта створыць першай
Хорашы спосаб разумець гэтыя компромісы — ствараць раштоўнастыя версіі. Невелика базовая структура можа аб’еднаваць Python, FastAPI, вкладкі OpenAI і LLM-ы, а таксама Pinecone як сховішча вектараў, а таксама:
- частковэ раздзелванне з урахоўваннем загалоўкаў і метаданныя частак
- семантычны пошук з налаштавальным параметрам
top_k - фільтрацыя па схожасці
- атрыбуцыя джерела
- ацэнка результаатаў пошуку
Её алгорытм работы такі:
Question
↓
Embedding
↓
Pinecone Retrieval
↓
Top-K Candidates
↓
Similarity Threshold
↓
Relevant Context
↓
LLM
↓
Answer + Sources
Наступным логічным крокам є адаптаванне гібрыдных методаў пошуку та ранжыравання і ўпорачэнне іх з гэтым базовым варіантом за дапамогою таго ж набора для ацэнкі, таким чынам кожны прагрэс можна будзе вимераваць, а не проста прыйматы як даналегле.
Вимераванне надзяйнасці системы
„Чы робіць чат-бот?“ — гэта не корыстна запитанне. Раздзеліце яе на параметры, якія можна вимераваць:
- Якасць пошуку: чы була вярнута ўсе-такі правильная інформацыя?
- Якасць ранжыравання: чы найболей корыстны контэкст знаходзіцца падале?
- Апарэнне ў реальнасці: чы адпаведзь падтрымвана знайдзеным контэкстам?
- Точнасць цітатаў: чы цитаваныя джерэлы падтрымваюць заявленыя факты?
- Работа з незнаёмымі запитамі: чы система ведае, калі адпаведзь няма ў базе знанняў?
Цель пераходзіць з „Чы можа прыстрой запрацаваць над запитамі?“ на „Чы можамы вымерыць, чы ўстойліва архітектура адзыскання?“
Ключовыя выводы
- RAG — гэта не проста наданне LLM доступу да дакументаў; важлівыя рашэння — гэта што адзыскваць, чаму даверяць, што перадаць і калі адмовіць.
top_kгарантуе колькасць, а не рэлевантнасць, таму трэба фільтрацыя кандыдатаў за дапамою прагу, настроенага на вашыя сабе данні.- Гібрыдны пошук выловляе точныя ідэнтыфікаторы, якія затуманююцься эмбеддінгамі, а переранківанне ператварае шырокі набор кандыдатаў у точны контэкст.
- Якасць адказа ў значныяй меры вялічыцца яшчэ до таго, калі модель бачыць какі-небудзь контэкст: кращы контэкст прыводзіць да кращых адказоў і надзеяльнейшых систем.
- Спрэбуйце расследзіць процес стварэння RAG як архітектурную проблему з вимернымі этапамі, а не як адзіну інтеграцыю LLM.
Супаўязаныя матэрыялы
- Гібрыдны спосаб атрымання дадзэнняў RAG з паўтарным ранжыраваннем за дапамой pgvector, BM25 і cross-encoder — Дазвольце вам дазнацца, чым адзін стандартны пошук за вектарамі не можа знаходзіць номеры дзялянак і коды каштоўкаў, а таксама як сумаваць pgvector, BM25 і механізмы паўтарнага ранжыравання ў LangChain для точнага атрымання дадзэнняў RAG.
- Правильны выбар LLM: маршрутызацыя, атрыманне дадзэнняў і ацэнка на адной заснове розмеру чыстага модэлю — Дазвольце вам дазнацца, як выбіраць малыя чы большыя мовныя модэлі па характару завадбы, вырачваць косць за кожную успешную задачу, а таксама як выкарыстоўваць маршрутызацыю, тэхніку RAG, кешаванне і перакананне ў правядзенні задач.
- Проектаванне паіплайну RAG з асабліванням даўедзей: чанкаванне, фільтраўванне і стрімінг — падробны апіс прыемаў стварэння паіплайну RAG з асабліванням даўедзей: чанкаванне з урахоўваннем структуры, розбіянне з адпаведным адносам да токенаў, трывяхэтапнае фільтраўванне даўедзей, зборка частак у ўсёецелыя даўедзі, проектаванне запитоў і стрімінг даўедзей. —