0Pricing
AI Agents · Урок

HyDE: гипотетические эмбеддинги документов

Сгенерируйте с помощью LLM вымышленный «идеальный» ответ, создайте для него эмбеддинг и выполняйте поиск по нему — это эффективнее эмбеддингов коротких запросов.

«HyDE: гипотетические эмбеддинги документов» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Проблема эмбеддингов запросов

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

  • Запрос: «почините мою клавиатуру»
  • Документ: «Если клавиши механической клавиатуры заедают, можно очистить переключатели изопропиловым спиртом...»

Векторы семантически удалены друг от друга, поэтому поиск не находит документ.

Идея HyDE

HyDE = эмбеддинги гипотетического документа (Gao и др., 2022).

  1. Попросите LLM написать фиктивный «идеальный ответ» на запрос
  2. Создайте эмбеддинг фиктивного ответа, а не запроса
  3. Используйте этот вектор для поиска в реальном наборе документов

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

Гипотетический ответ похож на настоящий документ: у него схожие словарь и структура. Поэтому его эмбеддинг находится рядом с эмбеддингами реальных документов, и поиск надёжнее находит нужные материалы.

Implementation

def hyde_search(query, k=5):
    # Step 1: hallucinate an answer
    hypo_answer = llm.invoke(f'Please write a passage to answer the question: {query}').content
    # Step 2: embed it
    vec = embed(hypo_answer)
    # Step 3: retrieve
    return vector_db.query(vec, k=k)

Ничего страшного, если ответ окажется неверным

Гипотетический ответ HyDE может содержать фактические ошибки — это нормально. Мы используем его только для построения эмбеддинга и поиска. Затем найденные документы REAL используются для создания окончательного ответа.

Code Example with LangChain

from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI

embeddings = HypotheticalDocumentEmbedder.from_llm(
    ChatOpenAI(),
    OpenAIEmbeddings(),
    'web_search'   # built-in prompt template
)
vector = embeddings.embed_query('How do I fix a sticky keyboard?')

Компромисс между стоимостью и качеством

HyDE требует одного дополнительного обращения к LLM для каждого запроса. Это оправданно, когда:

  • Формулировка запроса сильно отличается от формулировок в документах
  • Полнота поиска является узким местом
  • В наборе документов есть технические тексты, которые пользователь пересказывает своими словами

HyDE с несколькими образцами

Сгенерируйте N гипотетических ответов, создайте эмбеддинг каждого, извлеките K лучших результатов для каждого и объедините результаты. Это дороже, но повышает полноту поиска для сложных запросов.

hypos = [llm.invoke(...).content for _ in range(3)]
vecs = [embed(h) for h in hypos]
results = set()
for v in vecs:
    results.update(vector_db.query(v, k=5))

Объединение HyDE с повторным ранжированием

HyDE обеспечивает полноту поиска, а кросс-энкодер — точность:

  1. HyDE извлекает 50 лучших результатов
  2. Кросс-энкодер повторно ранжирует их и оставляет 5 лучших
  3. LLM формирует ответ на основе пяти лучших

Когда НЕ следует использовать HyDE

  • Запросы уже соответствуют языку документов, например в разделе часто задаваемых вопросов
  • Пути, критичные к задержке
  • Очень небольшие наборы документов, где достаточно обычного поиска

HyDE для кода

Для поиска по коду: сгенерируйте вымышленную функцию, которую ищет пользователь, создайте её эмбеддинг и найдите настоящие функции.

code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))

Варианты: пошаговое обобщение запроса

Связанный метод: сначала попросите модель вывести более общий вопрос («Как очистить клавиатуры?» → «Какой общий способ очистки подходит для механических клавиатур?»), создайте для него эмбеддинг, а затем выполните поиск.

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

Почему HyDE выполняет поиск лучше, чем построение эмбеддинга исходного запроса?

Повторение

HyDE: сгенерируйте вымышленный ответ, создайте его эмбеддинг THAT и выполните поиск. Метод требует одного дополнительного обращения к LLM, но улучшает поиск для сложных, перефразированных и технических запросов.

Часто задаваемые вопросы

Урок «HyDE: гипотетические эмбеддинги документов» бесплатный?

Да — полный текст урока «HyDE: гипотетические эмбеддинги документов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «HyDE: гипотетические эмбеддинги документов»?

Сгенерируйте с помощью LLM вымышленный «идеальный» ответ, создайте для него эмбеддинг и выполняйте поиск по нему — это эффективнее эмбеддингов коротких запросов. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «HyDE: гипотетические эмбеддинги документов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Переранжирование с помощью кросс-энкодеров
  2. HyDE: гипотетические эмбеддинги документов
  3. Многовекторный поиск (ColBERT)
  4. Оценка RAG (RAGAS, Recall@K)
← Назад к AI Agents