知识库管理模块
本文档是 系统设计主文档 的子文档,详细描述知识库管理模块的设计。
2.1.1 功能描述
个人知识库是用户的第二大脑,存储笔记、文档、对话历史等,并提供AI增强的检索和问答功能。
2.1.2 架构设计
知识库管理
├── 数据采集层
│ ├── 手动输入 (文本、语音、图片)
│ ├── 文件导入 (PDF、Word、Markdown等)
│ ├── 网页剪藏 (浏览器插件)
│ └── API接入 (第三方数据源)
│
├── 数据处理层
│ ├── 文本解析与清洗
│ ├── 分词与实体识别
│ ├── 向量化 (Embedding)
│ └── 知识图谱构建
│
├── 存储层
│ ├── 元数据存储 (SQLite - sql.js)
│ │ ├── knowledge_items表 ✅已实现
│ │ ├── tags表 ✅已实现
│ │ ├── knowledge_tags关联表 ✅已实现
│ │ ├── conversations表 ✅已实现
│ │ ├── messages表 ✅已实现
│ │ └── knowledge_search搜索表 ✅已实现
│ │
│ ├── 文件存储
│ │ ├── 原始文件 (docs/, images/, audio/)
│ │ └── 处理后文件 (parsed/, embeddings/)
│ │
│ ├── 向量数据库 (Qdrant/Milvus/ChromaDB)
│ │ └── 向量索引 (支持语义检索)
│ │
│ └── Git仓库
│ ├── .git/ (版本控制)
│ ├── knowledge/ (知识文件)
│ └── .gitattributes (大文件LFS配置)
│
├── AI推理层
│ ├── RAG (检索增强生成)
│ │ ├── 向量检索 (语义相似度匹配)
│ │ ├── 混合检索 (关键词+向量) ⭐v0.26.2
│ │ │ ├── HybridSearchEngine (Vector 0.6 + BM25 0.4)
│ │ │ ├── BM25SearchEngine (Okapi BM25算法)
│ │ │ └── RRF融合算法 (<20ms延迟)
│ │ └── 重排序 (Reranker)
│ │
│ ├── 永久记忆系统 (Clawdbot集成) ⭐v0.26.2
│ │ ├── Daily Notes (.chainlesschain/memory/daily/YYYY-MM-DD.md)
│ │ ├── MEMORY.md (长期知识萃取)
│ │ ├── Pre-compaction Flush (压缩前自动保存)
│ │ └── 元数据解析和统计
│ │
│ ├── 本地LLM
│ │ ├── PC端: LLaMA3/Qwen/ChatGLM (Docker部署)
│ │ ├── 移动端: MiniCPM/Phi-3 (轻量级模型)
│ │ └── 云端: 可选接入OpenAI/Claude API
│ │
│ └── 提示词工程
│ ├── 系统提示词模板
│ ├── 用户自定义提示词
│ └── Few-shot示例库
│
└── 同步层
├── Git Push/Pull (PC ↔ 远程仓库)
├── Git Clone (移动端 ↔ 远程仓库)
└── 冲突解决机制2.1.3 核心流程
知识添加流程:
1. 用户输入/导入内容
2. 安全校验 (U盾/SIMKey解锁)
3. 内容解析与向量化
4. 写入SQLCipher数据库
5. 文件保存到本地目录
6. Git commit (本地提交)
7. Git push到加密远程仓库
8. 向量数据库索引更新
9. 通知其他设备同步知识检索流程:
1. 用户输入查询 (自然语言)
2. 查询向量化 (Embedding)
3. 向量数据库检索 Top-K相关文档
4. SQLCipher查询元数据
5. 重排序 (根据时间、标签、相关性)
6. 返回结果列表AI问答流程:
1. 用户提问
2. 向量检索相关知识 (RAG)
3. 构建提示词 (系统提示 + 检索内容 + 用户问题)
4. 调用本地LLM生成回答
5. 记录对话历史
6. (可选) 将有价值的对话保存为新知识2.1.4 数据模型 ✅已实现
SQLite数据库表结构 (实际实现):
sql
-- 知识条目表 ✅
CREATE TABLE IF NOT EXISTS knowledge_items (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
type TEXT NOT NULL CHECK(type IN ('note', 'document', 'conversation', 'web_clip')),
content TEXT, -- 实际增加:直接存储短内容
content_path TEXT, -- 文件相对路径
embedding_path TEXT, -- 向量文件路径
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
git_commit_hash TEXT,
device_id TEXT, -- 创建设备标识
sync_status TEXT DEFAULT 'pending' CHECK(sync_status IN ('synced', 'pending', 'conflict')),
synced_at INTEGER, -- 实际增加:同步时间
deleted INTEGER DEFAULT 0 -- 实际增加:软删除标记
);
-- 标签表
CREATE TABLE tags (
id TEXT PRIMARY KEY,
name TEXT UNIQUE NOT NULL,
color TEXT,
parent_tag_id TEXT,
FOREIGN KEY (parent_tag_id) REFERENCES tags(id)
);
-- 知识-标签关联表
CREATE TABLE knowledge_tags (
knowledge_id TEXT,
tag_id TEXT,
PRIMARY KEY (knowledge_id, tag_id),
FOREIGN KEY (knowledge_id) REFERENCES knowledge_items(id),
FOREIGN KEY (tag_id) REFERENCES tags(id)
);
-- 查询模板表
CREATE TABLE query_templates (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
knowledge_base_ids TEXT, -- JSON数组: 关联的知识库ID
llm_model TEXT, -- 思维模型地址
rag_model TEXT, -- 问答模型地址
system_prompt TEXT,
temperature REAL DEFAULT 0.7,
max_tokens INTEGER DEFAULT 2000,
created_at INTEGER NOT NULL
);
-- AI对话历史表
CREATE TABLE conversations (
id TEXT PRIMARY KEY,
template_id TEXT,
query TEXT NOT NULL,
response TEXT NOT NULL,
model_used TEXT,
model_version TEXT,
token_count INTEGER,
rating INTEGER, -- 用户评分 1-5
created_at INTEGER NOT NULL,
FOREIGN KEY (template_id) REFERENCES query_templates(id)
);
-- 设备表 (跟踪所有同步设备)
CREATE TABLE devices (
device_id TEXT PRIMARY KEY,
device_name TEXT NOT NULL,
device_type TEXT, -- 'pc', 'mobile', 'web'
public_key TEXT NOT NULL, -- 设备公钥
last_sync_at INTEGER,
is_active INTEGER DEFAULT 1
);2.1.5 技术选型 (实际实现 v0.26.2)
| 组件 | 桌面端 (100%) | iOS (95%) | Android (100%) | 说明 |
|---|---|---|---|---|
| 数据库 | better-sqlite3-multiple-ciphers 12.5.0 (SQLCipher) | SQLCipher 4.5.6 | Room 2.6.1 + SQLCipher 4.5.6 | AES-256加密,生产就绪 |
| 向量数据库 | ChromaDB 3.1.8 + @chroma-core/default-embed 0.1.9 | 内存向量存储 (TF-IDF) | TF-IDF embedder | 嵌入式向量存储 |
| LLM | Ollama (本地) + 14+云端API | 6个提供商 (Ollama, OpenAI, Anthropic, DeepSeek, Volcengine, 自定义) | OpenAI, DeepSeek, Ollama | 支持Qwen/GLM/GPT/Claude等 |
| Embedding | Ollama内置 (nomic-embed-text等) | LLMManager (统一接口) | TF-IDF (离线) + Sentence Transformer (计划) | 多模型支持 |
| Git客户端 | isomorphic-git | - | - | 纯JS实现 |
| 加密库 | node-forge 1.3.1 + tweetnacl 1.0.3 + U盾SDK | CryptoKit (原生) | Android Keystore (原生) | 硬件密钥可选 |
| UI框架 | Vue 3.4.0 + Ant Design Vue 4.1.0 | SwiftUI | Jetpack Compose + Material 3 | TypeScript 5.9.3支持 |
| Markdown | Milkdown 7.17.3 | - | Markdown编辑器 | 所见即所得编辑 |
| 图像处理 | Sharp 0.33.5 + Tesseract.js 5.1.1 | - | - | OCR和图像处理 |
| 搜索 | SQLite FTS5 + HybridSearch (Vector+BM25) ⭐ | SQLite FTS (计划) | Room FTS5 | 全文搜索+混合搜索 |
| 永久记忆 | PermanentMemoryManager (Daily Notes+MEMORY.md) ⭐ | - | - | Clawdbot风格跨会话记忆 |
