HyDE : embeddings de documents hypothétiques
Générez avec le LLM une réponse « idéale » fictive, produisez son embedding et effectuez la recherche à partir de celui-ci : les résultats dépassent ceux des embeddings de requêtes courtes.
HyDE : embeddings de documents hypothétiques est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Le problème des vectorisations de requêtes
Les requêtes des utilisateurs sont généralement courtes et ne ressemblent guère aux documents que vous souhaitez récupérer.
- Requête : « réparer mon clavier »
- Document : « Si les touches de votre clavier mécanique restent enfoncées, vous pouvez nettoyer les commutateurs avec de l’alcool isopropylique… »
Les vecteurs sont sémantiquement éloignés : la récupération ne trouve pas le document.
Idée de HyDE
HyDE = Hypothetical Document Embeddings (Gao et al. 2022).
- Demandez au LLM de rédiger une « réponse idéale » fictive à la requête
- Vectorisez la réponse fictive, et non la requête
- Utilisez ce vecteur pour effectuer une recherche dans le corpus réel
Pourquoi cela fonctionne
La réponse hypothétique ressemble à un véritable document (vocabulaire et structure similaires). Sa vectorisation est proche de celles des documents réels : la récupération les trouve donc plus fiablement.
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)Ce n’est pas grave si la réponse est incorrecte
La réponse hypothétique de HyDE peut être factuellement incorrecte — ce n’est pas un problème. Nous utilisons uniquement sa vectorisation pour la récupération. Les documents réels récupérés sont ensuite utilisés pour générer la réponse 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?')Compromis lié au coût
HyDE coûte 1 appel supplémentaire au LLM par requête. Cela en vaut la peine lorsque :
- La formulation de la requête est très différente de celle des documents
- Le rappel de la récupération constitue votre goulot d’étranglement
- Le corpus contient des textes techniques que l’utilisateur reformule
HyDE multi-échantillons
Générez N réponses hypothétiques, vectorisez chacune d’elles, récupérez les K meilleurs résultats pour chacune, puis réunissez les résultats. Cette méthode est plus coûteuse, mais améliore le rappel pour les requêtes difficiles.
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))Combiner HyDE et le réordonnancement
HyDE pour le rappel, CrossEncoder pour la précision :
- HyDE récupère les 50 meilleurs résultats
- Le CrossEncoder les réordonne pour en conserver 5
- Le LLM répond en utilisant ces 5 résultats
Quand NE PAS utiliser HyDE
- Les requêtes correspondent déjà au langage des documents (FAQ)
- Les chemins d’exécution sont sensibles à la latence
- Les corpus sont très courts et une récupération naïve suffit
HyDE pour le code
Pour la recherche de code : imaginez la fonction recherchée par l’utilisateur, vectorisez-la, puis récupérez les fonctions réelles.
code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))Variantes : invite de prise de recul
Technique associée : demandez au modèle de formuler d’abord une question plus générale (« Comment nettoyer les claviers ? » → « Quelle méthode générale de nettoyage s’applique aux claviers mécaniques ? »), vectorisez-la, puis effectuez la récupération.
HyDE : pourquoi cela fonctionne
Pourquoi HyDE récupère-t-il de meilleurs résultats que la vectorisation de la requête brute ?
Récapitulatif
HyDE : imaginez une réponse, vectorisez-la, puis effectuez la recherche. Cette méthode coûte un appel supplémentaire au LLM, mais améliore la récupération pour les requêtes difficiles, reformulées ou techniques.
Questions Fréquemment Posées
La leçon « HyDE : embeddings de documents hypothétiques » est-elle gratuite ?
Oui — le texte complet de « HyDE : embeddings de documents hypothétiques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « HyDE : embeddings de documents hypothétiques » ?
Générez avec le LLM une réponse « idéale » fictive, produisez son embedding et effectuez la recherche à partir de celui-ci : les résultats dépassent ceux des embeddings de requêtes courtes. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « HyDE : embeddings de documents hypothétiques » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Reclassement avec des encodeurs croisés
- HyDE : embeddings de documents hypothétiques
- Recherche multi-vectorielle (ColBERT)
- Évaluation de RAG (RAGAS, Recall@K)