~/ai — rag — query rewriting
‹ ai engineering12 / поиск и RAG

QUERY REWRITING · СПРОСИТЬ ПРАВИЛЬНО

Люди спрашивают коротко и разговорно, а документ написан официальным языком. Перед поиском LLM переписывает вопрос в несколько вариантов на языке документа, поиск идёт по всем сразу, результаты сливаются.

01 · вопрос пользователя
user ›
02 · LLM переписывает 3 варианта
Перефраз — тот же вопрос официальным языком. Ключевые слова — для поиска по словам. HyDE — гипотетический ответ: модель пишет, как мог бы звучать нужный пункт, и ищут похожий на него текст.
03 · поиск по каждому варианту что на 1-м месте
04 · гибрид: до и после RRF по всем спискам
только вопрос
    вопрос + 3 варианта
      05 · общий счёт 10 вопросов · первое место верное
      Сильнее всего rewriting помогает поиску по словам: разговорному «cash when?» нечего совпасть с документом. У вариантов слова из документа есть, и даже если не каждый вариант попадает, слияние всех списков выводит нужный пункт наверх. Векторный поиск и так понимает перефразы, ему достаётся меньше. Цена — лишний вызов LLM и задержка перед каждым поиском.
      Переписывающей LLM здесь был я, Claude: варианты написаны заранее и вшиты в страницу, как ответ модели в настоящем пайплайне. Правильные чанки я разметил до переписывания и до поиска. BM25, косинусы на эмбеддингах all-MiniLM-L6-v2 и слияние RRF считаются в браузере, так что улучшился поиск или нет, решают модели, а не я.
      session log
      ~/ai $ rewrite → search → fuse