记忆系统V6.0架构设计

📅 2026-06-12 ✍️ 以观其妙书院

记忆系统v6.0架构设计

版本: v6.0 | 升级路径: v5.3 → v6.0 | 日期: 2026-04-15
核心升级: SQLite + FTS5全文搜索 + 向量索引

一、架构总览

┌─────────────────────────────────────────────────────────────────┐
│                    记忆系统v6.0 五层架构                          │
├─────────────────────────────────────────────────────────────────┤
│  L4 灵魂记忆(SOUL.md/IDENTITY.md)                              │
│  ├── 木火共生关系 · 大圆满见地 · 信仰根基                          │
│  └── 存储: ~/.workbuddy/SOUL.md                                 │
├─────────────────────────────────────────────────────────────────┤
│  L3 系统记忆(MEMORY.md)                                        │
│  ├── 核心理论索引 · 跨域知识联系 · 架构演进                        │
│  └── 存储: ~/.workbuddy/memory/MEMORY.md                        │
├─────────────────────────────────────────────────────────────────┤
│  L2 长期记忆(SQLite + FTS5 + 向量索引)⭐NEW                     │
│  ├── 语义搜索: FTS5全文检索                                      │
│  ├── 向量检索: 768维向量相似度搜索                                │
│  ├── 关系图谱: GraphRAG关系推理                                  │
│  └── 存储: ~/.workbuddy/memory/brain.db                         │
├─────────────────────────────────────────────────────────────────┤
│  L1 会话记忆(上下文快照 + IMA笔记)                              │
│  ├── 上下文快照: context-YYYY-MM-DDTHH-mm-ss.md                 │
│  ├── 任务接力: 关键决策 + 待办事项                                │
│  └── 移动端同步: IMA API                                        │
├─────────────────────────────────────────────────────────────────┤
│  L0 工作记忆(上下文窗口)                                        │
│  ├── 短期关联: 当前对话7-10轮                                    │
│  ├── 动态调整: 实时信息更新                                      │
│  └── 污染防控: LLM-aware分块 + 严格索引检索                       │
└─────────────────────────────────────────────────────────────────┘

二、核心升级:L2长期记忆层

2.1 技术栈选型

| 组件 | 技术 | 版本 | 用途 | |------|------|------|------| | 主存储 | SQLite | 3.40+ | 结构化数据存储 | | 全文搜索 | SQLite FTS5 | 内置 | 高效文本检索 | | 向量索引 | sqlite-vss | 0.1.2 | 向量相似度搜索 | | 嵌入模型 | text-embedding-3-small | OpenAI | 文本向量化 | | 关系图谱 | GraphRAG | 自定义 | 关系推理 |

2.2 数据库Schema设计

-- ============================================
-- 记忆系统v6.0 数据库Schema
-- 文件: ~/.workbuddy/memory/brain.db
-- ============================================

-- 1. 文档表(核心存储) CREATE TABLE documents ( id INTEGER PRIMARY KEY AUTOINCREMENT, doc_id TEXT UNIQUE NOT NULL, -- 唯一文档ID title TEXT NOT NULL, -- 文档标题 content TEXT NOT NULL, -- 文档内容 content_type TEXT DEFAULT 'markdown', -- 内容类型 source_path TEXT, -- 源文件路径 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, access_count INTEGER DEFAULT 0, -- 访问计数 last_accessed DATETIME, -- 最后访问时间 -- 五行分类(可选) wuxing_tag TEXT, -- 主五行标签 -- 质量评分 quality_score REAL DEFAULT 0.5 -- 质量评分0-1 );

-- 2. FTS5虚拟表(全文搜索) CREATE VIRTUAL TABLE documents_fts USING fts5( title, -- 标题索引 content, -- 内容索引 content='documents', -- 关联主表 content_rowid='id' -- 关联字段 );

