Галоўная / Артыкулы / За межамі Top-K: прагі матэрыяльнае адпрацоўкі, гібрыдны пошук і перыякораванне ў RAG

За межамі Top-K: прагі матэрыяльнае адпрацоўкі, гібрыдны пошук і перыякораванне ў RAG

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

1628 слоў

Генераванне, адкрэсаванае за дапамою выкарыстоўвання дакументаў, зазвычай апісваецца як трывяховы процес: знаходзіць дакументы, якія стосуюцца запиту, перадае іх мовнаму модэлю і дазволяе яму напісаць адпаведны адказ. Схема ў цэм простая; але зробіць яе надзеямую — не так-то проста. Пайплайн, які безпосередна з’ўязвае пошук на аднойчынных вектарах з 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.

    Супаўязаныя матэрыялы