Aprendizagem pessoal com IA
e orientação prática
Espelho de desenho CyberKnife

HippoRAG: uma estrutura de recuperação de conhecimento multihop baseada em memória de longo prazo

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.

HippoRAG: uma estrutura de recuperação de conhecimento multihop baseada em memória de longo prazo-1

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:

  1. 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
  1. Instalação do HippoRAG
    Funciona em um ambiente ativado:
pip install hipporag
  1. 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:

  1. 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."
]
  1. 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)
    
  2. arquivo de índice
    Documentos de entrada para indexação:

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

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

  1. Preparação do conjunto de dados
    Faça o download do conjunto de dados do GitHub ou do HuggingFace (por exemplo sample.json), insira o reproduzir/conjunto de dados Catálogo.
  2. 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
    
  3. 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:

  1. 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
    
  2. 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 talvez Utilizaçã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/*
    
CDN1
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " HippoRAG: uma estrutura de recuperação de conhecimento multihop baseada em memória de longo prazo

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil