Почему агент не находит то, что помнит

Проверяем поиск в памяти CapyAgent на точных запросах, изменённых словах и перефразировках. Сравниваем с простыми методами и разбираем, где поиск перестаёт работать.

Все исследования

Главный результат

Проверили настоящий поиск заметок CapyAgent на 260 искусственных запросах и 50 запросах SciFact. Он справился с заданными формами слов, но пропустил подготовленные перефразировки. Это измерение поиска, а не качества ответов всего агента.

Термины простыми словами
RAG
поиск внешних сведений перед подготовкой ответа моделью.
Recall@5
доля размеченных нужных документов среди первых пяти результатов, усреднённая по запросам.
BM25
базовый поиск по словам, учитывающий их частоту и редкость.
Перефразировка
вопрос о том же факте, выраженный другими словами.

Разбор исследования / 01

Что именно мы проверяем

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

  1. 01 / ДанныеФакты и вопросы
    Заранее известно, какой документ нужен для каждого проверяемого вопроса. Есть и вопросы без ответа в корпусе.
  2. 02 / ПоискОдинаковый вопрос разным методам
    CapyAgent Recall и базовые методы работают на объявленных данных. Их выдачи сохраняются отдельно.
  3. 03 / ВыдачаПервые пять документов
    Проверяется, попал ли нужный документ в этот список. Пустая выдача тоже остаётся в результатах.
  4. 04 / ОценкаСравнение с эталоном
    Считаем Recall@5 и положение нужного документа. Разбираем типы запросов отдельно.
Рисунок 1. Схема проведённой оценки поиска. Генерация ответа и выполнение действий не входят в этот эксперимент.

Почему нельзя сложить все запросы в один процент

Точные формулировки, изменение формы слова и перефразировка проверяют разные свойства. Если успешные точные запросы смешать с неудачными перефразировками, среднее скроет причину ошибки. Поэтому в таблицах ниже результаты разделены по категориям, а размер каждой группы указан рядом.

Как прочитать результат без специальной подготовки

Recall@5 отвечает на вопрос: какая доля известных подходящих документов оказалась среди первых пяти? Для искусственных запросов этой работы у вопроса один целевой документ. Результат 80 из 80 означает попадание во всех 80 подготовленных случаях; 0 из 80 означает, что ни один целевой документ не попал в первые пять. Эти числа не описывают все возможные вопросы человека.

Есть и другая ошибка: поиск может вернуть убедительно выглядящие документы, хотя ответа в корпусе нет. Пустой ответ иногда полезнее случайного совпадения. Именно поэтому добавлены отдельные вопросы без ответа и сохранены необработанные списки найденных документов.

Где здесь RAG

В системе RAG найденные документы затем передаются модели для подготовки ответа. Такая связка описана в исходной работе Lewis и соавторов. Наш эксперимент проверяет только первый этап. Хорошая выдача ещё не гарантирует правильный ответ; плохая выдача показывает, что модель может не получить нужного основания.

Следующий разумный шаг - отдельно сравнить способы поиска, а затем измерить ответы на одних и тех же вопросах с проверяемыми источниками. Это план следующего опыта, а не выполненный результат. Различие между поиском, генерацией и проверкой ответа важно и при чтении Self-RAG: методы из этой работы здесь не запускались.

Аннотация

Изучен компонент Recall файловой памяти CapyAgent в закреплённом снимке разработки 77ac9b72. Проведены два воспроизводимых испытания без языковой модели: 260 запросов к 160 авторским синтетическим записям и 50 заранее выбранных запросов к полному корпусу SciFact из 5 183 аннотаций. Сравнение выполнено с точным поиском всех слов и BM25 при одинаковой глубине выдачи 5. На синтетических точных запросах и изменениях формы слова Recall@5 составил 100%, на подготовленных перефразировках - 0%. На выборке SciFact средний Recall@5 равен 4% у Recall и 72,3% у BM25. Результат показывает границы конкретного лексического механизма на указанных данных. Генерация ответов, весь контур памяти агента и готовый RAG-продукт не оценивались.

1. Что мы проверяем и зачем

ИИ-помощник может помнить факт, но не найти его по новой формулировке. Другой вариант: поиск возвращает знакомую по словам запись, в которой нет ответа. Если измерять только убедительность итогового текста, обе ошибки можно пропустить. Поэтому в этой работе поиск проверяется отдельно от языковой модели.

RAG означает, что перед подготовкой ответа система получает сведения из внешнего хранилища. В классической работе Lewis и соавторов поиск соединён с генерацией [1]. Здесь рассматривается только один возможный источник контекста - заметки CapyAgent. Исследовательские вопросы: помогает ли реализованная обработка форм слов; что происходит при перефразировке; как этот механизм ведёт себя на внешнем корпусе по сравнению с простым базовым поиском?

Единица измерения - запрос и упорядоченный список идентификаторов найденных записей. Мы не просим модель отвечать по найденному тексту и не называем попадание документа выполнением пользовательской задачи.

2. Что важно в современных исследованиях RAG