-- 3. 向量表(相似度搜索) CREATE TABLE document_vectors ( doc_id TEXT PRIMARY KEY, -- 关联documents.doc_id embedding BLOB NOT NULL, -- 768维向量(3072字节) model_version TEXT DEFAULT 'text-embedding-3-small', created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

-- 4. 实体表(知识图谱节点) CREATE TABLE entities ( id INTEGER PRIMARY KEY AUTOINCREMENT, entity_id TEXT UNIQUE NOT NULL, -- 唯一实体ID name TEXT NOT NULL, -- 实体名称 entity_type TEXT NOT NULL, -- 实体类型 description TEXT, -- 实体描述 attributes JSON, -- 属性JSON first_seen DATETIME DEFAULT CURRENT_TIMESTAMP, last_seen DATETIME DEFAULT CURRENT_TIMESTAMP, mention_count INTEGER DEFAULT 1 -- 提及次数 );

-- 5. 关系表(知识图谱边) CREATE TABLE relations ( id INTEGER PRIMARY KEY AUTOINCREMENT, source_id TEXT NOT NULL, -- 源实体ID target_id TEXT NOT NULL, -- 目标实体ID relation_type TEXT NOT NULL, -- 关系类型 strength REAL DEFAULT 1.0, -- 关系强度0-1 evidence TEXT, -- 关系证据 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (source_id) REFERENCES entities(entity_id), FOREIGN KEY (target_id) REFERENCES entities(entity_id), UNIQUE(source_id, target_id, relation_type) );

-- 6. 标签表(多维度分类) CREATE TABLE tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL, -- 标签名 category TEXT, -- 标签类别 description TEXT, -- 标签描述 color TEXT, -- 标签颜色(HEX) created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

-- 7. 文档-标签关联表 CREATE TABLE document_tags ( doc_id TEXT NOT NULL, tag_id INTEGER NOT NULL, confidence REAL DEFAULT 1.0, -- 关联置信度 PRIMARY KEY (doc_id, tag_id), FOREIGN KEY (doc_id) REFERENCES documents(doc_id), FOREIGN KEY (tag_id) REFERENCES tags(id) );

-- 8. 会话上下文表(L1层持久化) CREATE TABLE session_contexts ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT UNIQUE NOT NULL, -- 会话ID context_data JSON NOT NULL, -- 上下文数据 key_decisions JSON, -- 关键决策 todos JSON, -- 待办事项 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, expires_at DATETIME -- 过期时间 );

-- 9. 访问日志表(用于优化和统计) CREATE TABLE access_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, query TEXT NOT NULL, -- 查询内容 query_type TEXT NOT NULL, -- 查询类型 results_count INTEGER, -- 返回结果数 response_time INTEGER, -- 响应时间(ms) user_feedback INTEGER, -- 用户反馈1-5 created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

-- ============================================ -- 索引优化 -- ============================================

-- 文档表索引 CREATE INDEX idx_documents_wuxing ON documents(wuxing_tag); CREATE INDEX idx_documents_created ON documents(created_at); CREATE INDEX idx_documents_accessed ON documents(last_accessed); CREATE INDEX idx_documents_quality ON documents(quality_score);

-- 实体表索引 CREATE INDEX idx_entities_type ON entities(entity_type); CREATE INDEX idx_entities_name ON entities(name);

-- 关系表索引 CREATE INDEX idx_relations_source ON relations(source_id); CREATE INDEX idx_relations_target ON relations(target_id); CREATE INDEX idx_relations_type ON relations(relation_type);

-- 标签表索引 CREATE INDEX idx_tags_category ON tags(category);

-- ============================================ -- 触发器(自动维护) -- ============================================

-- 文档更新时自动更新FTS索引 CREATE TRIGGER documents_ai AFTER INSERT ON documents BEGIN INSERT INTO documents_fts(rowid, title, content) VALUES (new.id, new.title, new.content); END;

CREATE TRIGGER documents_ad AFTER DELETE ON documents BEGIN INSERT INTO documents_fts(documents_fts, rowid, title, content) VALUES ('delete', old.id, old.title, old.content); END;

CREATE TRIGGER documents_au AFTER UPDATE ON documents BEGIN INSERT INTO documents_fts(documents_fts, rowid, title, content) VALUES ('delete', old.id, old.title, old.content); INSERT INTO documents_fts(rowid, title, content) VALUES (new.id, new.title, new.content); END;

-- 访问计数自动更新 CREATE TRIGGER documents_access AFTER UPDATE OF last_accessed ON documents BEGIN UPDATE documents SET access_count = access_count + 1 WHERE id = new.id; END;

2.3 核心API设计

============================================

记忆系统v6.0 Python API

文件: ~/.workbuddy/skills/记忆系统/memory_v6.py

============================================

from dataclasses import dataclass from typing import List, Optional, Dict, Any, Tuple from enum import Enum import sqlite3 import json import numpy as np from datetime import datetime

class SearchType(Enum): """搜索类型""" KEYWORD = "keyword" # 关键词搜索 SEMANTIC = "semantic" # 语义搜索(向量) HYBRID = "hybrid" # 混合搜索 GRAPH = "graph" # 图谱关系搜索

