Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

HyDE (Hypothetical Document Embeddings)

ia

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis