3,583 papers
arXiv:2508.09755 78 13 авг. 2025 г. FREE

Question-to-Question Retrieval: вопросные эмбеддинги вместо документов

КЛЮЧЕВАЯ СУТЬ
Классический RAG работает как сравнение телеграммы с романом. Вопрос пользователя: "Кто основал X?" (20 слов). Документ: "Компания X была основана в 1995 году предпринимателем Ивановым..." (500 слов). Семантически связаны, но структурно разные — эмбеддинг ловит форму, не только смысл. Метод решает проблему структурного несоответствия: документы превращаются в вопросы, сложный запрос разбивается на подвопросы — теперь поиск идёт вопрос-к-вопросу, а не вопрос-к-тексту. Результат: с 39% до 67% точности на сложных многошаговых запросах.
Адаптировать под запрос

TL;DR

Question-to-Question Retrieval — метод, который переводит поиск по документам в формат "вопрос ищет вопрос". Вместо прямого сравнения запроса с текстом документа, из каждого куска генерируются отвечаемые вопросы (answerable questions, AQ) — то есть вопросы, на которые этот кусок может ответить. Сложный многошаговый вопрос пользователя разбивается на цепочку простых подвопросов. Поиск идёт через сравнение подвопросов с сгенерированными вопросами, а не с сырым текстом.

Проблема классического RAG: модель пытается сопоставить короткий вопрос с длинным описательным текстом. Это как искать иголку, сравнивая её форму с формой стога сена. Вопросы звучат так: "Кто основал компанию X?", а документы — так: "Компания X была основана в 1995 году предпринимателем Ивановым, который ранее работал...". Структурно они разные, хотя семантически связаны. Эмбеддинг-модели путаются. Плюс многошаговые вопросы ("Где родился основатель компании, которая выпустила первый iPhone?") сжимаются в один вектор, и теряются промежуточные шаги.

Метод решает обе проблемы: со стороны документов — LLM генерирует 10+ вопросов из каждого куска ("Кто основал компанию X?", "Когда появилась компания X?"), обогащая представление. Со стороны запроса — сложный вопрос разбивается на подвопросы ("Кто выпустил первый iPhone?" → "Где родился Стив Джобс?"). Теперь поиск идёт question-to-question — структурно симметрично.


🔬

Схема метода

ОФЛАЙН (индексация документов):

ШАГ 1: Разбить документы на чанки (800 символов, перекрытие 200)
ШАГ 2: Для каждого чанка → Qwen3-8B генерирует ~10 answerable questions (AQ)
ШАГ 3: AQ эмбеддятся через E5-encoder → индекс вопросов (каждый AQ привязан к исходному чанку)

ОНЛАЙН (обработка запроса):

ШАГ 1: Сложный вопрос → LLM (GPT-4o/Gemini/LLaMA) → последовательность подвопросов
ШАГ 2: Каждый подвопрос эмбеддится → поиск top-100 похожих AQ → получение связанных чанков
ШАГ 3: Чанки реранкируются кросс-энкодером относительно ОРИГИНАЛЬНОГО вопроса → top-7
ШАГ 4: Top-7 чанков + оригинальный вопрос → LLM генерирует ответ

🚀

Пример применения

⚠️ Зона применения: Сложные вопросы, требующие информации из разных частей документов. Не для простых фактов ("столица Франции") — декомпозиция не нужна.

Задача: У тебя коллекция разборов стартапов из подкастов вроде "Деструктивный пидкастинг". Хочешь понять: "Какие факторы успеха у компаний, которые поднимали раунды от Runa Capital и вышли в прибыль за 2 года?"

Промпт (декомпозиция вопроса):

Разбей этот вопрос на последовательность простых подвопросов, каждый из которых можно ответить отдельно:

"Какие факторы успеха у компаний, которые поднимали раунды от Runa Capital и вышли в прибыль за 2 года?"

Результат (декомпозиция): Модель выдаст 2-3 подвопроса:

  1. "Какие компании поднимали раунды от Runa Capital?"
  2. "Какие из этих компаний вышли в прибыль за 2 года?"
  3. "Какие факторы успеха упоминаются для этих компаний?"

Промпт (генерация AQ из документа):

Из этого текста сгенерируй 10 конкретных вопросов, на которые можно ответить ТОЛЬКО из этого текста, без внешних знаний:

[кусок интервью: "Фаундер рассказал, что ключевым было решение сфокусироваться на B2B вместо B2C после первого пивота..."]

Результат (AQ):

  • "На чём сфокусировалась компания после пивота?"
  • "Какую аудиторию выбрали: B2B или B2C?"
  • "Что стало ключевым решением для фаундера?"

