- Дата публикации
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), что снижает стоимость и требования к ресурсам.
Как идёт поиск ответа
-
Индексация документов:
- Разбиение на чанки.
- Построение эмбеддингов для поиска по смыслу.
- Извлечение триплетов и построение knowledge‑графа.
-
Обработка вопроса:
- Классический проход по эмбеддингам с косинусным подобием.
- Параллельно — запуск Personalized PageRank по графу: релевантность узлов считается относительно «seed»‑узлов, связанных с запросом.
-
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‑систему на своих моделях.