Перейти к основному содержимому

Retrieval and memory

После главы вы сможете выбрать между domain tool, retrieval и memory, а также измерить retrieval отдельно от качества final answer.

Не всё прошлое — память

ОбъектПримерSource of truthТипичный срок
Transcript«Где мой заказ?»Conversation storePolicy-dependent
Task statepending approvalEvent projectionДо terminal/retention
Observationget_order rev 5Domain system + eventДо invalidation
User memoryязык ответаExplicit preference storeДо удаления/изменения
Episodic memoryпрошлый успешный сценарийCurated outcomeОграниченный
Knowledgecargo policyVersioned corpus/APIПо версии документа

Сохранить transcript навсегда и назвать это memory — не архитектура: нет namespace, consent, freshness и deletion semantics.

Tool или retrieval?

API-shaped факты лучше читать domain tool: order status, balance, slots. Document-shaped знания подходят retrieval: policy, manuals, product comparison, FAQ.

точный изменяемый record → domain API/tool
неструктурированный корпус → retrieval
устойчивая user preference → scoped memory
текущий progress → task state

Поэтому RAG не обязателен каждому агенту. Для telehealth booking slots важнее API; для pharmacy/policy Q&A — retrieval.

RAG pipeline

Failure может возникнуть на каждом слое. Нельзя лечить низкий recall изменением final prompt.

Chunking

Fixed-size

Просто и воспроизводимо, но разрывает таблицы, исключения и определения.

Structural

По headings/sections/records. Лучше сохраняет смысл, требует parser для каждого формата.

Semantic/task-aware

Строится вокруг возможных вопросов или entities. Может улучшить retrieval, но дороже, сложнее обновляется и рискует закодировать текущие use cases.

Хороший chunk сохраняет provenance: source URI, version, section, effective date, access label.

Метрики retrieval

  • Recall@k: попал ли хотя бы один релевантный документ в top-k.
  • MRR: насколько рано появился первый релевантный результат.
  • nDCG: учитывает порядок и градуированную релевантность.
  • Filter/authorization recall: не отрезали ли нужное; не показали ли запрещённое.
  • Freshness: соответствует ли найденная версия effective policy.

Answer groundedness не заменяет retrieval eval: модель не может процитировать документ, который pipeline не нашёл.

Memory write policy

Наивная схема записывает каждую фразу пользователя. Она быстро накапливает ошибки и sensitive data.

Перед записью спросите:

  1. Пользователь явно выразил устойчивую preference/fact?
  2. Есть consent и lawful purpose?
  3. Каков namespace: thread, user, tenant?
  4. Как подтвердить/изменить/удалить record?
  5. Когда истекает TTL?
  6. Как provenance попадёт обратно в context?

Model-generated inference вроде «пользователь, вероятно, богат» не должна автоматически становиться долговечной памятью.

Namespace isolation

Helios memory store возвращает tenant-scoped records плюс records точного thread. Record tenant-alpha не виден tenant-sol; preference thread-1 не переносится в thread-2.

Production identity обычно сложнее: organization, workspace, end user, legal region, purpose and sensitivity labels. Filter должен выполняться до semantic ranking и повторно на выдаче.

Freshness и provenance

Для каждого retrieved item полезны:

  • stable source ID;
  • source version/effective time;
  • retrieved_at;
  • access scope;
  • relevance score и retriever version;
  • transformation/chunk lineage.

Если cargo rule обновилась, старое memory нельзя «исправить» красивым summary. Нужна invalidation/re-index и domain policy check на актуальной версии.

Deletion и retention

Удаление source требует ответа на вопросы:

  • удалить chunk из index;
  • удалить embeddings/cache;
  • перестроить summaries, где он использован;
  • сохранить минимально необходимый audit без исходного content;
  • прекратить future retrieval;
  • доказать completion deletion job.

Для PHI/PII de-identification снижает риск, но не превращает данные в свободный учебный corpus. Назначьте purpose, access, retention и deletion до выгрузки.

Стратегии

РешениеВыигрышЦенаКогда плохой выбор
Full corpus in contextНет retrieval missTokens/latency/leakageБольшой corpus
Lexical searchПрозрачно, дешёвоСлабые paraphrasesСемантически разнообразные вопросы
Dense retrievalSemantic recallModel/index lifecycleExact IDs/codes
Hybrid + rerankerОбычно сильнееLatency и eval complexityМалый low-traffic corpus
Domain APIСвежий structured stateНужен integrationДокументы/объяснения

Helios и реальный аналог

Пользователь спрашивает cargo restrictions. Order route читается tool, а нормативные исключения ищутся в versioned corpus с jurisdiction metadata. Перед booking policy service проверяет правило ещё раз; retrieved paragraph помогает объяснить, но не авторизует shipment.

Лаборатория

npm run test:course:pattern -- "memory|stale"

Добавьте memory другой tenant и убедитесь, что retrieval его не возвращает. Затем сформулируйте offline fixture для Recall@k; реализация метрик появится в Applied ML lab.

Self-check

  • Это API-shaped или document-shaped вопрос?
  • Как измеряется retrieval до model call?
  • Где применяются tenant/access filters?
  • Как отмечается версия и freshness?
  • Какие записи memory создаются только с consent?
  • Как выполнить deletion во всех производных stores?