Дата публикации
ai_products

HippoRAG 2: RAG, который умеет делать многошаговые выводы

Что нового

HippoRAG 2 — это open source RAG‑фреймворк из Ohio State University, который пытается решать главную боль классических RAG‑систем: многошаговое рассуждение и поиск скрытых связей между фактами.

Конкретно:

  • Поддержка multi-hop reasoning: система связывает факты из разных документов через цепочку триплетов «субъект — отношение — объект».
  • Использование knowledge‑графа вместо простого поиска по эмбеддингам.
  • Встроенное извлечение фактов через OpenIE + LLM, с кэшем (openie_cache/), чтобы не платить за токены повторно.
  • Поддержка настраиваемых LLM и эмбеддингов через OpenAI‑совместимый API: можно подключить как GPT‑4o‑mini, так и свои локальные модели.
  • Более компактный граф, чем у GraphRAG: на датасете MuSiQue HippoRAG использует около 9 млн токенов против 115 млн у GraphRAG.

Это не просто «ещё один RAG»: основной акцент — не на объёме контекста, а на качестве логических связок между разрозненными фактами.

Как это работает

HippoRAG 2 вдохновлён устройством памяти в человеческом мозге, в частности теорией гиппокампального индексирования.

Архитектура разбита на несколько «аналогов» мозговых структур:

  • LLM = неокортекс. Языковая модель отвечает за извлечение структурированных представлений из текста и генерацию ответов.
  • Retrieval‑энкодер = парагиппокампальные области. Модель эмбеддингов ищет семантические связи между кусками текста.
  • Knowledge‑граф + Personalized PageRank (PPR) = гиппокамп. Граф хранит сеть фактов, а PPR ищет по ней ассоциативные цепочки, начиная с узлов, связанных с запросом.

Триплеты и knowledge‑граф

Основная единица знания в HippoRAG — триплет:

(субъект, отношение, объект)

Примеры из статьи:

  • (Оливер Бэдмен, является, политик)
  • (Монтебелло, часть округа, Рокленд Каунти)

При индексации HippoRAG отправляет каждый чанк документа в LLM с инструкцией извлечь все такие триплеты (через Open Information Extraction). Результаты складываются в кэш openie_cache/, чтобы при повторном запуске не тратить токены.

Из всех триплетов строится knowledge‑граф: вершины — сущности, рёбра — отношения. Этот граф гораздо компактнее, чем в GraphRAG (9 млн vs 115 млн токенов на MuSiQue), что снижает стоимость и требования к ресурсам.

Как идёт поиск ответа

  1. Индексация документов:

    • Разбиение на чанки.
    • Построение эмбеддингов для поиска по смыслу.
    • Извлечение триплетов и построение knowledge‑графа.
  2. Обработка вопроса:

    • Классический проход по эмбеддингам с косинусным подобием.
    • Параллельно — запуск Personalized PageRank по графу: релевантность узлов считается относительно «seed»‑узлов, связанных с запросом.
  3. Multi-hop reasoning:

    • HippoRAG ищет цепочки вида: сущность → отношение → сущность → …
    • Пример из текста: вопрос «В каком округе родился политик, который…».
      • Обычный RAG найдёт документ про политика и документ про округ, но не свяжет их.
      • HippoRAG 2 соединяет триплеты: политик → место рождения → Монтебелло → часть округа → Рокленд Каунти и восстанавливает скрытую связь.

За счёт этого HippoRAG умеет отвечать на вопросы, где ответ не лежит в одном абзаце, а собирается из нескольких источников.

Что это значит для вас

Где HippoRAG 2 полезен

HippoRAG имеет смысл использовать, если ваши запросы к RAG:

  • многошаговые: «Кто был руководителем компании, которая купила стартап, основанный автором книги X?»;
  • требуют склеивать факты из разных документов;
  • завязаны на поиск скрытых связей между сущностями (люди, компании, города, даты, события).

Типичные сценарии:

  • аналитика и ресёрч по большим корпусам документов;
  • сложные Q&A‑системы поверх баз знаний (юридические документы, техническая документация, отчёты);
  • внутренние ассистенты в корпорациях, где важно не только «найти абзац», но и сделать логический вывод на его основе.

Где лучше не использовать