Дальше: Эти сгенерированные вопросы эмбеддятся. Когда приходит подвопрос "Какие факторы успеха...", система ищет похожие AQ ("Что стало ключевым...") → находит нужные куски → реранкирует → собирает финальный ответ.


🧠

Почему это работает

Слабость LLM: Эмбеддинг-модели обучены сопоставлять тексты, но вопросы и документы структурно разные — как сравнивать телеграмму с романом. Вопрос: "Где?", "Кто?", "Когда?" — короткий, прямой. Документ: повествование, контекст, детали. Даже если семантически связаны, синтаксис режет — эмбеддинг ловит форму, не только смысл.

Сильная сторона LLM: Модель умеет порождать вопросы из текста — это требует понимания что важно, что спрашивается, как информация связана. Когда LLM генерирует 10 вопросов из чанка, она переваривает текст с разных углов: что явно сказано, что подразумевается, что можно спросить. Это не просто перефразировка — это семантическая карта документа через призму вопросов.

Как метод использует это: Вместо "сырой текст vs вопрос" делаем "вопрос vs вопрос". Обе стороны теперь в одном формате. Плюс: декомпозиция разбивает сложный многошаговый вопрос на атомарные шаги, каждый из которых ищет своё. Это как перейти от поиска "где родился основатель компании, которая сделала X" к цепочке: "кто сделал X?" → "где он родился?" — каждый шаг целевой, без размывания в один вектор.

Рычаги управления:

  • Количество AQ (m): По умолчанию ~10 вопросов на чанк. Больше → больше покрытие, но больше шума. Меньше → быстрее, но можешь пропустить нюансы.
  • Размер чанка и overlap: 800 символов с перекрытием 200 — баланс между контекстом и гранулярностью. Меньше чанк → больше точность, но теряется контекст. Больше → лучше контекст, но хуже таргетинг.
  • k1 (candidates) и k2 (final): k1=100 AQ кандидатов, k2=7 финальных чанков. Уменьши k2 до 5 для экономии токенов, увеличь до 10-15 если есть запас и хочешь больше контекста (работает лучше с Gemini, хуже с LLaMA).
  • Декомпозиция ON/OFF: На простых датасетах (HotpotQA) декомпозиция даёт меньше выигрыша — можно пропустить. На сложных (MuSiQue, 2WikiMultiHopQA) — обязательна.

📋

Шаблон промпта

📌

Шаг 1: Генерация Answerable Questions (офлайн)

Из этого текста сгенерируй {количество_вопросов} конкретных вопросов, на которые можно ответить ТОЛЬКО из этого текста, без привлечения внешних знаний.

Требования:
- Вопросы должны быть фактическими и конкретными
- Каждый вопрос должен иметь чёткий ответ в тексте
- Используй явные отсылки к существительным и событиям из текста
- Не дублируй вопросы, делай их разнообразными
- Покрывай и явную информацию, и то что подразумевается

ТЕКСТ:
{текст_чанка}

Выведи вопросы списком, каждый с новой строки.

Пояснение: {количество_вопросов} — обычно 10; {текст_чанка} — кусок документа 600-1000 символов.


📌

Шаг 2: Декомпозиция сложного вопроса (онлайн)

Разбей этот сложный многошаговый вопрос на последовательность простых одношаговых подвопросов.

Требования:
- Каждый подвопрос должен быть независимым и фокусированным
- Подвопросы должны логически вести к ответу на исходный вопрос
- Формулируй так, чтобы на каждый можно было найти прямой ответ в документах
- Количество подвопросов: от 2 до 5, в зависимости от сложности

ИСХОДНЫЙ ВОПРОС:
{вопрос_пользователя}

Выведи подвопросы списком, в порядке рассуждения.

Пояснение: {вопрос_пользователя} — многошаговый вопрос ("Где родился основатель компании, которая выпустила первый смартфон на Android?").


🧠

Почему это работает: детали механики

Структурное выравнивание — ключ. Классический RAG делает так:

Запрос (20 слов) → Embedding → [vector]
Документ (500 слов) → Embedding → [vector]
Сравнение: cosine_similarity([vector_query], [vector_doc])

Проблема: запрос и документ разные по природе. Это как сравнивать телеграмму "СРОЧНО ПРИЕЗЖАЙ" с романом "Война и мир" — суть может быть связана, но форма убивает сигнал. Эмбеддинг-модели улавливают не только смысл, но и структуру: длину предложений, стиль, синтаксис.

Question-to-Question Retrieval переворачивает:

Запрос (20 слов) → Decomposition → [Q1, Q2, Q3] → Embedding → [v1, v2, v3]
Документ (500 слов) → AQ Generation → [AQ1...AQ10] → Embedding → [w1...w10]
Сравнение: cosine_similarity(v_i, w_j) — оба вопросы!

Теперь обе стороны симметричны: короткие, вопросительные, целевые. Эмбеддинг ловит смысл без структурного шума.

Почему генерация AQ обогащает документ:

Когда LLM генерирует вопросы из текста, она делает cognitive processing:

  1. Извлечение фактов: "Что явно сказано?"
  2. Вывод связей: "Что подразумевается?"
  3. Формулировка запросов: "Как бы человек это спросил?"

Это не перефразировка (summarization/paraphrasing меняют слова, но сохраняют структуру). Это реструктуризация — текст превращается в карту возможных вопросов. Каждый AQ — это семантический хук, за который зацепится пользовательский запрос.

Эксперименты показали:

  • Document embeddings: Baseline, слабо
  • Summary embeddings: +небольшой прирост (сжатие помогает, но теряется детализация)
  • Paraphrase embeddings: +минимальный прирост (слова меняются, структура остаётся)
  • AQ embeddings: +драматический скачок (структура меняется под вопросы)

Данные из статьи (F1-score, GPT-4o):

  • 2WikiMultiHopQA: Document 38.95 → AQ 67.29 (+28.34)
  • MuSiQue: Document 29.26 → AQ 54.08 (+24.82)

⚠️

Ограничения

⚠️ Латентность: Множественные подвопросы = множественные поиски + реранкинг. Для сложных вопросов время ответа увеличивается в 2-3 раза по сравнению с direct retrieval. Если нужна скорость — упрости декомпозицию или используй кэширование.

⚠️ Зависимость от качества AQ: Если LLM генерирует нерелевантные или слишком общие вопросы, индекс зашумляется. Qwen3-8B справляется хорошо, но на специфичных доменах (медицина, юриспруденция) может потребоваться fine-tuning или few-shot промптинг с примерами.

⚠️ Офлайн индексация: Нужно прогнать LLM по всем документам один раз для генерации AQ. Это не бесплатно — для корпуса в 10,000 документов (по 5 чанков каждый) это 50,000 генераций. С Qwen3-8B локально — ок, через API — $$.

⚠️ Не для простых вопросов: На односложных запросах ("Кто президент России?") декомпозиция избыточна, а AQ не даёт преимущества. Метод выигрывает на многошаговых и сложных запросах, где нужна цепочка рассуждений.

⚠️ Требует инфраструктуры для полной реализации: Двухэтапный поиск (эмбеддинги + реранкинг) требует vector database и cross-encoder. Это не просто "скопировал промпт в чат". НО принципы (декомпозиция, question-centric thinking) применимы вручную.


🔍

Как исследовали

Команда протестировала метод на трёх хардкорных бенчмарках для многошаговых вопросов из LongBench: HotpotQA, 2WikiMultiHopQA и MuSiQue. Эти датасеты злые — требуют собрать ответ из кусков, разбросанных по разным документам. Full-wiki setup, то есть модель ищет в полной Википедии, не в заранее отфильтрованных 10 документах.

Сравнивали с No-RAG (LLM сам по себе), Self-RAG (модель сама решает когда искать), Query Rewriting (переформулировка запроса), ReSP (итеративное саммаризование), RAPTOR, LongRAG и MacRAG (свежий baseline с теми же LLM). Использовали три LLM: GPT-4o, Gemini-1.5-Pro, LLaMA-3.1-8B-inst. Метрика — F1-score (насколько ответ совпадает с reference).

Что удивило: AQ-эмбеддинги дали драматический скачок по сравнению с прямыми document embeddings — не 2-5%, а +20-30 F1 points. Это огромный gap. Ожидали улучшение, но не такое. Похоже, структурный мисматч вопрос-документ убивал качество сильнее, чем думали.

Интересная деталь: На HotpotQA декомпозиция давала меньший выигрыш, чем на MuSiQue. Почему? Посмотрели статистику декомпозиций — HotpotQA разбивается в среднем на 2.21 подвопроса (узкое распределение), а MuSiQue и 2WikiMultiHopQA — на 2.31-2.66 (шире разброс, до 6 подвопросов). HotpotQA проще структурно, меньше шагов, поэтому от разбивки меньше пользы.

Вывод из эксперимента: Унифицированная генерация (весь контекст сразу) билa последовательную (ответ на каждый подвопрос отдельно). GPT-4o и Gemini любят длинный контекст — могут reasoning делать лучше. LLaMA-3.1-8B наоборот, страдает от "Lost in the Middle" — чем больше чанков, тем хуже. Оптимальный k2 (сколько чанков в финал): GPT-4o любит 7-10, Gemini тянет до 15, LLaMA лучше 5.

Почему summary/paraphrase не сработали? Саммари сжимает, но теряет детали. Парафраз переформулирует, но структура остаётся narrative. AQ реструктурирует в вопросы — вот где магия. Это не про слова, это про форму мысли.


🔗

Ресурсы

  • Transforming Questions and Documents for Semantically Aligned Retrieval-Augmented Generation (Seokgi Lee, Seoul National University)
  • Бенчмарки: HotpotQA (Yang et al. 2018), 2WikiMultiHopQA (Ho et al. 2020), MuSiQue (Trivedi et al. 2022) из LongBench (Bai et al. 2024)
  • Модели: Qwen3-8B для AQ генерации, E5-multilingual для эмбеддингов, ms-macro-MiniLM-L-12-v2 для реранкинга

💡

Адаптации и экстраполяции

📌

💡 Адаптация для личной базы знаний

Применение: Вместо RAG-системы с кодом, используй вручную в Claude Projects или ChatGPT с Memory.

Workflow:

  1. Офлайн подготовка: Загрузи документ → попроси сгенерировать 10 вопросов из каждого раздела → сохрани в отдельный файл или чат.
  2. Онлайн поиск: Когда нужен ответ, открой файл с вопросами → визуально сканируй или используй Ctrl+F по ключевым словам → найди похожий вопрос → вернись к исходному чанку.

Промпт для генерации AQ (адаптация для ручного использования):

Я буду загружать части документа. Для каждой части сгенерируй 10 конкретных вопросов, которые можно задать про этот текст. Формулируй как если бы человек искал информацию. Вопросы должны быть:
- Конкретными и фактическими
- Покрывать и явное, и скрытое
- Разнообразными (кто, что, где, когда, почему, как)

После вопросов укажи номер части для ссылки.

---
ЧАСТЬ 1:
{текст}

Вопросы для части 1:
[генерация]

---
ЧАСТЬ 2:
{текст}

Вопросы для части 2:
[генерация]

Это создаёт ручной индекс вопросов, привязанных к частям документа. Не нужен код — просто структурированный файл.


📌

🔧 Техника: Декомпозиция + Chain-of-Thought

Принцип метода — разбивать сложное на простое — можно усилить CoT на каждом шаге.

Стандартная декомпозиция:

Вопрос: "Какие факторы успеха у компаний, которые поднимали раунды от X?"

Подвопросы:
1. Какие компании поднимали раунды от X?
2. Какие из них успешны?
3. Какие факторы упоминаются?

Декомпозиция + CoT:

Вопрос: "Какие факторы успеха у компаний, которые поднимали раунды от X?"

Подвопросы с рассуждением:

1. "Какие компании поднимали раунды от X?"
 Рассуждение: Сначала найти список компаний-портфелио.

2. "Какие критерии успеха применимы? (выручка/прибыль/рост/exit?)"
 Рассуждение: Уточнить определение успеха до поиска.

3. "Какие из компаний соответствуют этим критериям?"
 Рассуждение: Фильтрация списка по метрикам.

4. "Какие общие факторы упоминаются в их историях?"
 Рассуждение: Поиск паттернов (команда, тайминг, продукт, рынок).

Добавление рассуждения делает декомпозицию прозрачнее и помогает модели не пропустить неявные шаги.


📌

💡 Экстраполяция: Question-First Document Creation

Принцип метода наоборот: не создавай документ, создавай вопросы, которые он должен отвечать.

Сценарий: Пишешь knowledge base статью или FAQ.

Стандартный подход:

  1. Пишешь текст
  2. Потом пытаешься индексировать/структурировать

Question-First подход:

  1. Сначала генеришь вопросы, которые пользователи будут задавать
  2. Потом пишешь текст, отвечающий на эти вопросы
  3. Структура документа = структура вопросов

Промпт:

Мне нужна статья про {тема}. 

Шаг 1: Сгенерируй 20 вопросов, которые человек мог бы задать про эту тему. Покрой:
- Базовые определения
- Практическое применение
- Частые ошибки
- Продвинутые нюансы

Шаг 2: Для каждого вопроса напиши краткий ответ (2-3 предложения).

Шаг 3: Сгруппируй вопросы по темам и создай структуру статьи.

Результат: Документ, оптимизированный под поиск с самого начала, потому что написан через призму вопросов.


📋 Дайджест исследования

