Цель лекции
Разобрать Zep и Graphiti как graph-first подход к агентской памяти: как temporal knowledge graph помогает хранить меняющиеся факты, отношения, provenance и контекст во времени.
Ожидаемый результат
Читатель понимает, когда графовая память оправдана, почему temporal reasoning важен для enterprise agents и чем open-source Graphiti отличается от managed Zep.
Зачем это нужно
Многие memory bugs появляются не потому, что агент ничего не помнит, а потому что он помнит факт без времени.
Пример:
Alice lives in Berlin.
Alice moved to Lisbon in 2025.
Если система хранит оба факта как равноправные текстовые chunks, retrieval может вернуть неправильный. Для пользователя вопрос "где Alice живет сейчас?" и вопрос "где Alice жила в 2024?" требуют разной памяти.
Temporal graph memory пытается моделировать это явно:
- сущности;
- отношения;
- факты;
- время действия факта;
- источник;
- invalidation;
- связь с episodes.
Основная идея
Graphiti - open-source framework для построения temporal knowledge graphs. Zep - managed agent memory platform, которая использует Graphiti-подобную graph model и добавляет operational слой: managed users, threads, retrieval, governance, audit, compliance и масштабирование.
Упрощенно:
Graphiti builds the graph.
Zep operates graph-based memory at enterprise scale.
Это не просто vector DB с дополнительными metadata. Центр модели - Context Graph: граф сущностей и фактов, который меняется во времени.
Ключевые термины
| Термин | Короткое определение |
|---|---|
Temporal knowledge graph |
Граф сущностей и отношений, где факты имеют временные атрибуты. |
Context Graph |
Граф контекста вокруг субъекта: user, customer, team, account или topic. |
Episode |
Событие ingestion: сообщение, JSON record, business event или документ. |
Entity node |
Узел графа: человек, компания, продукт, проект, контракт, тикет. |
Edge fact |
Отношение между сущностями, часто с fact text и temporal metadata. |
Valid time |
Период, когда факт считается истинным в предметной области. |
Ingestion time |
Время, когда система узнала или записала факт. |
Fact invalidation |
Пометка старого факта как больше не актуального без потери истории. |
Hybrid graph retrieval |
Сочетание vector, keyword/full-text и graph traversal. |
Почему temporal graph отличается от обычного graph
Обычный graph может сказать:
Alice -- lives_in --> Berlin
Alice -- lives_in --> Lisbon
Temporal graph должен сказать больше:
Alice -- lived_in --> Berlin
valid_until: 2025-03
source: relocation email
Alice -- lives_in --> Lisbon
valid_from: 2025-03
source: HR profile update
Разница критична для:
- legal;
- finance;
- healthcare;
- enterprise support;
- HR;
- customer success;
- account intelligence;
- compliance workflows.
Архитектурная схема
Эта модель полезна, когда память должна отвечать не только "что похоже?", но и:
- "что было актуально тогда?";
- "что изменилось?";
- "какой факт заменил старый?";
- "откуда система это знает?";
- "какие связанные сущности важны?";
- "можно ли этому пользователю видеть соседние узлы?".
Graphiti как open-source ядро
Graphiti полезен, если команда хочет самостоятельно строить temporal graph memory.
Он обычно закрывает:
- ingestion episodes;
- extraction entities and relationships;
- graph construction;
- temporal metadata;
- fact invalidation;
- hybrid search;
- pluggable graph backends;
- custom entity types.
Но при self-hosting команда сама отвечает за:
- deployment;
- graph database;
- LLM and embedding providers;
- tenancy;
- access control;
- retention;
- audit;
- monitoring;
- migrations;
- evaluation.
Graphiti - мощное ядро, но не вся enterprise platform.
Zep как managed memory layer
Zep добавляет вокруг graph memory operational layer:
- managed users and threads;
- managed graph storage;
- context retrieval API;
- dashboard and debugging tools;
- governance;
- multi-tenant isolation;
- audit logging;
- compliance-oriented controls;
- SDKs and integrations.
Поэтому Zep логичнее рассматривать не как "еще одну graph library", а как managed memory infrastructure для production agents.
Временная логика на примере
Пусть enterprise assistant помогает account manager.
События:
2024-11-01: Contoso uses Plan A.
2025-02-10: Contoso negotiates migration to Plan B.
2025-03-01: Contract signed for Plan B.
2025-03-15: User asks: "What plan does Contoso currently have?"
Плохая память:
Contoso uses Plan A.
Contoso uses Plan B.
Хорошая temporal memory:
Contoso -- used_plan --> Plan A
valid_until: 2025-03-01
Contoso -- uses_plan --> Plan B
valid_from: 2025-03-01
source: signed contract
Агент должен ответить:
Сейчас Contoso на Plan B. До 1 марта 2025 использовался Plan A.
Где Zep особенно силен
Zep/Graphiti-style memory хорошо подходит, когда:
- факты часто меняются;
- связи между сущностями важнее отдельных chunks;
- нужны historical queries;
- нужен provenance;
- есть enterprise governance;
- важны permissions;
- память строится вокруг customer/account/user graph;
- требуется audit;
- retrieval должен быть compact and token-efficient.
Примеры:
- enterprise knowledge agent;
- customer support copilot;
- sales/account intelligence agent;
- legal assistant;
- financial analyst assistant;
- healthcare navigation assistant;
- compliance review agent.
Инфраструктурная цена
Graph-first memory не бесплатна.
Она добавляет:
- graph modeling;
- entity extraction quality issues;
- graph database operations;
- schema evolution;
- access control на уровне узлов и ребер;
- temporal invalidation logic;
- graph-specific monitoring;
- сложнее debugging, чем у простой profile table.
Если ваш продукт хранит только несколько preferences:
User prefers Russian.
User likes concise answers.
User studies in the evening.
Temporal graph может быть overkill.
Security и compliance
Graph memory особенно чувствительна к leakage.
Даже если пользователь не видит приватный документ, граф может раскрыть скрытую связь:
Person A -- works_on --> Confidential Project X
Person B -- reports_to --> Person A
Поэтому permission-aware graph traversal обязателен.
Нужно проверять:
- можно ли видеть node;
- можно ли видеть edge;
- можно ли видеть fact text;
- можно ли видеть соседние сущности;
- можно ли раскрывать existence of relationship;
- какие данные попадают в audit logs;
- как работает deletion.
Сравнение Graphiti и Zep
| Критерий | Graphiti | Zep |
|---|---|---|
| Тип | Open-source temporal graph framework | Managed agent memory platform |
| Основная роль | Build and query Context Graph | Operate governed memory at scale |
| Storage | Вы выбираете backend | Managed/proprietary runtime |
| Governance | Self-managed | Platform capabilities |
| Подходит для | Команды, которые хотят control и готовы строить окружение | Enterprise teams, которым нужен managed слой |
| Риск | Operational burden | Vendor dependency and platform fit |
Как читать benchmark claims
Graphiti/Zep материалы подчеркивают temporal awareness, hybrid retrieval и низкую retrieval latency. Это полезные сигналы, но они не заменяют вашу проверку.
Публичные benchmark results отвечают на вопрос:
Как система ведет себя на выбранном benchmark и выбранной методике?
Ваш вопрос другой:
Как система работает на наших данных, policy, latency, tenants и failure modes?
Для Zep-style memory важно отдельно тестировать:
- temporal reasoning;
- stale fact invalidation;
- permission-aware graph traversal;
- entity resolution;
- conflict handling;
- deletion completeness;
- latency under load;
- audit explainability.
Типичные ошибки
Ошибка 1: строить graph без graph-shaped problem.
Если нет устойчивых сущностей и отношений, graph будет дорогой декорацией.
Ошибка 2: не моделировать время.
Graph без temporal metadata может уверенно возвращать устаревшие связи.
Ошибка 3: считать extraction идеальным.
LLM может неправильно выделить сущность, relation или validity window.
Ошибка 4: забывать permissions на ребрах.
Иногда сам факт связи является чувствительным.
Ошибка 5: не иметь graph observability.
Нужно видеть, какие episodes породили какие nodes and edges.
Ошибка 6: смешивать Graphiti и Zep как одно и то же.
Graphiti - framework. Zep - managed platform вокруг memory at scale.
Источники для дальнейшего чтения
- Graphiti overview: https://help.getzep.com/graphiti/getting-started/overview
- Zep vs Graphiti: https://help.getzep.com/zep-vs-graphiti
- Zep graph overview: https://help.getzep.com/graph-overview
- LongMemEval: https://github.com/xiaowu0162/longmemeval
- LongMemEval-V2: https://xiaowu0162.github.io/longmemeval-v2/
Краткое резюме
Zep и Graphiti показывают graph-first подход к agent memory. Он особенно полезен, когда память должна понимать сущности, отношения, изменения во времени, provenance и permissions.
Главный trade-off: temporal graph memory дает точность и выразительность, но требует более зрелой инфраструктуры, data modeling, governance и evals.
Вопросы для самопроверки
- Почему факт без validity period может быть опасен?
- Чем Context Graph отличается от набора vector chunks?
- Какие задачи лучше решает temporal graph memory?
- Почему graph traversal должен быть permission-aware?
- Когда Graphiti лучше Zep, а когда наоборот?
Что дальше
В следующей лекции мы перейдем к Letta: подходу, где агент сам управляет своим контекстом через memory blocks, archival memory и tool-calling.