Из первичных работ выделены разные уровни проверки. BEIR сравнивает поиск на разнородных данных [2]. LongMemEval разделяет организацию памяти, поиск и использование найденного [3]. Это разные объекты оценки: хорошая выдача ещё не подтверждает правильный ответ.

Свежие работы не дают основания выбирать метод только по его названию. SAGE изучает связь поисковых запросов агента с поисковым механизмом [4]. RAFT рассматривает поиск по меняющемуся состоянию технического обращения [5]. В работе LARA отдельно рассматриваются качество выдачи и последующий результат [6]. Для CapyAgent это мотивирует раздельные измерения, а не перенос чужих чисел.

Self-RAG изучает обучаемое управление поиском и проверкой ответа [7]. Его воспроизведение требует иной модели и протокола. В этой статье Self-RAG, плотные векторные индексы, графовый поиск и обучение переформулировке не запускались. Обзор источников целевой, а не систематический обзор всей литературы.

3. Какой CapyAgent исследован

Проверки относятся к ревизии 77ac9b72409fc2b6afc5741fd2469c662758a1b4, взятой из доступной ветки разработки [8]. На дату проверки GitHub отдельно показывал стабильный выпуск 1.3.20 и предварительный Linux-выпуск 1.3.21. Снимок разработки, тег выпуска и установленная у пользователя программа - разные вещи; результаты не приписываются всем версиям.

В коде различаются история диалогов, заметки и профиль. Мы вызываем именно FileStore.Recall для заметок. У поиска по истории другие пути; внешние инструменты поиска и дополнительные навыки также не входят в это испытание. Реализованный Recall сопоставляет слова, их основы и префиксы, учитывает длину, метки и свойства записи. Это не векторный поиск по смыслу. Вызван полный Recall, включая его встроенные правила разбора времени; вклад отдельных правил не изолировался.

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

4. Данные, базовые методы и метрики

Авторский диагностический набор содержит 160 коротких записей о вымышленных проектах. Для 80 фактов созданы точный запрос, запрос с другой формой слова и перефразировка: по 80 запросов каждой группы. Ещё 20 запросов задают вопросы, ответа на которые нет. В корпусе есть записи, упоминающие тему, но не содержащие нужный факт. Данные подготовлены с применением ИИ по фиксированным шаблонам; это не реальные обращения и не экспертная выборка поведения пользователей.

Второй набор - публичный SciFact в представлении BEIR [9]. Использованы все 5 183 документа и 50 из 300 тестовых запросов. Идентификаторы выбраны до просмотра исходов: первые 50 после сортировки по SHA-256 строки research-v1: с идентификатором. Каждый документ представлен заголовком и аннотацией без разбиения. Отбор, контрольная сумма архива и список запросов опубликованы.

Базовые методы: точное наличие всех Unicode-слов запроса и BM25 с k1=1.2, b=0.75, приведением к нижнему регистру, без стемминга и стоп-слов. Равные оценки разрешаются порядком документов. BM25 возвращает только положительные оценки. Все методы ограничены пятью результатами. Время записей уравнено, метки пусты; заметки загружены через документированный JSONL-формат, поэтому качество извлечения фактов методом Remember здесь не проверяется.

Recall@k - доля размеченных нужных документов, найденных в первых k результатах, затем среднее по запросам. MRR@5 - среднее обратное место первого размеченного нужного документа, с нулём при промахе. На вопросах без ответа отдельно считается непустая выдача; её нельзя автоматически называть галлюцинацией модели. Зависимые варианты одного факта не трактуются как независимая случайная выборка.

5. Новые измеренные результаты

Таблица 1. Авторский набор: поиск, без генерации
Группа / методnRecall@1Recall@5MRR@5
Точные запросы / CapyAgent Recall8098,8%100,0%0,991
Точные запросы / Точное совпадение всех слов80100,0%100,0%1,000
Точные запросы / BM2580100,0%100,0%1,000
Изменение формы слова / CapyAgent Recall8098,8%100,0%0,991
Изменение формы слова / Точное совпадение всех слов800,0%0,0%0,000
Изменение формы слова / BM258012,5%62,5%0,285
Перефразировки / CapyAgent Recall800,0%0,0%0,000
Перефразировки / Точное совпадение всех слов800,0%0,0%0,000
Перефразировки / BM258012,5%75,0%0,327

Для точных запросов Recall нашёл нужную запись первой в 79 из 80 случаев и в первых пяти во всех 80. Для заданных изменений формы слова получен такой же счёт. Точный поиск всех слов не справился с изменениями форм; это ожидаемая граница выбранного контроля, а не сравнение со всеми возможными лексическими системами.

Единственный промах на первом месте заслуживает отдельного разбора: по запросу «доступ Клён» первой оказалась запись о проекте «Ива», хотя запись о «Клёне» была в первых пяти. Оба названия вымышлены и принадлежат авторскому набору. Этот случай показывает, почему высокая полнота в пяти результатах не заменяет проверку первого результата и того, к какому объекту относится найденный факт. Причина ранжирования не проверялась отдельной абляцией.

