Что такое HyDE (Hypothetical Document Embeddings)?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
HyDE — это техника для улучшения семантического поиска в RAG-сценариях. Вместо того чтобы искать по короткому и иногда шумному запросу, модель сначала генерирует гипотетический ответ или документ, а затем строит эмбеддинг уже по этому тексту. Это часто помогает точнее находить релевантные документы, особенно когда исходный запрос сформулирован кратко или неоднозначно.
Определение:
HyDE (Hypothetical Document Embeddings) — подход, при котором LLM генерирует “псевдодокумент” или гипотетический ответ на пользовательский запрос, а затем его embedding используется для поиска похожих реальных документов в векторной базе.
Идея в том, что embedding развернутого, содержательного текста обычно лучше отражает смысл запроса, чем embedding короткой фразы. Это особенно полезно, когда в запросе мало ключевых слов, но есть намерение пользователя.
Пример использования:
Например, пользователь спрашивает: «Как уменьшить задержку в RAG-системе?»
Система по HyDE сначала просит LLM сгенерировать краткий гипотетический ответ вроде: «Задержку в RAG можно уменьшить за счет сокращения числа retrieved chunks, использования более быстрых embedding-моделей, кэширования и уменьшения размера контекста».
Затем embedding этого текста используется для поиска статей, где обсуждаются latency optimization, retrieval tuning и prompt/context reduction.
query = "Как уменьшить задержку в RAG-системе?"
hypothetical_doc = llm.generate(
f"Напиши краткий информативный ответ на вопрос: {query}"
)
query_embedding = embedder.encode(hypothetical_doc)
docs = vector_db.search(query_embedding, top_k=5)
Пояснение кода:
В этом примере код показывает общий пайплайн HyDE.
Сначала пользовательский запрос передается в LLM, которая генерирует гипотетический текст — не фактологически обязательный ответ, а скорее “хорошо сформулированный документ” по теме запроса. Затем этот текст преобразуется в embedding. После этого векторная база ищет документы, embedding которых ближе всего к embedding гипотетического текста.
То есть поиск идет не по исходной короткой фразе напрямую, а по более насыщенному семантически тексту, который помогает лучше “раскрыть” смысл запроса.
Ключевые моменты:
- HyDE улучшает retrieval за счет генерации гипотетического текста перед поиском.
- Особенно полезен для коротких, расплывчатых или терминологически бедных запросов.
- Используется в RAG как способ сделать запросный embedding более информативным.
- Обычно повышает recall, но добавляет дополнительный шаг с LLM и, соответственно, задержку.
- Это не генерация финального ответа пользователю, а промежуточный этап для поиска документов.
- Подходит, когда нужно лучше сопоставлять смысл запроса и корпуса документов без точного совпадения слов.