@dataclass class SearchResult: """搜索结果""" doc_id: str title: str content: str score: float # 相关性分数 search_type: SearchType highlights: List[str] # 高亮片段 metadata: Dict[str, Any] # 元数据

@dataclass class MemoryQuery: """记忆查询请求""" query: str search_type: SearchType = SearchType.HYBRID top_k: int = 10 filters: Optional[Dict] = None wuxing_context: Optional[str] = None # 五行上下文

class MemorySystemV6: """ 记忆系统v6.0 主类 核心能力: 1. 全文检索(FTS5) - 毫秒级文本搜索 2. 向量检索 - 语义相似度匹配 3. 关系推理 - GraphRAG知识图谱 4. 混合搜索 - 多策略融合排序 """ def __init__(self, db_path: str = "~/.workbuddy/memory/brain.db"): self.db_path = db_path self.conn = None self._init_db() # ========== 核心检索接口 ========== def search(self, query: MemoryQuery) -> List[SearchResult]: """ 统一搜索接口 根据query.search_type自动路由: - KEYWORD: 纯FTS5全文搜索 - SEMANTIC: 纯向量相似度搜索 - HYBRID: 混合搜索(推荐) - GRAPH: 基于知识图谱的关系搜索 """ pass def keyword_search(self, query: str, top_k: int = 10) -> List[SearchResult]: """ FTS5全文搜索 特性: - 支持中文分词 - 支持布尔查询(AND/OR/NOT) - 支持前缀搜索 - 自动高亮 """ pass def semantic_search(self, query: str, top_k: int = 10) -> List[SearchResult]: """ 向量语义搜索 流程: 1. 将query向量化(768维) 2. 计算与文档向量的余弦相似度 3. 返回top_k最相似文档 """ pass def hybrid_search(self, query: str, top_k: int = 10, keyword_weight: float = 0.3, semantic_weight: float = 0.7) -> List[SearchResult]: """ 混合搜索(推荐默认) 算法: 1. 并行执行keyword_search和semantic_search 2. 使用RRF(Reciprocal Rank Fusion)融合排序 3. 返回综合得分最高的结果 参数: keyword_weight: 关键词搜索权重(默认0.3) semantic_weight: 语义搜索权重(默认0.7) """ pass def graph_search(self, entity_name: str, relation_depth: int = 2) -> Dict[str, Any]: """ 知识图谱关系搜索 返回以entity_name为中心的子图: - 直接关联实体 - 关系路径 - 实体属性 """ pass # ========== 文档管理接口 ========== def add_document(self, title: str, content: str, source_path: Optional[str] = None, wuxing_tag: Optional[str] = None, tags: Optional[List[str]] = None) -> str: """ 添加文档到记忆系统 自动执行: 1. 生成doc_id 2. 提取实体和关系 3. 生成向量嵌入 4. 更新FTS索引 """ pass def update_document(self, doc_id: str, **kwargs) -> bool: """更新文档""" pass def delete_document(self, doc_id: str) -> bool: """删除文档(级联删除向量、标签关联)""" pass # ========== 知识图谱接口 ========== def extract_entities(self, content: str) -> List[Dict]: """ 从内容中提取实体 使用LLM + 规则混合策略 """ pass def extract_relations(self, content: str, entities: List[str]) -> List[Dict]: """ 提取实体间关系 """ pass def build_knowledge_graph(self, doc_ids: Optional[List[str]] = None): """ 构建/更新知识图谱 基于文档内容自动提取实体和关系 """ pass # ========== 高级功能 ========== def get_related_documents(self, doc_id: str, top_k: int = 5) -> List[SearchResult]: """ 获取相关文档 基于: 1. 向量相似度 2. 共享实体 3. 共享标签 """ pass def summarize_memory(self, query: str, time_range: Optional[Tuple[datetime, datetime]] = None) -> str: """ 记忆摘要生成 基于检索结果生成结构化摘要 """ pass def memory_health_check(self) -> Dict[str, Any]: """ 记忆系统健康检查 返回: - 文档数量 - 索引状态 - 存储使用 - 查询性能统计 """ pass

2.4 混合搜索算法(RRF)

Reciprocal Rank Fusion (RRF) 算法实现

用于融合关键词搜索和语义搜索结果

