HyDE (Hypothetical Document Embeddings)
iaDéfinition
HyDE (Hypothetical Document Embeddings) est une technique d'amelioration du retrieval dans les pipelines RAG, proposee par Gao et al. (2022). L'idee centrale : resoudre le probleme ou les embeddings d'une courte requete utilisateur et d'un long document pertinent sont dans des regions differentes de l'espace vectoriel. HyDE utilise un LLM pour generer un 'document hypothetique' qui repondrait a la question. Le pipeline HyDE en 3 etapes : (1) L'utilisateur pose une question (ex: 'Comment fonctionne le RAG agentique ?'). (2) Un LLM genere un paragraphe hypothetique qui repondrait a cette question. (3) Cet extrait hypothetique est embede, et les chunks les plus similaires dans la base vectorielle sont recuperes. HyDE fonctionne bien car le document hypothetique partage le meme domaine lexical et semantique que les vrais documents indexes, reduisant le gap entre la representation d'une question et d'une reponse. Un LLM peut generer un document qui utilise exactement la terminologie technique presente dans la documentation a retriever. Les limites de HyDE : si le LLM hallucine dans le document hypothetique, l'embedding peut pointer vers une mauvaise region de l'espace vectoriel. HyDE n'est pas adapte aux questions factuelles tres precises (dates, chiffres, identifiants) ou le document hypothetique peut contenir de mauvaises valeurs. Pour ces cas, des alternatives comme Stepback Prompting (generer une question plus generale) ou Self-RAG (l'agent decide dynamiquement quelle strategie de retrieval utiliser) peuvent etre preferables.
Implementation HyDE avec LangChain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
llm = ChatOpenAI(model='gpt-4o-mini')
embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
vectorstore = Chroma(embedding_function=embeddings)
hyde_prompt = ChatPromptTemplate.from_template(
'Genere un passage qui repondrait a: {question}\n\nPassage (3-5 phrases):'
)
def hyde_retrieve(question, k=4):
hyp_doc = (hyde_prompt | llm).invoke({'question': question}).content
hyp_embedding = embeddings.embed_query(hyp_doc)
return vectorstore.similarity_search_by_vector(hyp_embedding, k=k)Quand utiliser HyDE
- Documentation technique dense avec termes tres specialises
- Questions conceptuelles larges (pas de reponses factuelles precisess attendues)
- Corpus dans un domaine different de la langue de la requete
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h