HippoRAG: многоходовая система поиска знаний на основе долговременной памяти

Общее введение

HippoRAG - это фреймворк с открытым исходным кодом, разработанный группой OSU-NLP в Университете штата Огайо и вдохновленный механизмами долговременной памяти человека. Он сочетает в себе методы Retrieval Augmented Generation (RAG), Knowledge Graph и Personalised PageRank, чтобы помочь большим языковым моделям (LLM) последовательно интегрировать знания из внешних документов.HippoRAG 2 - это последняя версия HippoRAG, которая была продемонстрирована на NeurIPS 2024. Она улучшает способность модели выполнять многоходовый поиск и сложное понимание контекста, сохраняя при этом низкую стоимость и низкую задержку. При автономном индексировании она занимает меньше ресурсов, чем такие решения, как GraphRAG. Пользователи могут получить код на GitHub и развернуть его бесплатно.

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

Методология внедрения HippoRAG2

 

Список функций

  • Индексирование документов: Преобразование внешних документов в структуры знаний с возможностью поиска, поддерживающие постоянное обновление.
  • многоходовый поиск: Отвечайте на вопросы, требующие многоступенчатых рассуждений, устанавливая связи между знаниями.
  • Поколение вопросов и ответов: Генерируйте точные ответы на основе результатов поиска.
  • Поддержка модели: Совместимость с моделями OpenAI и собственными моделями vLLM Развернутый LLM.
  • Эффективная обработка: Быстрый поиск в режиме онлайн и низкие требования к ресурсам для индексирования в режиме офлайн.
  • экспериментальная проверка: Предоставление наборов данных и скриптов для поддержки повторения исследований.

 

Использование помощи

Процесс установки

Установка HippoRAG проста и подходит для пользователей с базовыми знаниями Python. Ниже приведены подробные шаги:

  1. Создание виртуальной среды
    Создайте среду Python 3.10, введя в терминале следующую команду:
conda create -n hipporag python=3.10

Затем активируйте окружение:

conda activate hipporag
  1. Установка HippoRAG
    Работает в активированной среде:
pip install hipporag
  1. Настройка переменных среды
    Установите следующие переменные в соответствии с вашим оборудованием и требованиями. Например, используйте несколько графических процессоров:
export CUDA_VISIBLE_DEVICES=0,1,2,3
export HF_HOME=<你的 Huggingface 目录路径>
export OPENAI_API_KEY=<你的 OpenAI API 密钥>  # 使用 OpenAI 模型时需要

Активируйте среду еще раз, чтобы убедиться, что она вступила в силу:

conda activate hipporag

Использование моделей OpenAI

Чтобы быстро начать работу с HippoRAG?, вы можете использовать модель OpenAI. Вот шаги:

  1. Подготовьте документ
    Создайте список документов, например:
docs = [
"张三是一名医生。",
"李四住在北京。",
"北京是中国的首都。"
]
  1. Инициализация HippoRAG
    Установка параметров в 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. индексный файл
    Ввод документов для индексирования:

    hipporag.index(docs=docs)
    
  3. Вопросы и ответы
    Введите вопрос, чтобы получить ответ:

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

    Выход может быть следующим:

    • Чжан Сань - врач.
    • Ли Си живет в Пекине.

Использование нативной модели vLLM

Хотите развернуть локально? Вы можете запустить HippoRAG с помощью vLLM:

  1. Запуск службы vLLM
    Запуск локальных служб в терминале, например, с помощью модели 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. Инициализация HippoRAG
    Укажите локальный адрес службы в 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. Указатель и вопросы и ответы
    Операция такая же, как и для модели OpenAI, просто введите документ и вопрос.

Функциональное управление

многоходовый поиск

Изюминкой HippoRAG является многоходовый поиск. Например, если вы спросите "Ли Си живет в столице какой страны?". Система сначала найдет "Ли Си живет в Пекине", затем соотнесет это с "Пекин - столица Китая" и ответит "Китай". Чтобы воспользоваться этой системой, достаточно ввести вопрос:

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

Экспериментальное воспроизводство

Хотите подтвердить результаты своей работы? HippoRAG предоставляет инструменты для размножения.

  1. Подготовка набора данных
    Загрузите набор данных с GitHub или HuggingFace (например. sample.json), вставьте reproduce/dataset Каталог.
  2. беговой эксперимент
    Введите его в терминал:

    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. Посмотреть результаты
    Проверьте результат, чтобы убедиться в эффективности многоходового поиска и Q&A.

автономная пакетная обработка

vLLM поддерживает автономный режим, а скорость индексирования может быть увеличена более чем в 3 раза. Операции выполняются следующим образом:

  1. Запуск автономной партии
    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. последующая операция
    По окончании вернитесь в режим онлайн, чтобы запустить службу vLLM и процесс Q&A.

предостережение

  • дефицит памяти: Если памяти графического процессора недостаточно, отрегулируйте max_model_len возможно gpu-memory-utilization.
  • регулировка компонентов во время тестирования: Использование reproduce/dataset/sample.json Тестовая среда.
  • Оформление документов: Очистите старые данные перед повторным запуском эксперимента:
    rm -rf outputs/sample/*
    
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...