TL;DR
Исследование показывает, что качество ответа LLM зависит не от "галлюцинаций", а от того, какие документы система нашла перед генерацией ответа. Команда из Ankura Consulting сравнила 5 методов поиска (retrieval) в Azure AI Search на 290 тысячах юридических документов: keyword (поиск по словам), vector (поиск по смыслу), hybrid (комбинация), semantic и hybrid-semantic (с переранжированием результатов).
Главная находка: ни один метод не работает универсально. Keyword-поиск находит точные термины (номера дел, имена), но пропускает смысловые совпадения. Vector-поиск ловит концептуально близкое, но теряет редкие или специфичные слова. Semantic reranking (переупорядочивание результатов по смыслу) иногда поднимает наверх нерелевантный текст — LLM получает не те документы и даёт уверенный, но неверный ответ. Например, в эксперименте модель приписала позицию Джорджа Буша по визам H1-B его брату Джебу — retrieval система выдала речь не того Буша, а LLM не отличила источник.
Для точных терминов (case number, nickname) нужен keyword-поиск или кавычки в запросе. Для концептуальных вопросов ("как климатическая политика Джеба отличалась от Джорджа") работает vector или hybrid. Semantic reranking улучшает релевантность, но может поднять касательный текст, если в исходных результатах нет прямого ответа — это создаёт риск ошибочной атрибуции фактов.
Схема исследования
Это не техника промптинга, а анализ инфраструктуры. Схема RAG-пайплайна:
ИНДЕКСАЦИЯ:
Документы → Чанкинг (2000 токенов, overlap 500) → Эмбеддинги → Индекс
ПОИСК (5 методов):
1. Keyword: точное совпадение слов
2. Keyword-Semantic: keyword + переранжирование по смыслу
3. Vector: поиск по смысловой близости эмбеддингов
4. Hybrid: keyword + vector вместе
5. Hybrid-Semantic: keyword + vector + переранжирование
ГЕНЕРАЦИЯ:
Топ-5 чанков из 50 найденных → LLM (GPT-4o mini) → Ответ
Каждый метод тестировали на одних промптах. Сравнивали: какие документы нашлись, что ответила модель, где ошиблась.
Ключевые находки
1. Keyword vs Vector — разные слепые зоны:
При запросе "What is case no. TO 98-103033, 32?" keyword-методы нашли правильные email'ы, vector-метод провалился — эмбеддинг не кодирует специфичные алфавитно-цифровые строки как значимый признак.
При запросе "What were the projected volumes of orange production in Florida?" наоборот: vector нашёл конкретные прогнозы урожая, keyword не нашёл — точные слова из запроса отсутствовали в документах с цифрами.
2. Semantic reranking — улучшает И портит:
Запрос: "Was D&B Television doing business in West Palm Beach?"
Keyword и vector пропустили email, где написано "D&B conducts business in South Florida". Semantic reranking распознал связь "West Palm Beach" = "South Florida" и поднял этот email наверх — LLM дала правильный ответ.
НО на запросе "What were Jeb Bush's views on H-1B visa?" semantic reranking поднял фрагмент речи Джорджа Буша (президента), а LLM приписала эту позицию Джебу Бушу (губернатору) — система не различает источник внутри похожих по теме текстов.
3. Кавычки меняют поведение retrieval:
"Who is T-Squred?" — keyword и vector не нашли (это nickname).
"Who is 'T-Squred'?" — keyword в кавычках нашёл точное совпадение.
Semantic reranking помог в обоих случаях.
4. Уточнения в промпте снижают ошибки атрибуции:
После двух неудачных попыток исследователи добавили: "Please ensure that all responses reflect Jeb Bush's own views specifically, not those of other individuals or political figures, including President Bush."
Теперь semantic reranking не поднял речь Джорджа Буша — LLM получила другой набор чанков и не сделала ошибочную атрибуцию.
Применимые принципы для обычного чата
Ты не управляешь retrieval напрямую в ChatGPT/Claude, но понимание логики помогает лучше формулировать запросы:
1. Заключай уникальные термины в кавычки
Если ищешь точное имя, номер, название — используй кавычки.
Пример:
❌ Найди информацию про компанию ИП Рога и Копыта
✅ Найди информацию про компанию "ИП Рога и Копыта"
Кавычки сигнализируют системе: это точный термин, не ищи синонимы.
2. Уточняй источник, если есть риск путаницы персон
В документах с похожими персонажами (два брата, два руководителя, компания и её филиал) — явно укажи кого НЕ путать.
Пример:
❌ Какую позицию Павел Дуров занимал по модерации контента?
✅ Какую позицию Павел Дуров (основатель Telegram) занимал
по модерации контента? Не путай с позицией Николая Дурова
или других участников команды.
3. Переформулируй запрос, если концептуальный поиск не сработал
Если система не нашла смысловое совпадение — добавь ключевые слова, которые точно есть в документах.
Пример:
❌ Какие прогнозы по урожаю апельсинов?
(система может не найти, если в документах написано "производство цитрусовых")
✅ Какие прогнозы по урожаю апельсинов, производству цитрусовых,
объёмам во Флориде?
Комбинируй концептуальные ("экономический эффект") и точные ("апельсины", "тонн") формулировки.
Почему retrieval важнее "галлюцинаций"
LLM не "выдумывает" — она генерирует текст на основе того, что ей подали. Если retrieval выдал фрагмент речи Джорджа Буша на запрос про Джеба Буша, модель не знает что это разные люди — она видит текст про "позицию Буша по визам" и добросовестно отвечает.
Классическая ошибка: "Модель галлюцинирует!" Реальность: Retrieval подсунул не тот документ, модель честно его пересказала.
Три слабости retrieval:
- Keyword-поиск не понимает синонимы ("West Palm Beach" ≠ "South Florida")
- Vector-поиск теряет редкие термины (nickname, case number)
- Semantic reranking поднимает близкие по теме, но не по сути тексты (речь брата вместо речи губернатора)
Сильная сторона LLM: она отлично синтезирует текст из того, что получила. Если дать правильные документы — ответ будет точным.
Как методы используют это: - Hybrid (keyword + vector) даёт два шанса найти документ — и точным словом, и по смыслу - Уточнения в промпте ("не путай с President Bush") меняют запрос к retrieval — система ищет другие документы - Кавычки форсят точное совпадение — обходят слабость vector-поиска на специфичных терминах
Ограничения
⚠️ Нет доступа к настройкам retrieval в готовых чатах: В ChatGPT, Claude, Gemini ты не выбираешь keyword/vector/hybrid. Система сама решает как искать по загруженным файлам или базе знаний. Принципы из исследования применимы только через формулировку промпта, не через настройку инфраструктуры.
⚠️ Semantic reranking — чёрный ящик: Ты не видишь какие документы система нашла и почему поднялся конкретный фрагмент. Если модель ошиблась в атрибуции — сложно понять была ли это ошибка retrieval или генерации.
⚠️ Работает на больших базах документов: Эффекты видны когда LLM выбирает из сотен-тысяч чанков. На 5-10 документах разницы почти нет — все методы найдут релевантное.
Как исследовали
Команда из Ankura Consulting взяла 290 тысяч email'ов Джеба Буша (публичный датасет, похожий на юридические кейсы). Разбили каждый документ на чанки по 2000 токенов с перекрытием 500 токенов — получилось 491 тысяча фрагментов. Закодировали эмбеддингами text-embedding-ada-002 (1536 размерность).
Для каждого из 9 промптов запустили 5 методов поиска: keyword, keyword-semantic, vector, hybrid, hybrid-semantic. Каждый метод возвращал топ-50 чанков, из них топ-5 отправляли в GPT-4o mini для генерации ответа (temperature=0 для детерминированности).
Сравнивали: какие чанки нашлись, что ответила модель, где ошиблась. Оценка качественная — вручную читали цитаты и проверяли правильность атрибуции.
Почему результаты получились такими: - Keyword провалился на концептуальных запросах потому что точные слова из промпта отсутствовали в релевантных документах — он ищет совпадения терминов, не смысла - Vector провалился на case number потому что эмбеддинг-модель не обучена кодировать специфичные ID как значимый признак — для неё "TO 98-103033" это шум - Semantic reranking ошибся с атрибуцией потому что переупорядочил результаты по смысловой близости к запросу "H1-B visa views" — речь Джорджа Буша про визы оказалась ближе по теме, чем другие тексты, хотя автор не тот
Что удивило: Semantic reranking одновременно улучшил точность (нашёл "South Florida" для "West Palm Beach") и создал новые ошибки (перепутал авторов). Это не баг — это trade-off метода: он жертвует точностью источника ради релевантности темы.
Инсайт для практики: Многие "галлюцинации" LLM — на самом деле ошибки retrieval, а не генерации. Если модель уверенно врёт — проверь не те ли документы она получила, прежде чем обвинять её в выдумывании.
Ресурсы
A Comparative Study of Retrieval Methods in Azure AI Search
Qiang Mao, Fusheng Wei, Han Qin, Jianping Zhang, Robert Neary, Nathaniel Huber-Fliflet, Charles Wang
Ankura Consulting Group, LLC (Washington, D.C., USA & London, UK)
Microsoft Learn: Develop a RAG solution – Information-Retrieval Phase