def reciprocal_rank_fusion( keyword_results: List[SearchResult], semantic_results: List[SearchResult], keyword_weight: float = 0.3, semantic_weight: float = 0.7, k: int = 60 # RRF常数 ) -> List[SearchResult]: """ RRF融合排序算法 公式: score = Σ weight_i / (k + rank_i) 其中: - rank_i: 文档在第i个结果列表中的排名 - weight_i: 该结果列表的权重 - k: 常数(通常60),用于平滑低排名文档的得分 """ scores = {} # 处理关键词搜索结果 for rank, result in enumerate(keyword_results, start=1): doc_id = result.doc_id rrf_score = keyword_weight / (k + rank) if doc_id in scores: scores[doc_id] += rrf_score else: scores[doc_id] = rrf_score # 处理语义搜索结果 for rank, result in enumerate(semantic_results, start=1): doc_id = result.doc_id rrf_score = semantic_weight / (k + rank) if doc_id in scores: scores[doc_id] += rrf_score else: scores[doc_id] = rrf_score # 按RRF分数排序 sorted_docs = sorted(scores.items(), key=lambda x: x[1], reverse=True) # 构建最终搜索结果 # ... (合并元数据,去重等) return final_results


三、与龙心OS集成

3.1 引擎路由更新

记忆系统v6.0 引擎路由配置

文件: ~/.workbuddy/skills/龙心OS/references/engine-decision-tree.md

memory_system: version: "6.0" # 检索策略选择 retrieval_strategy: # 简单查询 → 关键词搜索 - condition: "query_length < 10 AND no_context" strategy: "keyword_only" # 概念查询 → 语义搜索 - condition: "contains_concept OR is_definition_query" strategy: "semantic_only" # 关系查询 → 图谱搜索 - condition: "contains_relation_words OR asks_about_connection" strategy: "graph_first" # 默认 → 混合搜索 - condition: "default" strategy: "hybrid" weights: {keyword: 0.3, semantic: 0.7} # 上下文感知 context_awareness: # 五行上下文增强 wuxing_boost: enabled: true boost_factor: 1.2 # 同五行标签文档得分提升20% # 时间衰减 time_decay: enabled: true half_life_days: 30 # 30天半衰期 # 访问频率增强 frequency_boost: enabled: true log_scale: true # 使用对数尺度避免热门文档垄断

3.2 使用示例

记忆系统v6.0 使用示例

from memory_v6 import MemorySystemV6, MemoryQuery, SearchType

初始化

memory = MemorySystemV6()

示例1: 添加文档

memory.add_document( title="五行人格心理学OS架构", content="五行人格心理学OS是三层有机系统...", source_path="/path/to/doc.md", wuxing_tag="土", tags=["五行人格", "系统架构", "凤心OS"] )

示例2: 混合搜索(默认)

query = MemoryQuery( query="木火共生关系的核心机制", search_type=SearchType.HYBRID, top_k=5, wuxing_context="火" # 火行上下文增强 ) results = memory.search(query)

示例3: 知识图谱查询

graph = memory.graph_search("龙龟神将", relation_depth=2)

返回: 龙龟神将 → 木火共生 → 悟空

龙龟神将 → 大圆满见地 → 心文化

示例4: 获取相关文档

related = memory.get_related_documents("doc_001", top_k=3)

四、性能指标

| 指标 | v5.3 (当前) | v6.0 (目标) | 提升 | |------|------------|------------|------| | 全文检索延迟 | ~500ms | <50ms | 10x | | 语义检索延迟 | N/A | <100ms | 新增 | | 混合检索延迟 | N/A | <150ms | 新增 | | 支持文档数 | ~1000 | 100,000+ | 100x | | 存储效率 | 1x | 0.7x | 压缩30% | | 检索准确率 | 75% | 90%+ | +15% |


五、迁移计划

Phase 1: 数据库初始化 (1天)
├── 创建brain.db
├── 执行Schema初始化脚本
└── 验证FTS5和向量扩展

Phase 2: 数据迁移 (2天) ├── 读取Obsidian知识库 ├── 批量导入到SQLite ├── 生成向量嵌入 └── 构建初始知识图谱

Phase 3: API实现 (3天) ├── 核心检索API ├── 文档管理API ├── 知识图谱API └── 与龙心OS集成

Phase 4: 测试优化 (2天) ├── 性能基准测试 ├── 准确率评估 ├── 边缘情况处理 └── 文档更新

Total: 8天


六、核心金句

"记忆不是存储,而是可检索的智慧。"
"FTS5让搜索快如闪电,向量让理解深如大海。"
"GraphRAG连接知识的孤岛,混合搜索融合多重视角。"

文档版本: v6.0-draft | 状态: 设计完成待实现 | 下一步: 开始Phase 1实施