Для подготовленных перефразировок Recall не нашёл ни одной целевой записи. BM25 дал Recall@5 75%, но это не доказательство понимания смысла: метод может получить нужный документ за счёт общих слов и имени проекта. На 20 вопросах без ответа Recall и точный поиск вернули пустую выдачу, BM25 - непустую во всех 20. Без порога релевантности широкий поиск повышает полноту и одновременно возвращает лишние кандидаты.

Таблица 2. SciFact: 50 выбранных запросов, полный корпус
МетодRecall@1Recall@5MRR@5
CapyAgent Recall4,0%4,0%0,040
BM2544,0%72,3%0,554

Большой разрыв на SciFact согласуется с различием механизмов: требование совпадения слов ограничивает выдачу, когда научное утверждение и аннотация сформулированы по-разному. Это интерпретация, поддержанная кодом и устройством опыта, а не доказанная единственная причина разницы. Английские научные аннотации отличаются от коротких русских личных заметок. Выборка из 50 запросов не является полным официальным результатом BEIR.

6. Как повторить и проверить подсчёт

Опубликованы авторские данные, Go-тест вызова Recall, базовые методы, выдача по каждому запросу и сводка. Для SciFact доступны список выбранных запросов, выдачи и код подготовки данных; исходные аннотации здесь не переиздаются.

Проверки выполнялись на KotikTurbo с Fedora 44, Go 1.26.10 и Python 3.14.8. Внутри изолированной копии: go test -p 1 ./internal/memory -run '^TestResearchMemoryRetrievalV1$' -count=1 -json. Пути к данным и результату задаются через RESEARCH_FIXTURES и RESEARCH_RESULTS. Затем запускаются baselines.py и analyze_public.py. Полные настройки и границы повторения приведены в приложении [10].

Сохранены текущий тихий профиль ноутбука, один поток и ограничение собственного процесса четвертью ядра. Платные API, GPU и пользовательские данные не использовались. Поэтому длительность этого прогона не публикуется как скорость продукта. Счёт попаданий дополнительно пересчитан отдельной процедурой по сырым спискам.

7. Ограничения, непройденные проверки и вывод

Набор с вымышленными проектами мал и шаблонен. SciFact относится к другой предметной области и языку; его разметка релевантности не обязательно исчерпывает все подходящие документы. Не измерялись генерация ответа, корректность цитирования моделью, обновление знаний, поиск по истории, доступ через все интерфейсы и достижение внешней цели.

Новый сквозной RAG-прогон с языковой моделью не проводился: оплачиваемый API-бюджет не разрешён, а локальная модель не настроена и не принята для этой изолированной серии. Запуск GPU и изменение ночного профиля не выполнялись. Эти части остаются отдельной необходимой проверкой, а не завершённым результатом. Плотный поиск, гибрид BM25 с векторами и повторное ранжирование остаются гипотезами улучшения.

Практический вывод узкий: существующий Recall полезен в проверенных лексически близких случаях, но его нельзя без отдельного опыта считать универсальным поиском по документам или смыслу. Для следующего сравнения нужно сохранить те же данные, отдельно проверить полноту и ложную выдачу, а затем проверить ответ модели по найденным источникам. Лицензия снимка CapyAgent - BSL 1.1 с дополнительным разрешением; MIT-атрибуция адаптированных компонентов Hermes сохранена в приложении.

Новые проверки от 1 ноября 2026 · Версия 2.0

Оригинальная статья сайта, редакционная подготовка с применением ИИ. Измеренные результаты отделены от прежних наблюдений и планов. Внешнее научное рецензирование не заявляется. SR-2026-01 - внутренний номер, не DOI.

Первичные источники и материалы проверки

Ссылки и статус материалов проверены 1 ноября 2026 года. Внешние работы используются как источники методов; их показатели не выдаются за результаты CapyAgent.

  1. Lewis P. et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020.
  2. Thakur N. et al. BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models. 2021.
  3. Wu D. et al. LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory. ICLR 2025, arXiv v2.
  4. Hu T. et al. SAGE: Benchmarking and Improving Retrieval for Deep Research Agents. 2026. Препринт; при разборе методов использована v1.
  5. Zhang M. et al. RAFT: A Stateful Retrieval-Augmented Framework for Troubleshooting Agents. 17.09.2026, v1.
  6. Liang Y. (F.), Agarwal A., Cheruku A. R. When Agentic Retrieval Fails Silently. 21.10.2026. Препринт; авторы указывают подачу в CHIIR 2027.
  7. Asai A. et al. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. 2023.
  8. Манифест исходников CapyAgent: снимок разработки 77ac9b72409fc2b6afc5741fd2469c662758a1b4, зафиксирован для проверок 01.11.2026. Полный репозиторий закрыт.
  9. Wadden D. et al. SciFact / Fact or Fiction: Verifying Scientific Claims. EMNLP 2020. Данные и отдельные условия для утверждений и аннотаций.
  10. Материалы для повторения: данные, исходники оценщиков, сырые результаты, контрольные суммы и ограничения воспроизводимости.