0Pricing
AI Agents · Lekcja

HyDE: embeddingi hipotetycznych dokumentów

Wygeneruj za pomocą LLM fikcyjną „idealną” odpowiedź, utwórz jej embedding i wyszukuj na tej podstawie — to skuteczniejsze niż embeddingi krótkich zapytań.

HyDE: embeddingi hipotetycznych dokumentów to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Problem z embeddingami zapytań

Zapytania użytkowników są zwykle krótkie i zupełnie nie przypominają dokumentów, które chcemy pobrać.

  • Zapytanie: „napraw moją klawiaturę”
  • Dokument: „Jeśli klawisze klawiatury mechanicznej się zacinają, można wyczyścić przełączniki alkoholem izopropylowym...”

Wektory są odległe semantycznie, więc pobieranie pomija dokument.

Pomysł HyDE

HyDE = Hypothetical Document Embeddings (Gao et al. 2022).

  1. Poprosić LLM o napisanie zmyślonej „idealnej odpowiedzi” na zapytanie
  2. Osadzić zmyśloną odpowiedź, a nie zapytanie
  3. Użyć tego wektora do przeszukania rzeczywistego korpusu

Dlaczego to działa

Odpowiedź hipotetyczna wygląda jak prawdziwy dokument (podobne słownictwo, podobna struktura). Jej embedding znajduje się blisko embeddingów prawdziwych dokumentów — dlatego pobieranie znajduje je bardziej niezawodnie.

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)

To, że odpowiedź jest błędna, nie stanowi problemu

Hipotetyczna odpowiedź HyDE może być błędna merytorycznie — i to nie szkodzi. Do pobierania używamy wyłącznie jej embeddingu. Następnie pobrane PRAWDZIWE dokumenty służą do wygenerowania ostatecznej odpowiedzi.

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?')

Kompromis kosztowy

HyDE wymaga 1 dodatkowego wywołania LLM na zapytanie. Warto go użyć, gdy:

  • Sformułowanie zapytania bardzo różni się od sformułowań w dokumentach
  • Wąskim gardłem jest pełność pobierania
  • Korpus zawiera teksty techniczne, które użytkownik parafrazuje

HyDE z wieloma próbkami

Należy wygenerować N odpowiedzi hipotetycznych, osadzić każdą z nich, pobrać top-K wyników dla każdej i połączyć rezultaty. Jest to droższe, ale zapewnia większą pełność pobierania w przypadku trudnych zapytań.

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))

Łączenie HyDE z rerankingiem

HyDE zapewnia pełność, a cross-encoder precyzję:

  1. HyDE pobiera 50 najlepszych wyników
  2. Cross-encoder wykonuje reranking do 5 najlepszych
  3. LLM udziela odpowiedzi na podstawie 5 najlepszych

Kiedy NIE używać HyDE

  • Zapytania są już zgodne z językiem dokumentów (FAQ)
  • Ścieżki o krytycznym znaczeniu opóźnienia
  • Bardzo małe korpusy, w których sprawdza się naiwne pobieranie

HyDE dla kodu

W przypadku wyszukiwania kodu należy wygenerować funkcję, której użytkownik szuka, osadzić ją i pobrać rzeczywiste funkcje.

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

Warianty: promptowanie typu Step-Back

Pokrewna technika: najpierw poprosić model o wyprowadzenie bardziej ogólnego pytania („Jak czyścić klawiatury?” -> „Jaka ogólna metoda czyszczenia ma zastosowanie do klawiatur mechanicznych?”), osadzić je, a następnie wykonać pobieranie.

Dlaczego HyDE działa

Dlaczego HyDE pobiera wyniki lepiej niż osadzanie surowego zapytania?

Podsumowanie

HyDE: wygenerować zmyśloną odpowiedź, osadzić ją i wyszukiwać. Wymaga jednego dodatkowego wywołania LLM, ale poprawia pobieranie w przypadku trudnych, sparafrazowanych lub technicznych zapytań.

Często zadawane pytania

Czy lekcja „HyDE: embeddingi hipotetycznych dokumentów” jest bezpłatna?

Tak — pełny tekst „HyDE: embeddingi hipotetycznych dokumentów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „HyDE: embeddingi hipotetycznych dokumentów”?

Wygeneruj za pomocą LLM fikcyjną „idealną” odpowiedź, utwórz jej embedding i wyszukuj na tej podstawie — to skuteczniejsze niż embeddingi krótkich zapytań. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „HyDE: embeddingi hipotetycznych dokumentów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Ponowne szeregowanie za pomocą cross-encoderów
  2. HyDE: embeddingi hipotetycznych dokumentów
  3. Wyszukiwanie wielowektorowe (ColBERT)
  4. Ocena RAG (RAGAS, Recall@K)
← Powrót do AI Agents