Продвинутый RAG: query rewriting, multi-query, HyDE
Обзор техник, которые улучшают RAG, меняя не базу, а сам запрос перед поиском.
Базовый RAG ищет по исходному вопросу. Продвинутые техники сначала преобразуют запрос, чтобы он лучше попадал в релевантные чанки.
Query rewriting (переписывание запроса)
Запросы пользователей бывают кривыми: разговорными, с опечатками, неполными, с местоимениями вместо тем. LLM переписывает вопрос в чёткую форму перед поиском.
Было: "а сколько у вас на это времени?" (после разговора о возврате)
Стало: "В течение скольких дней возможен возврат товара?"Особенно важно в диалоге: переписывание разрешает местоимения и подтягивает контекст беседы в самостоятельный запрос.
Multi-query (несколько формулировок)
Одна формулировка может не дотянуться до нужных чанков. Идея: сгенерировать LLM несколько перефразировок вопроса, искать по каждой и объединить результаты. Это повышает шанс зацепить релевантное.
variants = [
"как вернуть товар",
"условия возврата покупки",
"сколько дней на возврат",
]
# у каждого варианта свои «найденные» id (имитация поиска)
hits = {
"как вернуть товар": {"c1", "c3"},
"условия возврата покупки": {"c3", "c4"},
"сколько дней на возврат": {"c2", "c3"},
}
union = set()
for v in variants:
union |= hits[v]
print("Объединённый набор чанков:", sorted(union))Вывод:
Объединённый набор чанков: ['c1', 'c2', 'c3', 'c4']
Каждая формулировка нашла что-то своё; объединение покрывает больше релевантного, чем любой запрос по отдельности. Чанк c3 всплыл во всех — явный признак высокой релевантности.
HyDE (Hypothetical Document Embeddings)
Тонкая идея: короткий вопрос и длинный документ-ответ «выглядят» по-разному, и их векторы не всегда близки. HyDE сначала просит LLM придумать гипотетический ответ на вопрос, а затем ищет по эмбеддингу этого выдуманного ответа — он по форме ближе к настоящим документам.
Вопрос: "Чем отличается HNSW от IVF?"
Гипотетический
ответ (от LLM): "HNSW строит навигируемый граф... IVF делит на кластеры..."
Ищем по эмбеддингу гипотетического ответа -> находим реальные документы
про HNSW и IVFПарадокс: даже если выдуманный ответ фактически неточен, он содержит правильные термины и стиль, поэтому ведёт к нужным документам лучше короткого вопроса.
Когда что применять
| Техника | Решает |
| Query rewriting | кривые/диалоговые запросы, местоимения |
| Multi-query | одна формулировка не покрывает тему |
| HyDE | разрыв «короткий вопрос ↔ длинный документ» |
Итог
- Продвинутый RAG улучшает извлечение, преобразуя запрос.
- Rewriting чистит запрос, multi-query расширяет покрытие, HyDE сближает вопрос с документами.
- Цена — дополнительные вызовы LLM перед поиском.