Maison >Périphériques technologiques >IA >Récupération récursive pour le chiffon: mise en œuvre avec Llamaindex
De nombreuses applications RAG utilisent un processus de récupération simplifié: les documents sont segmentés en morceaux, convertis en intégres et stockés dans une base de données vectorielle. Les requêtes déclenchent la récupération des documents les plus similaires du Top-K en fonction de la similitude de l'intégration. Cependant, cette approche souffre de limitations, en particulier avec des ensembles de données approfondis. L'ambiguïté des morceaux et la récupération des informations sous-optimales peuvent compromettre la précision.
La récupération récursive améliore la précision de la récupération en tirant parti de la structure des documents. Au lieu de récupérer directement des morceaux, il privilégie les résumés pertinents, par la suite en descendant vers des morceaux associés pour des résultats plus ciblés.
Cet article détaille la récupération récursive et vous guide tout au long de sa mise en œuvre à l'aide de Llamaindex.
Langchain facilite l'intégration des données externes avec les LLM via la génération augmentée (RAG).
Recursive Retrieval a expliquéMise en œuvre de la récupération récursive avec Llamaindex
Étape 1: Chargement et préparation des documents
Les documents sont chargés à l'aide de. Chaque document reçoit un titre et des métadonnées (par exemple, catégorie) pour un filtrage amélioré. Les documents chargés sont stockés dans un dictionnaire pour un accès facile. SimpleDirectoryReader
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
Étape 2: LLM et CHUNKING SETUP
Un LLM (par exemple, le GPT-4O Mini) d'Openai) est initialisé, ainsi qu'un séparateur de phrase pour la création de morceaux et un gestionnaire de rappel pour la surveillance des processus.
from llama_index.llms.openai import OpenAI from llama_index.core.callbacks import LlamaDebugHandler, CallbackManager from llama_index.core.node_parser import SentenceSplitter # ... (Code for LLM and chunking setup remains the same) ...
Étape 3: Création d'index vectorielle et génération de résumé
Un indice vectoriel est créé pour chaque document pour permettre une récupération basée sur la similitude. Les résumés générés par LLM sont stockés sous forme objets. IndexNode
from llama_index.core import VectorStoreIndex, SummaryIndex from llama_index.core.schema import IndexNode # ... (Code for building vector indices and generating summaries remains the same) ...
Étape 4: Construction d'index de vecteur de niveau supérieur
Un indice de vecteur de haut niveau est construit à partir des résumés générés, permettant la récupération initiale des résumés pertinents avant d'accéder à des morceaux détaillés.
# ... (Code for building the top-level vector index remains the same) ...
Étape 5: Configuration de la récupération récursive
Le retriever récursif est configuré, combinant le Retriever de niveau supérieur avec des retrievers de documents individuels pour faciliter le processus de récupération hiérarchique.
from llama_index.core.retrievers import RecursiveRetriever # ... (Code for setting up the recursive retriever remains the same) ...
Étape 6: requêtes de récupération récursive
Les exemples de requêtes sont exécutées à l'aide du Recursive Retriever configuré.
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
La récupération récursive, tirant parti des résumés de documents et des hiérarchies, améliore la pertinence des morceaux récupérés, en particulier avec de grands ensembles de données. Il offre une solution robuste pour créer des systèmes de récupération précis dans des environnements riches en données. Une exploration plus approfondie des techniques de chiffon peut être trouvée dans les articles de blog liés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!