Cadre d’application IA · 02

Analyse détaillée de LlamaIndex· Connexion des données et moteur RAG (alimenter l’IA en connaissances)

Donner au LLM des connaissances externes pour rendre les questions-réponses plus précises.

FRAMEWORK MAP
Analyse détaillée de LlamaIndex
Connexion des données et moteur RAG (alimenter l’IA en connaissances)
Donner au LLM des connaissances externes pour rendre les questions-réponses plus précises.
Résumé en une phrase

LlamaIndex est comme un super bibliothécaire : il vous aide à organiser toutes sortes de données, à trouver rapidement le contenu le plus pertinent au moment où vous en avez besoin, puis à le transmettre au LLM pour générer des réponses précises.

1. Qu’est-ce que LlamaIndex ?

LlamaIndex (anciennement GPT Index) est utilisé pour construireApplication LLM axée sur les donnéesframework. Objectif principal : connecter diverses sources de données, construire des index et fournir de puissantes capacités de recherche et de génération.

Source de données
Charger des données depuis diverses sources
Construction de l’index
Organiser, découper, vectoriser
Augmentation par récupération
Récupérer rapidement les informations pertinentes
Générer une réponse
Générer des réponses en s’appuyant sur le contexte

2. Flux principal (flux RAG)

Step 1
Chargement des données
Load
Step 2
Découpage de texte
Chunk
Step 3
Vectorisation
Embed
Step 4
Construction de l’index
Index
Step 5
Recherche
Retrieve
Step 6
Générer une réponse
Generate

3. Modules principaux (Code Map)

Chargeur de données Readers

Prend en charge plusieurs sources de données (fichiers, pages web, bases de données, etc.)

Nodes nœuds (blocs de texte)

Découper les documents en nœuds sémantiquement similaires

Structure d’index des Indexes

Organiser et stocker les nœuds à l’aide de plusieurs structures d’index

Retrievers récupérateurs

Récupérer le texte pertinent depuis l’index en fonction de la requête

Moteur de requête Query Engine

Intégrer la recherche et le LLM pour générer la réponse finale

Modèles d’embeddings

Convertir le texte en représentations vectorielles

Couche de stockage

Stocker des données telles que des index, des documents et des vecteurs

Mécanisme de rappel Callbacks

Journaux, débogage, gestion des événements, etc.

4. Chargement des données (sources de données prises en charge par les Readers)

Fichier
PDFTXTDOCXPPTXCSVJSON
Page web
site webInterface APIRSSNotionGitHubYouTube
Base de données
SQLMongoDBPostgreSQLMySQLElasticsearch
Autre
SlackStockage cloud (S3, GCS)Sources de données personnalisées

5. Structure des index (Indexes)

Vector Index
Index vectoriel

Basé sur la recherche par similarité vectorielle (le plus courant)

Convient à :Questions-réponses générales, recherche sémantique
Tree Index
Index arborescent

Construire une hiérarchie adaptée aux requêtes de synthèse

Convient à :Une synthèse hiérarchique est nécessaire
List Index
Index de liste

Liste ordonnée, structure simple et intuitive

Convient à :Accès séquentiel simple
Keyword Index
Index de mots-clés

Recherche basée sur la correspondance de mots-clés

Convient à :Correspondance exacte des mots-clés
Graph Index
Index des graphes

Graphes de relations, recherche de connaissances complexes

Convient à :Relations de graphe requises

6. Recherche et requêtes (Retrieval)

Recherche Top K

Revenir aux K nœuds les plus pertinents

Recherche par seuil de similarité

Renvoyer les nœuds dont la similarité dépasse le seuil

Recherche hybride (Hybrid)

Recherche vectorielle + recherche par mots-clés

Réordonnancement (Rerank)

Utiliser un modèle de reranking pour optimiser les résultats

Compression du contexte (Compression)

Compresser le contexte tout en conservant les informations clés

7. Moteur de requête (Query Engine)

RetrieverQA

Génération de questions-réponses de base

SubQuestion

Décomposition des sous-problèmes

Router

stratégies multiples du routeur

Chat

Mode conversationnel, prend en charge les dialogues à plusieurs tours

Custom

Moteur personnalisé, extensible de manière flexible

8. Fonctionnalités principales

  • Interface unifiée : prend en charge plusieurs sources de données et LLM
  • Conception modulaire : composants composables, faciles à étendre
  • Indexation efficace : plusieurs structures d’index pour optimiser les performances de recherche
  • Optimisation RAG : génération augmentée par récupération, réduction des hallucinations
  • Prêt pour la production : prend en charge la concurrence, le traitement par lots, le cache, etc.
  • Écosystème riche : s’intègre aux bases de données vectorielles et aux outils courants

9. Exemples de code (prise en main rapide)

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.core.query_engine import RetrieverQueryEngine

# 1. Charger les données
reader = SimpleDirectoryReader("./data")
documents = reader.load_data()

# 2. Construire l’index
index = VectorStoreIndex.from_documents(documents)

# 3. Créer le moteur de requête
query_engine = index.as_query_engine(similarity_top_k=3)

# 4. Requête
response = query_engine.query("Qu’est-ce que LlamaIndex ?")
print(response)

10. Cas réels & projets open source