Architektura Memory OS: Od paradoxů uvažování k hierarchickému paměťovému grafu
Mocné modely jako o4-mini s vysokým reasoning_effort narušují přísnost schémat ve fázi extrakce strukturovaných objektů. Místo přesného dodržování Pydantic schémat model začne 'vylepšovat' strukturu: slučuje objekty, mění pole JSON, vyhlazuje typy konceptů. Testování 300+ promptů ukázalo inverzní závislost: růst reasoningu vede ke ztrátě determinismu.
SGR (Schema-Guided Reasoning) s response_format a přísným StrictBase (extra='forbid', bez Optional/default) řeší problém částečně, ale model bojuje s omezeními. Zavedení Semantic Mapper snížilo reasoning_effort, přenesením disciplíny na data contract, validaci a postprocessing.
Výsledky:
- Snížení nákladů na tokeny o 48%;
- Kvalita extrakce vzrostla z 5.2 na 7.11;
- Úplná sledovatelnost podle message_id.
Validátor rekurzivně kontroluje JSON-schéma: additionalProperties: false, všechna pole v required. Toto je základní signál pro agent memory: při extrakci je inteligence LLM nástrojem pro provedení schématu, nikoli tvůrčím procesem.
Selhání flat RAG na velkých korpusech a přechod k řízené paměti
Flat RAG funguje na demo, ale selhává na korpusech jako Jocker (3253 konverzací, 24 639 zpráv): chybí lineage, temporální sémantika, pravidla aktualizace. Retrieval vrací podobné fragmenty bez vazby na zdroje, což vede k Graph Sludge — tisícům uzlů bez granularity (26 000+ v Jocker před refaktoringem).
Rozdělení vrstev je nezbytné:
- Retrieval: top-k podobných fragmentů;
- Memory: znalostní objekty, vztahy, časové změny, revize, degradace.
Bez toho se systém degraduje na chunk-index s halucinacemi na složitých dotazech.
Základní ontologie: ConceptHypothesis jako first-class objekt
Start — základní ontologie s typizovanými objekty a vztahy. Odmítnutí loose entities/summaries ve prospěch ConceptHypothesis:
from pydantic import BaseModel, ConfigDict, Field
from typing import List, Literal, Optional
from datetime import datetime
class StrictBase(BaseModel):
model_config = ConfigDict(extra="forbid")
class EvidenceSpan(StrictBase):
source_id: str
message_id: str
text: str
confidence: float
class ConceptRelation(StrictBase):
target_id: str
relation: Literal["causes", "conflicts_with", "supports", "instance_of", "enables"]
confidence: float
class ConceptHypothesis(StrictBase):
concept_id: str
title: str
type: Literal["behavioral_pattern", "project", "event", "tension", "goal", "belief", "entity"]
description: str
state: Literal["active", "weak", "merged", "split", "archived"]
confidence: float
aliases: List[str]
evidence_spans: List[EvidenceSpan]
relations: List[ConceptRelation]
revision_count: int
first_seen: Optional[datetime]
last_seen: Optional[datetime]
Objekt nese evidence spans, relations, confidence, revision_count. Temporální reasoning (events, contradictions) — first-class, ne vedlejší vlastnosti chunků.
Data contract a staging: SQLite jako source of truth
Data contract fixuje strukturu na hranicích pipeline. SQLite — source of truth pro messages (UUID, text, role, parent_id, timestamp, conversation_id). Graf Neo4j: uzly Conversation/Message/Segment/Concept/Topic, hrany HAS_MESSAGE/NEXT/CONTAINS_MESSAGE/EVIDENCE_FOR/BELONGS_TO.
Klíč — EVIDENCE_FOR: koncept je připojen k message-level evidence. Chronologický skelet NEXT/PREVIOUS urychluje inference bez řazení databáze.
Staging database (samostatný SQLite) uchovává průběžné stavy pipeline, zajišťujíc prokazatelnost.
Concept Memory Loop a topická clusterizace
Concept Memory Loop: create/attach/refine/reject — cyklus řízení hypotéz. Topická clusterizace přes UMAP + HDBSCAN + Optuna pro weighted links zabraňuje over-compression/concept explosion.
LongMemEval a stateful multi-agent inference
LongMemEval (100+ milionů tokenů): 4 fáze ladění, Exploration vs Execution. Stateful multi-agent: Planner/Scout/Synthesizer pro hierarchický retrieval.
Agentic Gardener, invalidation a MCP
Agentic Gardener — samostatný pipeline údržby grafu. Invalidation/repair pro bi-temporal facts. MCP — suverénní rozhraní paměti.
Měřítko: 106.7 milionů tokenů, 632 868 sémantických jednotek, 2.4 milionu hran.
Co je důležité:
- Vysoký reasoning lámá SGR; používejte Semantic Mapper a nízký effort;
- Flat RAG → Graph Sludge; vyžadujte evidence spans a temporální ontologii;
- ConceptHypothesis s Pydantic StrictBase — základ řízené komprese;
- SQLite source of truth + Neo4j pro lineage a chronologii;
- Multi-agent + Gardener pro měřítko 100+ milionů tokenů.
— Editorial Team
Zatím žádné komentáře.