Skip to content

知识库管理模块

本文档是 系统设计主文档 的子文档,详细描述知识库管理模块的设计。


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.6Room 2.6.1 + SQLCipher 4.5.6AES-256加密,生产就绪
向量数据库ChromaDB 3.1.8 + @chroma-core/default-embed 0.1.9内存向量存储 (TF-IDF)TF-IDF embedder嵌入式向量存储
LLMOllama (本地) + 14+云端API6个提供商 (Ollama, OpenAI, Anthropic, DeepSeek, Volcengine, 自定义)OpenAI, DeepSeek, Ollama支持Qwen/GLM/GPT/Claude等
EmbeddingOllama内置 (nomic-embed-text等)LLMManager (统一接口)TF-IDF (离线) + Sentence Transformer (计划)多模型支持
Git客户端isomorphic-git--纯JS实现
加密库node-forge 1.3.1 + tweetnacl 1.0.3 + U盾SDKCryptoKit (原生)Android Keystore (原生)硬件密钥可选
UI框架Vue 3.4.0 + Ant Design Vue 4.1.0SwiftUIJetpack Compose + Material 3TypeScript 5.9.3支持
MarkdownMilkdown 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风格跨会话记忆

ChainlessChain 系统设计文档 — 面向开发者