Ключевая суть

Классический RAG работает как сравнение телеграммы с романом. Вопрос пользователя: "Кто основал X?" (20 слов). Документ: "Компания X была основана в 1995 году предпринимателем Ивановым..." (500 слов). Семантически связаны, но структурно разные — эмбеддинг ловит форму, не только смысл. Метод решает проблему структурного несоответствия: документы превращаются в вопросы, сложный запрос разбивается на подвопросы — теперь поиск идёт вопрос-к-вопросу, а не вопрос-к-тексту. Результат: с 39% до 67% точности на сложных многошаговых запросах.

Принцип работы

Офлайн: из каждого куска документа LLM генерирует 10 answerable questions (AQ) — вопросы, на которые этот кусок может ответить. Эти вопросы индексируются. Онлайн: сложный вопрос пользователя разбивается на цепочку простых подвопросов. Поиск идёт через сравнение подвопросов с заранее сгенерированными AQ. Вместо "вопрос vs текст" делаем "вопрос vs вопрос" — обе стороны в одном формате, без структурного шума.

Почему работает

Эмбеддинг-модели улавливают не только смысл, но и структуру: длину предложений, стиль, синтаксис. Вопрос (короткий, прямой) и документ (длинный, повествовательный) структурно разные — как телеграмма "СРОЧНО ПРИЕЗЖАЙ" vs роман "Война и мир". Симметричность формата убирает структурный шум. Когда LLM генерирует вопросы из текста, она делает когнитивную обработку: извлекает факты, выводит связи, формулирует как спросил бы человек. Это не перефразировка — это семантическая карта документа через призму вопросов. Каждый AQ — хук, за который зацепится запрос. Данные: на датасете 2WikiMultiHopQA точность с 38.95% до 67.29% (+28.34 пункта). На MuSiQue: с 29.26% до 54.08% (+24.82).

Когда применять

Сложные многошаговые вопросы, требующие информации из разных частей документов → конкретно для баз знаний, подкастов, научных статей, корпоративных wiki, особенно когда один вопрос требует цепочки рассуждений ("Где родился основатель компании, которая выпустила первый iPhone?"). НЕ подходит для простых фактов ("столица Франции") — декомпозиция избыточна, выигрыша нет.

Мини-рецепт

1. Генерация AQ (офлайн): Разбей документы на куски 600-1000 символов. Для каждого куска через LLM сгенерируй 10 конкретных вопросов, на которые можно ответить ТОЛЬКО из этого текста. Требования: фактические, конкретные, разнообразные — покрывай явную информацию и подразумеваемую.

2. Декомпозиция запроса (онлайн): Сложный вопрос разбей на цепочку 2-5 простых подвопросов. Каждый подвопрос должен быть независимым и вести к ответу на исходный. Формулируй так, чтобы на каждый можно было найти прямой ответ.

3. Поиск и реранкинг: Каждый подвопрос ищет похожие AQ в индексе (top-100 кандидатов). Связанные куски реранкируются относительно оригинального вопроса → финальный top-7. Эти куски идут в LLM для генерации ответа.

4. Настройка под задачу: Количество AQ (10 по умолчанию) — больше = шире покрытие, но больше шума. Финальных кандидатов (k2=7) — уменьши до 5 для экономии токенов, увеличь до 10-15 если нужен широкий контекст.

Примеры

[ПЛОХО] : Какие факторы успеха у компаний из портфеля Runa Capital, которые вышли в прибыль за 2 года? — сложный вопрос сразу в RAG, модель плывёт на длинном запросе, ищет по сырому тексту.
[ХОРОШО] : Декомпозиция вопроса: Разбей на подвопросы: "Какие факторы успеха у компаний из портфеля Runa Capital, которые вышли в прибыль за 2 года?" Результат: 1. Какие компании поднимали раунды от Runa Capital? 2. Какие из этих компаний вышли в прибыль за 2 года? 3. Какие факторы успеха упоминаются для этих компаний? Офлайн генерация AQ из куска интервью: Из текста сгенерируй 10 вопросов, на которые можно ответить ТОЛЬКО из этого текста: [кусок про пивот компании с B2C на B2B] Результат AQ: "На чём сфокусировалась компания после пивота?", "Какую аудиторию выбрали: B2B или B2C?", "Что стало ключевым решением?" Теперь подвопросы ищут похожие AQ → находят нужные куски → модель собирает ответ из релевантного контекста.
Источник: Transforming Questions and Documents for Semantically Aligned Retrieval-Augmented Generation
ArXiv ID: 2508.09755 | Сгенерировано: 2026-01-12 02:17

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с