ADR 008: JEPA Integration (Латентное кодирование памяти)¶
Дата: 2026-04-24 Статус: Принято Автор: Black Swan Core Architecture Team
1. Контекст¶
Традиционное хранение знаний в Mem0g L2/L3 опиралось на полные текстовые представления (DistilledWisdom, ErrorSignature) и эмбеддинги, полученные от LLM. Это вело к трём проблемам:
- Высокое потребление памяти. Одна запись L2 могла занимать десятки КБ текста плюс эмбеддинг.
- Медленный семантический поиск. Поиск по косинусному сходству в Qdrant замедлялся с ростом графа.
- Дорогие повторные вызовы LLM. Каждая операция поиска требовала нового эмбеддинга от LLM.
С ростом графа знаний до миллионов узлов эти проблемы становились критическими. JEPA (Joint‑Embedding Predictive Architecture) предоставляет альтернативу: хранение знаний в компактном латентном пространстве с предсказанием связей, а не текста.
2. Решение¶
Внедрить JEPA‑слой в Mem0g L2/L3. Перевести хранение знаний с полных текстов на латентные векторы (размерность 1536, float16), предсказывающие контекстные зависимости между узлами.
Ключевые компоненты:
- JEPA‑энкодер: Используется Vagrant (20% экспертов DeepSeek‑V4) для кодирования текста в латентный вектор. Это обеспечивает достаточное качество при минимальных затратах.
- JEPA‑предиктор: Дополнительная лёгкая модель, обученная предсказывать связи между узлами (derived_from, refines) непосредственно из латентных представлений, без восстановления текста.
- A/B‑тестирование перед активацией: JEPA включается только после успешного теста на ≥ 10 000 записей L2. Ключевые метрики: · Compression Ratio ≥ 15× (исходный текст / латентный вектор). · Recall@10 ≥ 95% относительно текстового baseline. · Latency p95 ≤ 5 мс для поиска ближайших. · Link Prediction Accuracy ≥ 0.85.
- Откат при деградации: Если метрики падают ниже порогов в течение 7 дней, система автоматически возвращается к полным текстам, а JEPA отправляется на дообучение в Champion/Challenger.
3. Последствия¶
Положительные
· Сжатие памяти в 15× и более. Миллионы узлов L2 помещаются в десятки ГБ вместо сотен. · Ускорение поиска. Поиск по латентному пространству выполняется за миллисекунды (после индексации Qdrant), без вызовов LLM. · Снижение сетевого трафика. CRDT-синхронизация передаёт только латентные векторы (без текста), сокращая объём на ~80%. · «Интуитивное» узнавание. JEPA‑предиктор может находить связи между узлами, даже если их текстовые описания различаются.
Отрицательные
· Потеря интерпретируемости. Текстовые описания недоступны для прямого чтения человеком без декодирования (хотя архивируются в IPFS). · Зависимость от качества энкодера. Если Vagrant даёт плохие эмбеддинги, JEPA теряет точность. · Риск дрейфа латентного пространства. При дообучении модели эмбеддинги могут «поехать». Защита: итеративное перекодирование с заданным интервалом.
Нейтральные
· Требуется 10 000+ записей L2 для первого A/B-теста. На ранних фазах JEPA остаётся отключённым.
4. Связь с другими документами¶
· JEPA‑слой в Mem0g: Memory_Hierarchy_Mem0g.md · Sleep Cycle Consolidation: Memory_Hierarchy_Mem0g.md (раздел 3) · CRDT-синхронизация: CRDT_Gossip_and_D2BFT.md · Миграция на DeepSeek‑V4: ADR_001_Migration_to_DeepSeekV4.md