Единица 4 / 11

Стратегии поиска: Top-k, Hybrid, Re-ranking

Прибыль:

  • Реализация гибридного поиска, сочетающего в себе выборку из топ-к и семантический поиск и поиск по ключевым словам.
  • Повышение точности первого поиска с помощью реранжирования
  • Сделайте сложные вопросы более доступными для поиска с помощью таких методов, как преобразование запросов и HyDE.

Вы аккуратно измельчили документы и поместили их в векторную базу данных. Теперь настоящая работа: получение нужных фрагментов, когда пользователь задает вопрос. Это называется извлечением и является основой качества RAG. Помните фразу «Качество поиска = качество RAG»; Этот аппарат – это именно искусство улучшения этого качества. Мы рассмотрим практические методы: от выбора топ-к до гибридного поиска, от повторного ранжирования до преобразования запросов.

Топ-к: Сколько штук мы принесём?

Самая базовая настройка: сколько штук (k) вернуть из поиска. Если вы принесете меньше (k=1), велик риск пропустить нужный кусок; Если вы добавите слишком много (k=20), это добавит шума в модель и стоимость токена увеличится.

Различайте два понятия. Напомним: скорость попадания правильного фрагмента среди найденных. Точность: скорость, с которой полученная информация является актуальной. Увеличение k увеличивает полноту, но снижает точность. Цель состоит в том, чтобы сбалансировать их.

топ-к

Воздействие

подходящая ситуация

1-3

Высокая точность, риск промаха

Простые вопросы с одним ответом

4-8

Баланс; большинство сценариев

Генеральная корпоративная РАГ

10-20

Чем выше отзыв, тем выше шум.

С изменением рейтинга (ниже)

Совет: распространенный и эффективный шаблон: выберите широкий (k = 20), затем сузьте с повторным ранжированием (верхние 4). Таким образом, вы ничего не пропустите и придадите модели чистый контекст.

Гибридный поиск: сила двух поисков

Семантический (векторный) поиск улавливает смысл, но упускает кое-что: полный код продукта («XR-4471»), редкое сокращение, имя собственное, номер версии. Для этих задач по точному совпадению очень хорош поиск по ключевым словам старой школы, особенно классический алгоритм BM25.

Гибридный поиск сочетает в себе оба подхода: работают как семантический поиск, так и поиск по ключевым словам, объединяя результаты. Так, в таком вопросе, как «Гарантийный срок

Слияние обычно осуществляется с помощью RRF (Reciprocal Rank Fusion): вперед выходит трек, который находится выше в обоих списках.

# Гибридный поиск (концептуальный)sem = вектор_поиск(вопрос, k=20) # смысловой ключ = bm25_search(вопрос, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # объединяем два, верхние 8

Изменение рейтинга: второй и более умный проход

Первый звонок может быть быстрым, но грубым. Повторное ранжирование оценивает кандидатов, возвращенных в результате первого поиска, одного за другим с помощью более мощной модели (обычно перекрестного кодировщика — модели, которая считывает вопрос и отрывок вместе и оценивает релевантность) и перемещает наиболее релевантные наверх.

Логика такая: первый поиск назначает большое количество кандидатов на отзыв (20 кандидатов), ререйнер выбирает 4 лучших по точности. Этот двухэтапный подход намного точнее, чем одноэтапный поиск. Это требует некоторой задержки и дополнительной обработки; Выигрыш заключается в значительном повышении качества.

# Двухэтапный поиск (концептуальных) кандидатов = Hybrid_search(question, k=20) # широкий, быстрый рейтинг = reranker.score(вопрос, кандидаты) # оценка релевантности для каждого контекста кандидата = rated.rank()[:4] # топ-4

Преобразование запроса

Иногда проблема не в поиске, а в самом вопросе. Если пользователь спрашивает: «А как насчет удаленных работников?» ', этого нельзя добиваться в одиночку (непонятно, что для удаленных работников). Вот методы преобразования запросов:

  • Перепишите: используйте историю разговоров, чтобы выделить вопрос: «Какие работники, работающие удаленно, имеют право на ежегодный отпуск?»
  • Мультизапрос: создайте 3 разных выражения одного и того же вопроса, выполните поиск по всем из них, объедините результаты. Разные слова находят разные части.
  • HyDE (встраивание гипотетических документов): сначала распечатайте «возможный ответ» на модель, затем встройте и найдите этот воображаемый ответ. Воображаемый ответ иногда оказывается лучше, поскольку на словах он ближе к реальному документу.

