HippoRAG: un marco de recuperación de conocimientos multisalto basado en la memoria a largo plazo

Introducción general

HippoRAG es un marco de código abierto desarrollado por el grupo OSU-NLP de la Universidad Estatal de Ohio, inspirado en los mecanismos de la memoria humana a largo plazo. Combina técnicas de generación aumentada de recuperación (RAG), grafos de conocimiento y PageRank personalizado para ayudar a los modelos lingüísticos de gran tamaño (LLM) a integrar de forma coherente el conocimiento de documentos externos. HippoRAG 2 es la última versión de HippoRAG, que se ha demostrado en NeurIPS 2024. Mejora la capacidad del modelo para realizar recuperaciones multisalto y comprender contextos complejos manteniendo un bajo coste y una baja latencia. Su huella de recursos para la indexación fuera de línea es menor que la de soluciones como GraphRAG. Los usuarios pueden obtener el código a través de GitHub e implantarlo gratuitamente.

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

Metodología de aplicación de HippoRAG2

 

Lista de funciones

  • Indexación de documentos: Convierte documentos externos en estructuras de conocimiento en las que se pueden realizar búsquedas y que admiten una actualización continua.
  • búsqueda multisaltoResponde a preguntas que requieran un razonamiento de varios pasos estableciendo conexiones de conocimientos.
  • Generación de preguntas y respuestasGenerar respuestas precisas basadas en los resultados de búsqueda.
  • Modelo de asistencia: Compatible con modelos OpenAI y nativos vLLM LLM desplegado.
  • Tratamiento eficaz: Rápida recuperación en línea y escasos requisitos de recursos de indexación fuera de línea.
  • verificación experimentalProporcionar conjuntos de datos y secuencias de comandos para apoyar la repetición de estudios.

 

Utilizar la ayuda

Proceso de instalación

La instalación de HippoRAG es sencilla y adecuada para usuarios con conocimientos básicos de Python. Aquí están los pasos detallados:

  1. Creación de un entorno virtual
    Cree un entorno Python 3.10 introduciendo el siguiente comando en el terminal:
conda create -n hipporag python=3.10

A continuación, activa el entorno:

conda activate hipporag
  1. Instalación de HippoRAG
    Funciona en un entorno activado:
pip install hipporag
  1. Configuración de variables de entorno
    Configura las siguientes variables en función de tu hardware y requisitos. Por ejemplo, utilice varias GPU:
export CUDA_VISIBLE_DEVICES=0,1,2,3
export HF_HOME=<你的 Huggingface 目录路径>
export OPENAI_API_KEY=<你的 OpenAI API 密钥>  # 使用 OpenAI 模型时需要

Vuelva a activar el entorno para asegurarse de que surte efecto:

conda activate hipporag

Uso de los modelos de OpenAI

Para empezar rápidamente con HippoRAG? puedes utilizar el modelo OpenAI. Estos son los pasos:

  1. Preparar el documento
    Crea una lista de documentos, por ejemplo:
docs = [
"张三是一名医生。",
"李四住在北京。",
"北京是中国的首都。"
]
  1. Inicialización de HippoRAG
    Parametrización 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. fichero índice
    Documentos de entrada para la indexación:

    hipporag.index(docs=docs)
    
  3. Preguntas y respuestas
    Introduzca una pregunta para obtener la respuesta:

    queries = ["张三做什么工作?", "李四住在哪里?"]
    rag_results = hipporag.rag_qa(queries=queries)
    print(rag_results)
    

    La salida puede ser:

    • Zhang San es médico.
    • Li Si vive en Pekín.

Utilización del modelo vLLM nativo

¿Quieres desplegar localmente? Puede ejecutar HippoRAG con vLLM. los pasos son los siguientes:

  1. Inicio del servicio vLLM
    Iniciar servicios locales en el terminal, por ejemplo con el modelo 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. Inicialización de HippoRAG
    Especifique la dirección del servicio 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. Índice y preguntas y respuestas
    El funcionamiento es el mismo que para el modelo OpenAI, basta con introducir el documento y la pregunta.

Función destacada Operación

búsqueda multisalto

Lo más destacado de HippoRAG es la búsqueda multisalto. Por ejemplo, si preguntas "¿Li Si vive en la capital de qué país?". El sistema buscará primero "Li Si vive en Pekín", luego lo relacionará con "Pekín es la capital de China" y responderá "China". Para utilizarlo, sólo tienes que introducir la pregunta:

queries = ["李四住在哪个国家的首都?"]
rag_results = hipporag.rag_qa(queries=queries)
print(rag_results)

Reproducción experimental

¿Quiere validar los resultados de su trabajo? HippoRAG le proporciona herramientas de reproducción.

  1. Preparación del conjunto de datos
    Descargue el conjunto de datos de GitHub o de HuggingFace (p. ej. sample.json), introduzca el reproduce/dataset Catálogo.
  2. experimento en curso
    Introdúcelo en el 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. Ver resultados
    Compruebe el resultado para verificar la eficacia de la recuperación multisalto y de las preguntas y respuestas.

procesamiento de lotes fuera de línea

vLLM admite el modo fuera de línea, y la velocidad de indexación puede multiplicarse por más de 3. El funcionamiento es el siguiente:

  1. Ejecutar un lote fuera de línea
    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. operación de seguimiento
    Cuando haya terminado, vuelva al modo en línea para ejecutar el servicio vLLM y el proceso Q&A.

advertencia

  • déficit de memoria: Si la memoria de la GPU es insuficiente, ajuste el max_model_len tal vez gpu-memory-utilization.
  • ajustar los componentes durante las pruebas: Uso de reproduce/dataset/sample.json Entorno de prueba.
  • Liquidación de documentosBorra los datos antiguos antes de volver a ejecutar el experimento:
    rm -rf outputs/sample/*
    
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...