HyDE: embedding di documenti ipotetici
Generi con l'LLM una risposta fittizia "ideale", ne crei l'embedding e cerchi a partire da quello: è più efficace degli embedding di query brevi.
HyDE: embedding di documenti ipotetici è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Il problema degli embedding delle query
Le query degli utenti sono generalmente brevi e non assomigliano affatto ai documenti che si desidera recuperare.
- Query: «aggiusta la mia tastiera»
- Documento: «Se i tasti della tastiera meccanica rimangono incastrati, può pulire gli switch con alcol isopropilico...»
I vettori sono semanticamente distanti; il recupero non trova il documento.
L'idea alla base di HyDE
HyDE = Hypothetical Document Embeddings (Gao et al. 2022).
- Chieda all'LLM di scrivere una «risposta ideale» fittizia alla query
- Calcoli l'embedding della risposta fittizia, non della query
- Utilizzi quel vettore per cercare nel corpus reale
Perché funziona
La risposta ipotetica assomiglia a un documento reale, con vocabolario e struttura simili. Il suo embedding si trova vicino agli embedding dei documenti reali, quindi il recupero li individua in modo più affidabile.
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)Non importa se la risposta è errata
La risposta ipotetica di HyDE potrebbe contenere errori fattuali: non è un problema. Si utilizza il suo embedding solo per il recupero. I documenti REALI recuperati vengono poi utilizzati per generare la risposta finale.
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?')Compromesso dei costi
HyDE richiede una chiamata aggiuntiva all'LLM per ogni query. Ne vale la pena quando:
- La formulazione della query è molto diversa da quella dei documenti
- Il recall del recupero è il collo di bottiglia
- Il corpus contiene testi tecnici che l'utente parafrasa
HyDE con più campioni
Generi N risposte ipotetiche, calcoli l'embedding di ciascuna, recuperi i primi K risultati per ognuna e unisca i risultati. È più costoso, ma aumenta il recall per le query complesse.
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))Combinare HyDE con il reranking
HyDE per il recall, cross-encoder per la precisione:
- HyDE recupera i primi 50
- Il cross-encoder li riordina fino ai primi 5
- L'LLM risponde utilizzando i primi 5
Quando NON utilizzare HyDE
- Query che corrispondono già al linguaggio dei documenti, come le FAQ
- Percorsi in cui la latenza è critica
- Corpus molto brevi in cui il recupero ingenuo funziona
HyDE per il codice
Per la ricerca nel codice: immagini la funzione che l'utente sta cercando, ne calcoli l'embedding e recuperi le funzioni reali.
code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))Varianti: prompting step-back
Tecnica correlata: chieda al modello di ricavare prima una domanda più generale («Come posso pulire le tastiere?» -> «Quale metodo generale di pulizia si applica alle tastiere meccaniche?»), ne calcoli l'embedding e poi esegua il recupero.
Perché HyDE funziona
Che cosa permette a HyDE di recuperare risultati migliori rispetto all'embedding della query grezza?
Riepilogo
HyDE: generi una risposta allucinata, calcoli l'embedding di QUELLA risposta ed esegua la ricerca. Richiede una chiamata aggiuntiva all'LLM, ma migliora il recupero per query difficili, parafrasate o tecniche.
Impara AI Agents con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 60
- Lezioni
- 239
Domande Frequenti
La lezione «HyDE: embedding di documenti ipotetici» è gratuita?
Sì — il testo completo di «HyDE: embedding di documenti ipotetici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «HyDE: embedding di documenti ipotetici»?
Generi con l'LLM una risposta fittizia "ideale", ne crei l'embedding e cerchi a partire da quello: è più efficace degli embedding di query brevi. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «HyDE: embedding di documenti ipotetici»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Riordinamento con cross-encoder
- HyDE: embedding di documenti ipotetici
- Retrieval multi-vettore (ColBERT)
- Valutazione RAG (RAGAS, Recall@K)