Детерминированный RAG: память с recall 1.0 без LLM вызовов | AiManual
AiManual Logo Ai / Manual.
03 Июл 2026 Инструмент

Детерминированный RAG: инструмент памяти с recall 1.0 без вызовов LLM — разбор подхода

Разбор подхода к RAG, который дает 100% recall и не требует обращения к языковой модели. Как работает, где применить и почему это дешевле традиционных решений.

Никакой магии — только математика

Вы устали платить за каждый запрос к GPT-4o, а ваша RAG-система все равно галлюцинирует? Знакомо. Обычный RAG — это дорогой велосипед с квадратными колесами: LLM генерирует ответ, но может выдумать факт, а реранкеры только добавляют расходов. Но что, если я скажу, что существует подход, который гарантирует 100% точность извлечения контекста и при этом не требует ни одного вызова нейросети? Звучит как фантастика. Встречайте детерминированный RAG.

Идея проста до безобразия: вместо того чтобы каждый раз бежать к LLM с вопросом «этот документ релевантен?», мы зашиваем логику поиска в железобетонные алгоритмы. Без вероятностей, без семантических сдвигов — только строгие структуры данных. Инструмент, который я разберу, называется DetRAG Memory Engine (или просто DetRAG). Это open-source библиотека, которая обещает recall 1.0 на этапе retrieval. И она держит слово.

Важно: DetRAG — не замена LLM. Это слой памяти, который извлекает точные факты. Генерацию ответа модель все равно берет на себя, но теперь ей не нужно рыться в тоннах шума.

Как это работает? Никаких эмбеддинговых лотерей

Классический RAG превращает документы в векторы (эмбеддинги) и ищет ближайшие соседи. Проблема: косинусная близость не всегда означает семантическую релевантность. Вы можете получить три абсолютно левых документа и один нужный, а LLM потом смешает их в кашу.

Детерминированный подход строит инвертированные индексы поверх предварительно вычисленных ключей. Каждый факт или чанк получает уникальный хеш на основе содержимого. При запросе мы не «угадываем» похожесть, а вычисляем точное пересечение ключей запроса с индексом. Результат — набор документов, которые гарантированно содержат искомые элементы. Никаких пропусков — recall 1.0 (если факт есть в БД, он будет найден).

Технически DetRAG использует битовые маски и bloom-фильтры для ускорения, но главная магия — в детерминированном алгоритме слияния. Вы не получите «almost relevant» — только «exact match». Это не подходит для вопросов вроде «напиши эссе про любовь», но для фактологических запросов («какая температура плавления титана?») — идеально.

1 Установка и первый запуск

pip install detrag-memory

Библиотека тянет за собой numpy и bloom_filter. Никаких PyTorch или трансформеров. После установки создаем хранилище:

from detrag import DeterministicMemory

# Инициализация с размером битовой маски 10^6 и 3 хеш-функциями
memory = DeterministicMemory(capacity_mb=256, hash_count=3)

# Добавляем документы (id, текст)
memory.add("doc1", "Температура плавления титана: 1668 °C")
memory.add("doc2", "Скорость света в вакууме: 299 792 458 м/с")

# Поиск
results = memory.retrieve("температура плавления титана")
print(results)
# [{"id": "doc1", "score": 1.0, "content": "Температура плавления титана: 1668 °C"}]

Метод retrieve() возвращает только те документы, где совпали все ключи. score всегда 1.0 — это не семантическая оценка, а флаг «найдено». Если ничего не совпало — пустой список. Честно, без галлюцинаций.

Сравнение с альтернативами: отрываем голову дракону стоимости

Посмотрим, как DetRAG лежит на фоне других решений памяти для LLM.

КритерийОбычный RAG (OpenAI)Graphiti / MemGPTDetRAG
Вызовы LLM на retrieval1 (эмбеддинг) + реранкеры1-3 (агентные циклы)0
Recall (точность извлечения)~85-95%~90-97%1.0 (100%)
Стоимость 1000 запросов~$0.50 (эмбеддинги + LLM)~$1-3 (агентные вызовы)~$0.001 (только compute)
Поддержка семантикиДа (эмбеддинги)Да (графы, нейросети)Нет (только факты)

Как видите, DetRAG выигрывает в цене и точности, но проигрывает в гибкости. В сравнении Graphiti vs MemGPT мы уже говорили, что агентные системы памяти хороши для диалогов, но не для фактов. DetRAG — это топор, который рубит только прямо, но без промаха.

Когда детерминированный RAG — это пустая трата времени

Не буду лить елей: подход не универсален. Если ваш запрос требует понимания контекста («объясни мне теорему Пифагора на пальцах»), то детерминированный поиск вернет сухие факты, а LLM все равно придется их интерпретировать. И вот тут важный нюанс: DetRAG не устраняет необходимость в LLM для генерации — он лишь гарантирует, что в контекст попадут только точные данные. Это снижает галлюцинации, но не убивает их полностью.

Проблемы начинаются, когда:

  • Документы содержат синонимы без нормализации («автомобиль» vs «машина»). DetRAG не умеет в абстракции.
  • Вопрос задан в свободной форме, а в базе ключевые слова отсутствуют. Тогда recall = 0.
  • Нужна память о предыдущих диалогах. Традиционный RAG справляется с этим за счет контекстного окна, а детерминированный — нет.

Поэтому наилучшее применение — гибридная архитектура: DetRAG как первый этап (exact-match), а затем LLM для ранжирования или агентного принятия решений. Именно такой подход описан в статье про LLM-арбитра: один вызов модели заменяет толпу реранкеров. Или самовосстанавливающийся RAG — он проверяет факты после генерации, и если DetRAG поставляет чистые данные, то валидатору проще.

💡
Лайфхак: комбинируйте DetRAG с локальным блокнотом вроде RAGpad. Детерминированная память для быстрых ответов, RAGpad для длинных рассуждений — идеальное сочетание.

Кому это спасет бюджет и нервы

DetRAG Memory Engine — инструмент не для всех. Он для тех, кто:

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

Если ваш проект — это RAG-чат для техподдержки с типовыми вопросами, вы снизите затраты на порядок. Модуль персистентной памяти NGT тоже решает часть задач, но он использует эмбеддинги и не гарантирует 100% recall.

А что дальше?

Детерминированный RAG — это не магическая пуля, а элегантный компромисс. Он напоминает мне переход от нейросетевых поисковиков к чистому inverted index в поисковых движках 90-х. Сначала все побежали за эмбеддингами, а потом поняли, что точное совпадение тоже нужно. DetRAG — шаг назад? Нет, это шаг в сторону гибридного будущего, где LLM отвечает за интеллект, а детерминированные структуры — за память.

Я ставлю на то, что через год ни один серьезный RAG-пайплайн не будет обходиться без слоя точного поиска. Если ваша система сейчас тратит $500 в месяц на API — попробуйте DetRAG. А если он не подойдет, всегда можно откатиться — код open-source, накладных расходов нет.

Подписаться на канал