Powrót do strony głównej

Memory OS: paradoks reasoning i SGR w agent memory

Artykuł analizuje architekturę Memory OS: paradoks reasoning w extraction, przejście od flat RAG do ontologii ConceptHypothesis, data contract na SQLite/Neo4j. Skala — 106.7 mln tokenów, 2.4 mln krawędzi. Kluczowe rozwiązania dla agent memory.

Paradoks o4-mini: jak reasoning łamie extraction w Memory OS
Advertisement 728x90

Architektura Memory OS: od paradoksów reasoning do hierarchicznego grafu pamięci

Potężne modele takie jak o4-mini z wysokim reasoning_effort naruszają ścisłość schematów na etapie ekstrakcji strukturalnych obiektów. Zamiast precyzyjnego przestrzegania schematów Pydantic, model zaczyna 'ulepszać' strukturę: łączy obiekty, zmienia pola JSON, wygładza typy konceptów. Testowanie 300+ promptów wykazało odwrotną zależność: wzrost reasoning prowadzi do utraty determinizmu.

SGR (Schema-Guided Reasoning) z response_format i ścisłym StrictBase (extra='forbid', bez Optional/default) rozwiązuje problem częściowo, ale model walczy z ograniczeniami. Wprowadzenie Semantic Mapper obniżyło reasoning_effort, przenosząc dyscyplinę na data contract, walidację i postprocessing.

Wyniki:

Google AdInline article slot
  • Obniżenie kosztu tokenów o 48%;
  • Jakość extraction wzrosło z 5.2 do 7.11;
  • Pełna traceability po message_id.

Walidator rekurencyjnie sprawdza schemat JSON: additionalProperties: false, wszystkie pola w required. To podstawowy sygnał dla agent memory: w extraction inteligencja LLM — narzędzie wykonania schematu, a nie kreatywności.

Porażka flat RAG na dużych korpusach i przejście do zarządzanej pamięci

Flat RAG działa na demo, ale załamuje się na korpusach jak Jocker (3253 konwersacje, 24 639 wiadomości): brak lineage, temporal semantics, reguł aktualizacji. Retrieval zwraca podobne fragmenty bez przywiązania do źródeł, co prowadzi do Graph Sludge – tysięcy węzłów bez granularności (26 000+ w Jocker przed refaktoryzacją).

Podział warstw jest konieczny:

Google AdInline article slot
  • Retrieval: top-k podobnych fragmentów;
  • Memory: obiekty wiedzy, połączenia, zmiany czasowe, rewizje, degradacja.

Bez tego system degraduje się w indeks chunków z halucynacjami na złożonych zapytaniach.

Podstawowa ontologia: ConceptHypothesis jako obiekt first-class

Start – podstawowa ontologia z typizowanymi obiektami i relacjami. Rezygnacja z loose entities/summaries na rzecz 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]

Obiekt niesie evidence spans, relations, confidence, revision_count. Temporal reasoning (events, contradictions) – first-class, nie uboczne właściwości chunków.

Google AdInline article slot

Data contract i staging: SQLite jako source of truth

Data contract ustala strukturę na granicach pipeline'u. SQLite – source of truth dla messages (UUID, text, role, parent_id, timestamp, conversation_id). Graf Neo4j: węzły Conversation/Message/Segment/Concept/Topic, krawędzie HAS_MESSAGE/NEXT/CONTAINS_MESSAGE/EVIDENCE_FOR/BELONGS_TO.

Klucz – EVIDENCE_FOR: koncept przywiązany do message-level evidence. Chronologiczny szkielet NEXT/PREVIOUS przyspiesza inferencję bez sortowania bazy.

Staging database (oddzielny SQLite) przechowuje pośrednie stany pipeline'u, zapewniając dowodliwość.

Concept Memory Loop i klasteryzacja tematyczna

Concept Memory Loop: create/attach/refine/reject – cykl zarządzania hipotezami. Klasteryzacja tematyczna przez UMAP + HDBSCAN + Optuna dla weighted links zapobiega over-compression/concept explosion.

LongMemEval i stateful multi-agent inference

LongMemEval (100+ mln tokenów): 4 fazy debugowania, Exploration vs Execution. Stateful multi-agent: Planner/Scout/Synthesizer dla hierarchicznego retrieval.

Agentic Gardener, invalidation i MCP

Agentic Gardener – oddzielny pipeline obsługi grafu. Invalidation/repair dla bi-temporal facts. MCP – suwerenny interfejs pamięci.

Skala: 106.7 mln tokenów, 632 868 jednostek semantycznych, 2.4 mln krawędzi.

Co ważne:

  • Wysoki reasoning łamie SGR; używaj Semantic Mapper i niski effort;
  • Flat RAG → Graph Sludge; wymagaj evidence spans i temporal ontology;
  • ConceptHypothesis z Pydantic StrictBase – podstawa zarządzanej kompresji;
  • SQLite source of truth + Neo4j dla lineage i chronologii;
  • Multi-agent + Gardener dla skali 100+ mln tokenów.

— Editorial Team

Advertisement 728x90

Czytaj dalej