HippoRAG: un marco de recuperación de conocimientos multisalto basado en la memoria a largo plazo
Últimos recursos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 1.8K 00
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.

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:
- 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
- Instalación de HippoRAG
Funciona en un entorno activado:
pip install hipporag
- 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:
- Preparar el documento
Crea una lista de documentos, por ejemplo:
docs = [
"张三是一名医生。",
"李四住在北京。",
"北京是中国的首都。"
]
- 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)
- fichero índice
Documentos de entrada para la indexación:hipporag.index(docs=docs)
- 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:
- 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
- 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')
- Í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.
- Preparación del conjunto de datos
Descargue el conjunto de datos de GitHub o de HuggingFace (p. ej.sample.json
), introduzca elreproduce/dataset
Catálogo. - 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
- 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:
- 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
- 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 vezgpu-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
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...