Прибуток:
- Реалізація гібридного пошуку, який поєднує вибір top-k, семантичний пошук і пошук за ключовими словами
- Підвищення точності першого пошуку з переранжуванням
- Зробити складні запитання зручнішими для пошуку за допомогою таких методів, як перетворення запитів і HyDE
Ви гарно подрібнили документи та помістили їх у векторну базу даних. Тепер справжня робота: вибір правильних частин, коли користувач ставить запитання. Це називається пошуком і є основою якості RAG. Пам’ятайте фразу «Якість пошуку = якість RAG»; Саме цей пристрій і є мистецтвом покращення цієї якості. Ми розглянемо практичні прийоми від вибору top-k до гібридного пошуку, від переранжування до трансформації запиту.
Топ-к: скільки штук ми привеземо?
Основне налаштування: скільки штук (k) повертати з пошуку. Якщо ви принесете менше (k=1), існує великий ризик пропустити правильну фігуру; Якщо ви додасте занадто багато (k=20), це додасть шуму моделі, а вартість токена збільшиться.
Розрізняйте два поняття. Відкликання: швидкість, з якою правильна фігура потрапляє серед вилучених. Точність: швидкість, з якою те, що отримано, є релевантним. Збільшення k збільшує запам'ятовування, але зменшує точність. Мета полягає в тому, щоб збалансувати обидва.
топ-к
Вплив
відповідна ситуація
1-3
Висока точність, ризик промаху
Прості запитання з однією відповіддю
4-8
Баланс; більшість сценаріїв
Загальнокорпоративне РАГ
10-20
Вище запам'ятовування, шум збільшується
З зміною рейтингу (нижче)
Порада: поширений і потужний шаблон: вибірка широких (k=20), потім звуження з переранжуванням (топ-4). Таким чином ви нічого не пропустите та надасте чіткий контекст моделі.
Гібридний пошук: сила двох пошуків
Семантичний (векторний) пошук фіксує значення, але пропускає речі: повний код продукту ("XR-4471"), рідкісні абревіатури, власну назву, номер версії. Для цих завдань із точним збігом дуже добре підходить пошук за ключовими словами старої школи, особливо класичний алгоритм під назвою BM25.
Гібридний пошук поєднує обидва: як семантичний пошук, так і пошук за ключовими словами працюють, поєднуючи результати. Так, у питанні типу «Гарантійний термін експлуатації
Об’єднання зазвичай виконується за допомогою RRF (Reciprocal Rank Fusion): трек, який стоїть вище в обох списках, висувається вперед.
# Hybrid retrieval (conceptual)sem = vector_search(question, k=20) # meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # об’єднує два, топ 8
Зміна рейтингу: другий і розумніший пас
Перший дзвінок може бути швидким, але грубим. Повторне ранжування оцінює кандидатів, повернутих першим пошуком, одного за іншим за допомогою потужнішої моделі (зазвичай перехресного кодувальника — моделі, яка зчитує запитання й уривок разом і оцінює релевантність) і переміщує найрелевантніших угору.
Логіка така: перший пошук призначає велику кількість кандидатів для відкликання (20 кандидатів), повторний пошук вибирає 4 найкращих для точності. Цей двоетапний підхід набагато точніший, ніж одноетапний пошук. Це коштує певної затримки та додаткової обробки; Виграш — значне підвищення якості.
# Двоетапний пошук (концептуальних) кандидатів = hybrid_search(питання, k=20) # широка, швидка оцінка = reranker.score(питання, кандидати) # оцінка релевантності для кожного кандидата контекст = rated.rank()[:4] # топ-4
Перетворення запиту
Іноді проблема не в пошуку, а в самому питанні. Якщо користувач запитує «А як щодо віддалених працівників?» ', це не можна шукати самостійно (незрозуміло, що для віддалених працівників). Ось методики перетворення запитів:
- Перепишіть: скористайтеся історією розмов, щоб окремим було запитання: «Яке право на щорічну відпустку мають віддалені працівники?»
- Мультизапит: генеруйте 3 різні вирази одного питання, шукайте з усіма ними, комбінуйте результати. Різні слова знаходять різні частини.
- HyDE (вбудовування гіпотетичних документів): спочатку надрукуйте «можливу відповідь» на модель, потім вставте та знайдіть цю уявну відповідь. Уявна відповідь іноді виявляється кращою, оскільки вона ближча словами до справжнього документа.
# Багатозапитові (концептуальні)варіанти = model.uret("Виразіть це запитання трьома різними способами: " + question)tum_sonuc = []для v у варіантах: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Слабке відновлення / Сильне відновлення
Слабкий (один етап, лише семантика, константа k=3):
result = vector_search(question, k=3)# Проблема: код продукту пропущено, неможливо ввести правильну частину 3 у складних запитаннях.
Потужний (гібрид + широкий + переранжування + багатозапит, якщо необхідно):
кандидати = hybrid_search(rewrite(питання, минуле), k=20)контекст = reranker.score(питання, кандидати).first(4)# Враховується як точний збіг, так і значення; Це стосується 4 найкращих моделей.
Три міні-чохли
Випадок 1 — код продукту не виведений. Чистий семантичний пошук команди підтримки не зміг знайти слово «RTX-9080» дослівно в питанні «Помилка драйвера RTX-9080»; Він привозив інші продукти з подібними назвами. Коли було додано гібридний пошук, відбулася точна відповідність коду, і відсоток повернення правильних статей збільшився з 58% до 92%.
Випадок 2 — Різниця в рейтингу. Помічник юрисконсульта працював із k=5, але правильний пункт у більшості випадків становить 7-10. Він залишався в строю. Коли було введено k=20 + переранжування, відсоток потрапляння правильної статті в ТОП-3 збільшився з 61% до 94%; Затримка зросла лише на 300 мс — прийнятний компроміс.
Випадок 3 — Додаткове запитання без контексту. У помічника з персоналу користувач запитує: «А як щодо сумісників?» Коли я запитав, система принесла невідповідні частини. Переписавши запит (витягнувши контекст «щорічна відпустка» з минулого та додавши «Працівники, які працюють неповний робочий день, мають право на щорічну відпустку»), відсоток правильних відповідей збільшився з 40% до 86%.
Поширені помилки
- Покладаючись виключно на семантичний пошук: код товару, абревіатура, власна назва пропущені; Додайте гібрид.
- Залишення k занадто малим: правильна частина не може увійти до списку; зробити його широким і звузити його за допомогою повторного рангу.
- Ніколи не думайте про зміну рейтингу: перший пошук є грубим; Другий розумний прохід значно покращує якість.
- Пошук додаткових запитань: запитання без контексту шукає безглузде; переписати.
- Сліпе збільшення k (без повторного рангу): модель наповнюється шумом, відгук спотворюється, а вартість зростає.
Обережно: кожна техніка збільшує вартість і затримку. Мультизапит означає 3-кратний пошук, переранжування означає додатковий виклик моделі. Почніть із простого гібриду + спочатку розумного k; Вимірюйте та додавайте важкі прийоми там, де це дійсно необхідно. Додавання без вимірювання.
Підсумовуючи
- Top-k – баланс між запам’ятовуванням і точністю; Загалом 4-8 – хороший початок.
- Гібридний пошук поєднує семантичний пошук із пошуком за ключовими словами (BM25); Відновлює точні збіги.
- Переранжування повторно оцінює кандидатів із широкого початкового пошуку за допомогою надійної моделі та вибирає найкращих.
- Трансформація запитів (переписування, багатозапити, HyDE) робить пошук складних і контекстно-вільних запитань.
- Сильний шаблон: широке вибірка → злиття з гібридом → вузьке з переранжуванням; але додайте кожну техніку, вимірявши її.
Аплікаційне завдання
Підготуйте 6 складних запитань з даними з попередніх розділів: принаймні 2, що вимагають точних збігів (код товару, абревіатура, дата), 2 семантичних (та сама тема з різними словами), 2 додаткових запитання без контексту. (1) Спочатку подумайте про кожне запитання як про чистий семантичний пошук і вручну позначте, які частини з’являться. (2) Переоцініть ті самі запитання з додаванням гібриду та повторного ранжирування. (3) Перепишіть додаткові запитання без контексту. Зазначте в табличній формі, яка техніка має значення для того чи іншого типу запитання.
контрольний список
- [ ] Я знаю, що top-k — це баланс із точністю запам’ятовування та розумний початковий діапазон.
- [ ] Я можу пояснити, чому гібридний пошук відновлює точні збіги.
- [ ] Я можу застосувати двоетапну логіку переранжування (широкий → розумний вузький).
- [ ] Я визнаю необхідність переписати додаткові запитання без контексту.
- [ ] Я підтверджую, що я додав важкі техніки шляхом вимірювання, а не шляхом вимірювання.