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.

HippoRAG:基于长时记忆的多跳知识检索框架

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 :

  1. 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
  1. Installation d'HippoRAG
    Fonctionne dans un environnement activé :
pip install hipporag
  1. 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 :

  1. Préparer le document
    Créez une liste de documents, par exemple :
docs = [
"张三是一名医生。",
"李四住在北京。",
"北京是中国的首都。"
]
  1. 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)
    
  2. fichier d'index
    Documents d'entrée pour l'indexation :

    hipporag.index(docs=docs)
    
  3. 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 :

  1. 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
    
  2. 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')
    
  3. 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.

  1. Préparation du jeu de données
    Téléchargez le jeu de données depuis GitHub ou HuggingFace (ex. sample.json), insérer le reproduce/dataset Catalogue.
  2. 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
    
  3. 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 :

  1. 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
    
  2. 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-être gpu-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
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...