HippoRAG : un cadre de recherche de connaissances multi-sauts basé sur la mémoire à long terme
Introduction générale
HippoRAG est un cadre open source développé par le groupe OSU-NLP de l'Université de l'État de l'Ohio, inspiré par les mécanismes de mémoire à long terme de l'être humain. Il combine les techniques de Génération Augmentée de Récupération (RAG), de Graphe de Connaissances et de PageRank Personnalisé pour aider les Grands Modèles de Langage (LLM) à intégrer de manière cohérente les connaissances provenant de documents externes.HippoRAG 2 est la dernière version d'HippoRAG, qui a fait l'objet d'une démonstration à NeurIPS 2024. Elle améliore la capacité du modèle à effectuer des recherches multi-sauts et à comprendre des contextes complexes tout en maintenant un faible coût et une faible latence. Son empreinte de ressources pour l'indexation hors ligne est inférieure à celle de solutions telles que GraphRAG. Les utilisateurs peuvent obtenir le code via GitHub et le déployer gratuitement.

Méthodologie de mise en œuvre d'HippoRAG2
Liste des fonctions
- Indexation des documentsLes services d'aide à la décision : Convertir des documents externes en structures de connaissances consultables qui permettent une mise à jour continue.
- recherche multi-sautsLes questions de l'enquête : Répondre à des questions qui nécessitent un raisonnement en plusieurs étapes en établissant des liens entre les connaissances.
- Génération Q&ALes résultats de la recherche peuvent être utilisés pour générer des réponses précises.
- Soutien au modèleLes modèles de l'OpenAI sont compatibles avec les modèles natifs de l'OpenAI et les modèles de l'OpenAI. vLLM Déploiement du LLM.
- Traitement efficaceLa recherche en ligne est rapide et les besoins en ressources d'indexation hors ligne sont faibles.
- vérification expérimentaleFournir des ensembles de données et des scripts pour faciliter la reproduction des études.
Utiliser l'aide
Processus d'installation
L'installation d'HippoRAG est simple et convient aux utilisateurs ayant une connaissance de base de Python. Voici les étapes détaillées :
- Créer un environnement virtuel
Créez un environnement Python 3.10 en entrant la commande suivante dans le terminal :
conda create -n hipporag python=3.10
Activez ensuite l'environnement :
conda activate hipporag
- Installation d'HippoRAG
Fonctionne dans un environnement activé :
pip install hipporag
- Configuration des variables d'environnement
Définissez les variables suivantes en fonction de votre matériel et de vos besoins. Par exemple, utilisez plusieurs GPU :
export CUDA_VISIBLE_DEVICES=0,1,2,3
export HF_HOME=<你的 Huggingface 目录路径>
export OPENAI_API_KEY=<你的 OpenAI API 密钥> # 使用 OpenAI 模型时需要
Activez à nouveau l'environnement pour qu'il prenne effet :
conda activate hipporag
Utiliser les modèles OpenAI
Pour démarrer rapidement avec HippoRAG ?, vous pouvez utiliser le modèle OpenAI. Voici les étapes à suivre :
- Préparer le document
Créez une liste de documents, par exemple :
docs = [
"张三是一名医生。",
"李四住在北京。",
"北京是中国的首都。"
]
- Initialisation d'HippoRAG
Définition des paramètres en Python :from hipporag import HippoRAG save_dir = 'outputs' llm_model_name = 'gpt-4o-mini' embedding_model_name = 'nvidia/NV-Embed-v2' hipporag = HippoRAG(save_dir=save_dir, llm_model_name=llm_model_name, embedding_model_name=embedding_model_name)
- fichier d'index
Documents d'entrée pour l'indexation :hipporag.index(docs=docs)
- Questions et réponses
Saisissez une question pour obtenir la réponse :queries = ["张三做什么工作?", "李四住在哪里?"] rag_results = hipporag.rag_qa(queries=queries) print(rag_results)
Le résultat peut être :
- Zhang San est médecin.
- Li Si vit à Pékin.
Utiliser le modèle de la vLLM native
Vous voulez déployer localement ? Vous pouvez exécuter HippoRAG avec vLLM. Les étapes sont les suivantes :
- Démarrer le service vLLM
Démarrer le service local dans le terminal, par exemple avec le modèle Llama :export CUDA_VISIBLE_DEVICES=0,1 export VLLM_WORKER_MULTIPROC_METHOD=spawn export HF_HOME=<你的 Huggingface 目录路径> conda activate hipporag vllm serve meta-llama/Llama-3.3-70B-Instruct --tensor-parallel-size 2 --max_model_len 4096 --gpu-memory-utilization 0.95
- Initialisation d'HippoRAG
Spécifiez l'adresse du service local en Python :hipporag = HippoRAG(save_dir='outputs', llm_model_name='meta-llama/Llama-3.3-70B-Instruct', embedding_model_name='nvidia/NV-Embed-v2', llm_base_url='http://localhost:8000/v1')
- Index et questions-réponses
L'opération est la même que pour le modèle OpenAI, il suffit de saisir le document et la question.
Fonction en vedette Fonctionnement
recherche multi-sauts
Le point fort d'HippoRAG est la recherche multi-sauts. Par exemple, si vous demandez "Li Si vit dans la capitale de quel pays ?" Le système trouvera d'abord "Li Si habite à Pékin", puis fera le lien avec "Pékin est la capitale de la Chine" et répondra "la Chine". Pour l'utiliser, il vous suffit de saisir la question :
queries = ["李四住在哪个国家的首都?"]
rag_results = hipporag.rag_qa(queries=queries)
print(rag_results)
Reproduction expérimentale
HippoRAG fournit des outils de reproduction pour valider les résultats de votre article.
- Préparation du jeu de données
Téléchargez le jeu de données depuis GitHub ou HuggingFace (ex.sample.json
), insérer lereproduce/dataset
Catalogue. - expérience de course à pied
Saisissez-le dans le terminal :python main.py --dataset sample --llm_base_url https://api.openai.com/v1 --llm_name gpt-4o-mini --embedding_name nvidia/NV-Embed-v2
- Voir les résultats
Vérifier la sortie pour vérifier l'efficacité de la recherche multi-sauts et des questions-réponses.
traitement par lots hors ligne
vLLM supporte le mode hors ligne et la vitesse d'indexation peut être multipliée par plus de 3. Le fonctionnement est le suivant :
- Exécution d'un lot hors ligne
export CUDA_VISIBLE_DEVICES=0,1,2,3 export HF_HOME=<你的 Huggingface 目录路径> export OPENAI_API_KEY='' python main.py --dataset sample --llm_name meta-llama/Llama-3.3-70B-Instruct --openie_mode offline --skip_graph
- opération de suivi
Lorsque vous avez terminé, revenez au mode en ligne pour exécuter le service vLLM et le processus Q&A.
mise en garde
- déficit de mémoireSi la mémoire du GPU est insuffisante, réglez le paramètre
max_model_len
peut-êtregpu-memory-utilization
. - ajuster les composants pendant les essaisUtilisation de la
reproduce/dataset/sample.json
Environnement de test. - Apurement des documentsEffacez les anciennes données avant de relancer l'expérience :
rm -rf outputs/sample/*
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...