# Многозапросные (концептуальные)варианты = model.uret("Выразите этот вопрос тремя разными способами: " + вопрос)tum_sonuc = []for v в вариантах: all_sonuc += вектор_intermediate(v, k=6)context = сингулярный_and_order(tum_result)[:6]

Слабое извлечение / Сильное извлечение

Слабый (один этап, только семантика, константа k=3):

result = вектор_search(question, k=3)# Проблема: пропущен код продукта, невозможно ввести правильную часть 3 в сложных вопросах.

Мощный (гибрид + широкоформатный + переранжирование + мультизапрос при необходимости):

кандидаты = Hybrid_search(rewrite(вопрос, прошлое), k=20)context = reranker.score(вопрос, кандидаты).first(4)# Фиксируются как точное совпадение, так и значение; Он достаётся 4 лучшим моделям.

Три мини-кейса

Случай 1 — Код продукта экранирован. Чистый семантический поиск в команде поддержки не смог найти дословное «RTX-9080» в вопросе «Ошибка драйвера RTX-9080»; Он привозил другие продукты с похожими названиями. Когда был добавлен гибридный поиск, произошло точное совпадение кода, и процент возврата правильных статей увеличился с 58% до 92%.

Случай 2 — Разница при повторном ранжировании. Помощник юриста работал с k=5, но в большинстве случаев правильным пунктом является 7-10. Он оставался в строю. При введении k=20 + реранжирование процент попадания правильной статьи в топ-3 увеличился с 61% до 94%; Задержка увеличилась всего на 300 мс — приемлемый компромисс.

Случай 3. Дополнительный вопрос без контекста. В HR-ассистенте пользователь спрашивает «а как насчет совместителей?» Когда я спросил, система принесла ненужные детали. Переписав запрос (удалив из прошлого контекст «ежегодный отпуск» и добавив «Сотрудникам, работающим неполный рабочий день, имеют право на ежегодный отпуск»), процент правильных ответов увеличился с 40% до 86%.

Распространенные ошибки

  • Опираясь исключительно на семантический поиск: пропущен код товара, аббревиатура, имя собственное; Добавьте гибрид.
  • Сохранение k слишком маленьким: правильный фрагмент не может войти в список; сделайте его широким и сузьте, изменив ранг.
  • Никогда не думайте о повторном рейтинге: первый поиск — это грубо; Второй интеллектуальный проход значительно улучшает качество.
  • Поиск дополнительных вопросов как есть: Вопрос без контекста ищет бессмысленный; переписать.
  • Слепое увеличение k (без переранжирования): модель заполняется шумом, отклик искажается, а стоимость увеличивается.
Будьте осторожны: каждый метод увеличивает стоимость и задержку. Мультизапрос означает 3-кратный поиск, переранжирование означает дополнительный вызов модели. Начните с простого гибрида + разумного k; Отмеряйте и добавляйте тяжелые техники там, где это действительно необходимо. Добавляем без измерения.

В заключение

  • Top-k — это баланс между отзывом и точностью; Обычно 4-8 — хорошее начало.
  • Гибридный поиск сочетает в себе семантический поиск с поиском по ключевым словам (BM25); Восстанавливает точные совпадения.
  • Повторное ранжирование позволяет повторно оценить кандидатов из широкого первоначального поиска с помощью надежной модели и выбрать лучших.
  • Преобразование запросов (переписывание, многозапрос, HyDE) делает сложными и бесконтекстные вопросы доступными для поиска.
  • Сильная модель: широкая выборка → объединение с гибридной → узкая с повторным ранжированием; но добавляйте каждую технику, измеряя ее.

Задача приложения

Подготовьте 6 сложных вопросов с данными из предыдущих блоков: минимум 2 требующих точного совпадения (код товара, аббревиатура, дата), 2 смысловых (одна и та же тема с разными словами), 2 уточняющих вопроса без контекста. (1) Сначала думайте о каждом вопросе как о чистом семантическом поиске и вручную отмечайте, какие части всплывут. (2) Переоценить те же вопросы с добавлением гибридных вопросов и повторного ранжирования. (3) Перепишите дополнительные вопросы без контекста. Отметьте в табличной форме, какой метод имеет значение для какого типа вопроса.

контрольный список

  • [ ] Я знаю, что top-k — это баланс точности отзыва и разумный стартовый диапазон.
  • [ ] Я могу объяснить, почему гибридный поиск находит точные совпадения.
  • [ ] Я могу применить двухэтапную логику изменения рейтинга (широкий → умный узкий).
  • [ ] Я осознаю необходимость переписать дополнительные вопросы без контекста.
  • [ ] Подтверждаю, что я добавил тяжелые техники путем измерения, а не измерения.