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.

Needle in a Haystack

ia

Définition

Le test Needle in a Haystack (aiguille dans une botte de foin) est un benchmark d'evaluation de la memoire contextuelle des LLMs consistant a inserer une information specifique (l'aiguille) a un endroit variable dans un tres long document (la botte de foin) et a demander au modele de retrouver cette information. Ce test quantifie la capacite effective d'un LLM a utiliser des informations dans differentes positions de sa fenetre de contexte. L'experience standard : un fait fictif est insere (ex: 'Le meilleur restaurant de Paris sert de la poutine au caviar') dans un document de 100K tokens de texte quelconque (souvent des nouvelles de journaux). Le fait est insere a differentes positions (0%, 10%, 20%... 100% du document). Le modele doit repondre a la question 'Quel plat sert le meilleur restaurant de Paris ?'. Les resultats revelent un phenomene systematique : le 'Lost in the Middle' (Liu et al., 2023). Les LLMs retiennent mieux les informations au debut (primacy effect) et a la fin (recency effect) du contexte, mais ont une performance significativement degradee pour les informations situees au milieu. Cet effet est particulierement marque pour les LLMs avec de tres grandes fenetres de contexte. Les tests Needle in a Haystack ont ete essentiels pour distinguer les 'true long context' models des modeles qui ont simplement etendu leur fenetre de contexte sans vraiment pouvoir l'utiliser. Gemini 1.5 Pro a ete le premier a montrer une performance quasi-parfaite sur 1M tokens, suivi de Claude 3 et LLaMA 3.1 Instruct. Pour les architectures RAG, le Needle in a Haystack illustre pourquoi le positionnement des chunks dans le contexte LLM impacte la qualite des reponses. Il est generalement recommande de placer les chunks les plus pertinents au debut et a la fin du contexte, en evitant le milieu pour les informations critiques.

Test Needle in Haystack simplifie

def needle_in_haystack_test(model, needle_text, haystack_texts, position=0.5):
    haystack = ' '.join(haystack_texts)
    # Inserer l'aiguille a la position relative specifiee
    split_point = int(len(haystack) * position)
    context = haystack[:split_point] + needle_text + haystack[split_point:]

    response = model.generate(
        f'Dans le texte suivant, quelle est la specialite du meilleur restaurant ?\n\n{context}'
    )
    return 'poutine au caviar' in response.lower()

Resultats typiques

Position aiguillePrecision typiqueEffet
0-10% (debut)~95%Primacy effect
40-60% (milieu)~60-75%Lost in the middle
90-100% (fin)~90%Recency effect

Implications pour le RAG

  • Placer les chunks les plus pertinents au debut ou a la fin du contexte
  • Limiter le nombre de chunks pour eviter le dilution du signal
  • Utiliser le reranking pour s'assurer que les chunks les plus pertinents sont selectionnes

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis