Introdução geral
O HippoRAG é uma estrutura de código aberto desenvolvida pelo grupo OSU-NLP da Universidade Estadual de Ohio, inspirada nos mecanismos humanos de memória de longo prazo. Ele combina técnicas de Retrieval Augmented Generation (RAG), Knowledge Graph e Personalised PageRank para ajudar os Large Language Models (LLMs) a integrar consistentemente o conhecimento de documentos externos. O HippoRAG 2 é a versão mais recente do HippoRAG, que foi demonstrada no NeurIPS 2024. Ele aprimora a capacidade do modelo de executar a recuperação de vários saltos e a compreensão de contextos complexos, mantendo o baixo custo e a baixa latência. Ele tem uma pegada de recursos menor para indexação off-line do que soluções como o GraphRAG. Os usuários podem obter o código via GitHub e implantá-lo gratuitamente.
Metodologia de implementação do HippoRAG2
Lista de funções
- Indexação de documentosConverta documentos externos em estruturas de conhecimento pesquisáveis que suportam atualização contínua.
- pesquisa multihopResposta: Responda a perguntas que exijam raciocínio em várias etapas, fazendo conexões de conhecimento.
- Geração de perguntas e respostasGerar respostas precisas com base nos resultados da pesquisa.
- Suporte ao modeloCompatível com modelos OpenAI e nativos vLLM LLM implantado.
- Processamento eficienteRecuperação on-line rápida e baixos requisitos de recursos de indexação off-line.
- verificação experimentalFornecimento de conjuntos de dados e scripts para apoiar a replicação do estudo.
Usando a Ajuda
Processo de instalação
A instalação do HippoRAG é simples e adequada para usuários com conhecimento básico de Python. Aqui estão as etapas detalhadas:
- Criação de um ambiente virtual
Crie um ambiente Python 3.10 digitando o seguinte comando no terminal:
conda create -n hipporag python=3.10
Em seguida, ative o ambiente:
conda activate hipporag
- Instalação do HippoRAG
Funciona em um ambiente ativado:
pip install hipporag
- Configuração de variáveis de ambiente
Defina as seguintes variáveis de acordo com seu hardware e requisitos. Por exemplo, use várias GPUs:
export CUDA_VISIBLE_DEVICES=0,1,2,3
export HF_HOME=
export OPENAI_API_KEY= O # é necessário para usar os modelos OpenAI.
Ative o ambiente novamente para garantir que ele tenha efeito:
conda activate hipporag
Uso de modelos da OpenAI
Para começar a usar o HippoRAG? rapidamente, você pode usar o modelo OpenAI. Aqui estão as etapas:
- Preparar o documento
Crie uma lista de documentos, por exemplo:
docs = [
"Zhang San é um médico." ,
"Li Si mora em Pequim." ,
"Pequim é a capital da China."
]
- Inicialização do HippoRAG
Definição de parâmetros em Python:from hipporag import HippoRAG save_dir = 'outputs' llm_model_name = 'gpt-4o-mini' nome_do_modelo_de_incorporação = 'nvidia/NV-Embed-v2' hipporag = HippoRAG(save_dir=save_dir, llm_model_name=llm_model_name, embedding_model_name=embedding_model_name)
- arquivo de índice
Documentos de entrada para indexação:hipporag.index(docs=docs)
- Perguntas e respostas
Digite uma pergunta para obter a resposta:queries = ["What does Zhang San do for a living?" , "Where does Li Si live?"] rag_results = hipporag.rag_qa(queries=queries) print(rag_results)
O resultado pode ser:
- Zhang San é médico.
- Li Si mora em Pequim.
Usando o modelo vLLM nativo
Deseja fazer a implantação localmente? Você pode executar o HippoRAG com o vLLM. As etapas são as seguintes:
- Início do serviço vLLM
Iniciar serviços locais no terminal, por exemplo, com o modelo Llama:exportar CUDA_VISIBLE_DEVICES=0,1 export VLLM_WORKER_MULTIPROC_METHOD=spawn export HF_HOME= 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
- Inicialização do HippoRAG
Especifique o endereço de serviço local em 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 e perguntas e respostas
A operação é a mesma do modelo OpenAI, basta inserir o documento e a pergunta.
Operação da função em destaque
pesquisa multihop
O destaque do HippoRAG é a pesquisa de vários saltos. Por exemplo, se você perguntar "Li Si lives in the capital city of which country?" (Li Si mora na capital de qual país?) O sistema localizará primeiro "Li Si lives in Beijing" (Li Si mora em Pequim), depois relacionará isso a "Beijing is the capital of China" (Pequim é a capital da China) e responderá "China". Para usá-lo, você só precisa digitar a pergunta:
queries = ["Em que capital do país Li Si mora?"]
rag_results = hipporag.rag_qa(queries=queries)
print(rag_results)
Reprodução experimental
Deseja validar os resultados de seu trabalho? O HippoRAG fornece ferramentas de reprodução.
- Preparação do conjunto de dados
Faça o download do conjunto de dados do GitHub ou do HuggingFace (por exemplosample.json
), insira oreproduzir/conjunto de dados
Catálogo. - experimento de corrida
Digite-o no 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
- Exibir resultados
Verifique o resultado para verificar a eficácia da recuperação multi-hop e do Q&A.
processamento em lote off-line
O vLLM é compatível com o modo off-line, e a velocidade de indexação pode ser aumentada em mais de três vezes. A operação é a seguinte:
- Execução de um lote off-line
export CUDA_VISIBLE_DEVICES=0,1,2,3 export HF_HOME= export OPENAI_API_KEY='' python main.py --dataset sample --llm_name meta-llama/Llama-3.3-70B-Instruct --openie_mode offline --skip_graph
- operação de acompanhamento
Quando terminar, retorne ao modo on-line para executar o serviço vLLM e o processo de Q&A.
advertência
- déficit de memóriaSe a memória da GPU for insuficiente, ajuste a
max_model_len
talvezUtilização da memória da gpu
. - ajustar os componentes durante o testeUso de
reproduce/dataset/sample.json
Ambiente de teste. - Liberação de documentosLimpe os dados antigos antes de executar novamente o experimento:
rm -rf outputs/sample/*