Прибыль:
- Реализация гибридного поиска, сочетающего в себе выборку из топ-к и семантический поиск и поиск по ключевым словам.
- Повышение точности первого поиска с помощью реранжирования
- Сделайте сложные вопросы более доступными для поиска с помощью таких методов, как преобразование запросов и 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 — это баланс точности отзыва и разумный стартовый диапазон.
- [ ] Я могу объяснить, почему гибридный поиск находит точные совпадения.
- [ ] Я могу применить двухэтапную логику изменения рейтинга (широкий → умный узкий).
- [ ] Я осознаю необходимость переписать дополнительные вопросы без контекста.
- [ ] Подтверждаю, что я добавил тяжелые техники путем измерения, а не измерения.