Releases: PlateerLab/synaptic-memory
Releases · PlateerLab/synaptic-memory
v0.9.0 — BM25 Hybrid, Supersede, Auto-Chunking, LongMemEval
Synaptic Memory v0.9.0
Core Improvements
- BM25 hybrid scoring — corpus-size adaptive (large: BM25 80%, small: substring 70%)
- Supersede detection — same-title nodes prefer newest (by updated_at)
- Auto-chunking API —
add_document(chunk_size=1000)with sentence-boundary splitting + PART_OF edges - PPR edge type weights — CAUSED 1.0 > RELATED 0.4 (reduces noise from S2 ablation -14~-32%)
- Kind soft boost — hard filter → 1.5x score boost (MRR +9%)
- Phrase node filter —
_phrasenodes excluded from search results - Evidence threshold — 0.2→0.3 + first-sentence position bias
Benchmarks
- 14 external datasets (6 new: NFCorpus, SciFact, FiQA, MIRACLRetrieval, MultiLongDoc, XPQARetrieval)
- LongMemEval (ICLR 2025) — 500-question long-term memory evaluation
- PPR / Evidence / PhraseExtractor unit tests (67 new)
- Ablation S8 LLM Full stage
Results (FTS only, MemoryBackend)
| Dataset | MRR | Change |
|---|---|---|
| KLUE-MRC | 0.731 | +20% |
| SciFact | 0.536 | +29% |
| Ko-StrategyQA | 0.393 | +24% |
| FiQA (57K) | 0.209 | +58% |
| MultiLongDoc | 0.154 | +120% |
Install: pip install synaptic-memory==0.9.0
v0.8.0 — Graph API 확장 (list/update/maintain/add_turn + 커스텀 NodeKind)
Summary
Graph API expansion release addressing 5 user feedback items: full node listing, partial updates, unified maintenance, conversation session management, and custom NodeKind support.
New Features
graph.list() — List all nodes
nodes = await graph.list() # all
lessons = await graph.list(kind=NodeKind.LESSON) # filter by kind
recent = await graph.list(limit=10) # with limitgraph.update() — Partial node update
await graph.update(node_id, title="New Title", tags=["updated"])- No need to call
backend.update_node()directly - Cache auto-invalidation
graph.maintain() — Unified consolidate + decay + prune
result = await graph.maintain()
print(result.total_affected) # consolidated + decayed + pruned combinedMaintenanceResultdataclass for consistent return type- Existing
consolidate(),decay(),prune()still available individually
graph.add_turn() — Conversation session/turn helper
session, user_node, asst_node = await graph.add_turn(
"Hello",
"Hi! How can I help you?",
session_id="my_session",
)- Auto-creates/reuses SESSION nodes
- user → assistant FOLLOWED_BY linking
- Auto-chaining between turns
Custom NodeKind
await graph.add("Korean Culture", "Greeting etiquette", kind="culture")
await graph.add("Dark Mode", "Preferred", kind="preference")
await graph.list(kind="culture") # filter by custom kindNode.kindtype widened tostr(fully backward-compatible withNodeKindenum)- Safe DB serialization/deserialization across all backends (
_safe_node_kind())
Breaking Changes
None. All existing APIs remain backward-compatible.
Install
pip install synaptic-memory==0.8.0Full Changelog: v0.7.0...v0.8.0
v0.7.0 — PPR + Evidence Chain + HotPotQA 0.856
Synaptic Memory v0.7.0 — PPR, Evidence Chain, Auto-Ontology 최적화, HotPotQA 0.856
Added
- Evidence Chain Assembly — small LLM augmentation for multi-hop reasoning, HotPotQA Correctness 0.856 (+9.2%)
- Personalized PageRank (PPR) engine — replaced spreading activation, multi-hop retrieval +28%
- End-to-end QA benchmark — HotPotQA 24-question suite for Cognee comparison (Correctness 0.784)
- Auto-ontology optimization — HybridClassifier, batch LLM processing, EmbeddingRelation, PhraseExtractor
Fixed
- PhraseExtractor search noise — phrase filtering and optimization
Changed
- Removed
__pycache__from repo and updated.gitignore
Benchmark Results
| Dataset | MRR | nDCG@10 | R@10 |
|---|---|---|---|
| Allganize RAG-Eval | 0.796 | 0.811 | 0.863 |
| HotPotQA-200 | 0.742 | 0.599 | 0.652 |
| AutoRAGRetrieval | 0.646 | 0.681 | 0.798 |
| KLUE-MRC | 0.607 | 0.643 | 0.760 |
Install: pip install synaptic-memory[all]
v0.6.0 — Auto-Ontology + Hybrid Search
Synaptic Memory v0.6.0 — 자동 온톨로지 + 하이브리드 검색 + 벤치마크
Added
- Auto-ontology construction — LLM-based ontology building with search-optimized metadata generation
- LLM classifier prompt optimization — few-shot examples improved accuracy from 50% to 86%
- FTS + embedding hybrid scoring — S7 Auto+Embed achieved MRR 0.83
- Kind/tag/search_keywords utilization in search — FTS and ranking boost
- Ontology auto-construction + benchmark framework + search engine improvements
Changed
- Updated README with auto-ontology, benchmark results, and differentiation points
v0.5.0 — Ontology + Agent Activity + Neo4j
Synaptic Memory v0.5.0 — 온톨로지 + 에이전트 활동 추적 + Intent 검색 + Neo4j
Added
- Ontology Engine — dynamic type hierarchy, property inheritance, relation constraint validation (
OntologyRegistry) - Agent Activity Tracking — session/tool call/decision/outcome capture (
ActivityTracker) - Intent-based Agent Search — 6 search strategies: similar_decisions, past_failures, related_rules, reasoning_chain, context_explore, general (
AgentSearch) - Neo4j Backend — native Cypher graph traversal, dual label, typed relationships, fulltext index
- Auto-embedding — automatic vector generation on
add()/search() - Qdrant + MinIO + CompositeBackend — storage separation by purpose
- 5-axis Resonance Scoring — added context axis (session tag Jaccard similarity)
- GraphTraversal Protocol —
shortest_path(),pattern_match(),find_by_type_hierarchy() - Node.properties — ontology extension attributes, supported across all backends
- MCP 9 new tools (total 16): agent session/action/decision/outcome tracking, ontology tools
- 6 new
NodeKindvalues: tool_call, observation, reasoning, outcome, session, type_def - 5 new
EdgeKindvalues: is_a, invoked, resulted_in, part_of, followed_by docker-compose.ymlfor Neo4j dev environmentdocs/COMPARISON.md— comparison with existing agent memory systems- 185+ unit tests, 22 Neo4j integration tests
Fixed
- MemoryBackend fuzzy search ineffectiveness bug + 12 edge case QA tests
- Library distribution quality:
__version__,py.typed, lazy imports, embedding extra
v0.4.0 — MCP Server
Synaptic Memory v0.4.0 — MCP 서버 (7개 tool) + synaptic-mcp CLI
Added
- MCP Server — 7 tools (knowledge search/add/link/reinforce/stats/export/consolidate)
- SQLite Backend — FTS5, recursive CTE, WAL mode
- QA Test Suite — 169 Wikipedia + 368 GitHub real-data verification cases
synaptic-mcpCLI entry point
v0.3.0 — Protocol Implementations
Synaptic Memory v0.3.0 — 프로토콜 구현체 + LRU 캐시 + JSON export + 노드 병합
Added
- Protocol implementations — LLM QueryRewriter, RegexTagExtractor, EmbeddingProvider
- LRU Cache — NodeCache with hit rate tracking
- JSON Exporter — structured JSON export
- Node Merge — duplicate node merging with edge reconnection
- Find Duplicates — title similarity-based duplicate detection
v0.2.0 — PostgreSQL Backend
Synaptic Memory v0.2.0 — PostgreSQL 백엔드 + PyPI 준비
Added
- PostgreSQL backend — asyncpg + pgvector HNSW + pg_trgm + recursive CTE
- Vector search with cosine distance (pgvector)
- Trigram fuzzy matching with graceful ILIKE fallback
- Hybrid search: FTS + fuzzy + vector merged results
- Connection pooling (asyncpg Pool, min=2, max=10)
- Configurable
embedding_dimparameter ResonanceWeightsadded to public exports- Configurable consolidation thresholds (TTL, promotion access counts)
- README.md, ARCHITECTURE.md, ROADMAP.md documentation
- GitHub Actions CI (Python 3.12/3.13)
- Integration test suite for PostgreSQL (13 tests)
Changed
- Consolidation constants now accept
__init__parameters instead of module globals
v0.1.0 — Core Engine
Synaptic Memory v0.1.0 — 뇌 신경망 기반 Knowledge Graph 라이브러리
Added
- Core models: Node, Edge, ActivatedNode, SearchResult, DigestResult
- Enums: NodeKind (9), EdgeKind (7), ConsolidationLevel (4)
- Protocols: StorageBackend, Digester, QueryRewriter, TagExtractor
- SynapticGraph facade: add, link, search, reinforce, consolidate, prune, decay
- Hybrid 3-stage search: FTS + fuzzy, synonym expansion, query rewrite
- Hebbian learning engine: co-activation reinforcement with anti-resonance
- 4-axis resonance scoring: relevance × importance × recency × vitality
- Memory consolidation cascade: L0 → L1 → L2 → L3 with TTL and promotion
- Korean/English synonym map (38 groups)
- Markdown exporter
- MemoryBackend (dict-based, zero dependencies)
- SQLiteBackend (FTS5, recursive CTE, WAL mode)
- 93 unit tests, pyright strict, ruff clean