HippoRAG — не лучший выбор, если:

  • у вас маленький объём данных и простые вопросы, на которые отвечает один абзац — обычный RAG будет проще и дешевле;
  • важна минимальная задержка: построение и опрос knowledge‑графа добавляет накладные расходы;
  • вы не готовы возиться с LLM‑API, кэшем, локальными моделями.

Доступность и ограничения

  • HippoRAG 2 — open source, код можно поставить локально.
  • Фреймворк использует LLM и эмбеддинг‑модели через OpenAI‑совместимый API. Для работы с GPT‑4o‑mini и другими облачными моделями может понадобиться VPN и зарубежный платёжный метод.
  • Есть возможность полностью уйти в локальный стек: свои LLM и свои эмбеддинги, поднятые через FastAPI, без обращения к внешним сервисам.

Если вы строите RAG‑систему в компании и хотите, чтобы она не только цитировала документы, но и делала осмысленные выводы, HippoRAG 2 — один из вариантов, который стоит протестировать.

Место на рынке

HippoRAG 2 работает в том же поле, что и другие графовые подходы к RAG, например GraphRAG.

По доступным данным из статьи:

  • На датасете MuSiQue HippoRAG использует около 9 млн токенов.
  • GraphRAG на том же датасете использует примерно 115 млн токенов.

Выводы из этого набора фактов:

  • HippoRAG строит более компактный knowledge‑граф, что снижает стоимость индексации и хранения.
  • Подход с триплетами и PPR делает ставку не на «всосать всё подряд», а на выбор именно тех связей, которые нужны для многошагового ответа.

При этом HippoRAG не заменяет классический RAG, а дополняет его: под капотом остаётся поиск по эмбеддингам, а граф используется как второй контур для сложных вопросов.

Установка

HippoRAG можно поставить через pip или из репозитория. Пример с использованием conda:

conda create -n hipporag python=3.10
conda activate hipporag
pip install hipporag

Далее нужно настроить переменные окружения для LLM и кэша:

export OPENAI_API_KEY="sk-..."
export HF_HOME="/путь/к/кэшу"

Как запустить

Пример минимального запуска с тремя документами и GPT‑4o‑mini в роли LLM:

from hipporag import HippoRAG

docs = [
    "Oliver Badman is a politician.",
    "Montebello is a part of Rockland County.",
    "Erik Hort's birthplace is Montebello."
]

hipporag = HippoRAG(
    save_dir="my_rag_memory",  # сюда упадёт всё: эмбеддинги, граф, кэш
    llm_model_name="gpt-4o-mini", 
    llm_api_key=OPENAI_API_KEY,
    llm_base_url=OPENAI_BASE_URL,
    embedding_model_name="nvidia/NV-Embed-v2",
    embedding_api_key=EMBEDDING_API_KEY,
    embedding_base_url=EMBEDDING_BASE_URL 
)

Фреймворк позволяет переопределять base_url и работать с локальными серверами. Можно поднять свои FastAPI‑сервисы с LLM и эмбеддинг‑моделями (в том числе в Google Colab через transformers) и отдать их через OpenAI‑совместимый интерфейс.

Собственный сервер эмбеддингов

Ниже — пример самописного FastAPI‑сервера для эмбеддингов в OpenAI‑совместимом формате:

import torch
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModel
from typing import List
import uvicorn

class EmbeddingRequest(BaseModel):
    input: List[str] | str 
    model: str 
    encoding_format: str = "float" 

class EmbeddingResponse(BaseModel):
    object: str = "list"
    data: List[dict]
    model: str
    usage: dict

MODEL_NAME = "название вашей модели" 
device = "cuda" if torch.cuda.is_available() else "cpu"

tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModel.from_pretrained(MODEL_NAME).to(device)
model.eval()

def embed_texts(texts: List[str]) -> List[List[float]]:
    inputs = tokenizer(
        texts,
        padding=True,
        truncation=True,
        return_tensors="pt",
        max_length=512
    )

Дальше вы добавляете код для получения эмбеддингов из model, оборачиваете это в FastAPI‑эндпоинт и указываете embedding_base_url в конфиге HippoRAG.

Для продакшена такой сервер придётся доработать: добавить батчинг, логирование, ограничение длины запросов и авторизацию. Но как пример интеграции с HippoRAG он показывает главное: вы не привязаны к конкретному облачному провайдеру и можете строить RAG‑систему на своих моделях.


Читайте также