一眼入口
核心定位
| 维度 | 说明 |
|---|
| 核心理念 | 增量构建持久化 Wiki,知识只编译一次并持续更新 |
| 基础方法论 | 基于 Karpathy 的 LLM Wiki 设计模式 |
| 架构 | 原始资料(不可变)→ Wiki(LLM 生成)→ Schema(规则配置) |
| Obsidian 兼容 | Wiki 目录可直接作为 Obsidian 仓库使用 |
三步上手
# 1. 启动应用 → 创建新项目(选择模板)
# 2. 设置 → 配置 LLM 提供商(API 密钥 + 模型)
# 3. 资料源 → 导入文档(PDF、DOCX、MD 等)
安装命令
# 预编译二进制(推荐)
# 从 https://github.com/nashsu/llm_wiki/releases 下载对应平台安装包
# 从源码构建(前置条件:Node.js 20+, Rust 1.70+)
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm run tauri dev # 开发模式
npm run tauri build # 生产构建
# Chrome 扩展
# 1. 打开 chrome://extensions
# 2. 启用「开发者模式」
# 3. 点击「加载已解压的扩展程序」
# 4. 选择 extension/ 目录
最小工作流
两步思维链摄入
LLM Wiki 将文档摄入拆分为两次顺序 LLM 调用,显著提升质量:
┌─────────────────────────────────────────────────────────────┐
│ 第一步(分析):LLM 阅读资料 → 结构化分析 │
│ - 关键实体、概念、论点 │
│ - 与现有 Wiki 内容的关联 │
│ - 与现有知识的矛盾和张力 │
│ - Wiki 结构建议 │
├─────────────────────────────────────────────────────────────┤
│ 第二步(生成):LLM 基于分析 → 生成 Wiki 文件 │
│ - 带 frontmatter 的资料摘要(type, title, sources[]) │
│ - 实体页面、概念页面及交叉引用 │
│ - 更新 index.md、log.md、overview.md │
│ - 需要人工判断的审核项 │
└─────────────────────────────────────────────────────────────┘
摄入增强机制
| 特性 | 说明 |
|---|
| SHA256 增量缓存 | 摄入前检查源文件内容哈希,未变更自动跳过 |
| 持久化队列 | 串行处理,队列持久化到磁盘,重启后自动恢复 |
| 失败重试 | 失败任务自动重试最多 3 次 |
| 文件夹导入 | 递归导入保留目录结构,路径作为分类上下文 |
| 向量 Embedding | 开启向量搜索时,新页面摄入后自动生成 |
| 来源可追溯 | frontmatter sources: [] 字段链接回原始资料 |
高频场景 Recipes
场景 1:导入文档构建知识库
资料源 → 选择文件/文件夹 → 观察活动面板 → Wiki 自动生成
| 步骤 | 操作 |
|---|
| 1 | 点击侧边栏「资料源」图标 |
| 2 | 选择导入方式:单个文件 / 文件夹 |
| 3 | 等待活动面板显示摄入进度 |
| 4 | 浏览 wiki/ 目录查看生成的页面 |
场景 2:查询知识库
聊天 → 输入问题 → LLM 读取相关 Wiki → 返回带引用的回答
| 步骤 | 操作 |
|---|
| 1 | 点击侧边栏「聊天」图标 |
| 2 | 输入自然语言问题 |
| 3 | 查看带编号引用的回答 [1]、[2] |
| 4 | 展开「引用参考面板」查看来源页面 |
场景 3:探索知识图谱
图谱 → 查看节点/边 → 点击洞察卡片 → 触发深度研究
| 步骤 | 操作 |
|---|
| 1 | 点击侧边栏「图谱」图标 |
| 2 | 按类型或社区查看节点着色 |
| 3 | 悬停节点查看关联度分数 |
| 4 | 点击「惊奇连接」或「知识空白」卡片 |
| 5 | 可选:点击 Deep Research 按钮填补知识空白 |
场景 4:深度研究
图谱洞察 → Deep Research → LLM 生成搜索查询 → 网络搜索 → 研究结果自动摄入
| 步骤 | 操作 |
|---|
| 1 | 从图谱洞察触发或手动启动 |
| 2 | LLM 读取 overview.md + purpose.md 生成研究主题 |
| 3 | 在确认对话框中编辑主题和搜索查询 |
| 4 | Tavily API 执行多条网络搜索 |
| 5 | LLM 综合结果生成 Wiki 研究页面 |
| 6 | 自动交叉引用现有 Wiki 并摄入 |
场景 5:使用 Chrome 扩展剪藏网页
网页 → 点击扩展图标 → 选择目标 Wiki → 自动摄入
| 步骤 | 操作 |
|---|
| 1 | 安装 Chrome 扩展(见安装命令) |
| 2 | 浏览目标网页,点击扩展图标 |
| 3 | 选择剪藏到的 Wiki 项目 |
| 4 | 应用自动执行两步摄入流程 |
知识图谱速查
四信号关联度模型
| 信号 | 权重 | 描述 |
|---|
| 直接链接 | ×3.0 | 通过 [[wikilinks]] 链接的页面 |
| 来源重叠 | ×4.0 | 共享同一原始资料的页面 |
| Adamic-Adar | ×1.5 | 共享共同邻居的页面(按邻居度数加权) |
| 类型亲和 | ×1.0 | 相同页面类型的加分 |
图谱交互
悬停节点 → 邻居保持可见,非邻居变暗,边高亮显示关联度分数
缩放控件 → 放大、缩小、适应屏幕
着色切换 → 按页面类型 或 按 Louvain 社区
Louvain 社区检测
| 特性 | 说明 |
|---|
| 自动聚类 | 根据链接拓扑发现知识聚类 |
| 内聚度评分 | 内部边密度评分,低内聚(< 0.15)标警告 |
| 12 色调色板 | 集群之间视觉区分清晰 |
图谱洞察类型
| 类型 | 说明 | 交互 |
|---|
| 惊奇连接 | 跨社区边、跨类型链接、边缘↔核心耦合 | 可消除,标记后不再重复 |
| 孤立页面 | 度 ≤ 1,与 Wiki 其余部分缺少连接 | 点击高亮,可 Deep Research |
| 稀疏社区 | cohesion < 0.15,≥ 3 页 | 可 Deep Research |
| 桥接节点 | 连接 3+ 个集群的关键枢纽页面 | 附带 Deep Research 按钮 |
查询检索管线
阶段 1:分词搜索
- 英文:分词 + 停用词过滤
- 中文:CJK 二元组分词
- 标题匹配加分(+10 分)
- 同时搜索 wiki/ 和 raw/sources/
阶段 1.5:向量语义搜索(可选)
- OpenAI 兼容 /v1/embeddings 端点
- LanceDB 存储(Rust 嵌入式)
- 余弦相似度发现语义相关页面
- 召回率从 58.2% 提升至 71.4%
阶段 2:图谱扩展
- 搜索结果作为种子节点
- 四信号关联度模型发现相关页面
- 2 跳遍历带衰减
阶段 3:预算控制
- 可配置上下文窗口:4K → 1M tokens
- 比例分配:60% Wiki 页面,20% 聊天历史,5% 索引,15% 系统提示
阶段 4:上下文组装
- 编号页面附完整内容
- 系统提示包含 purpose.md、语言规则、引用格式、index.md
- LLM 按编号引用页面:[1]、[2]
多对话聊天
| 功能 | 说明 |
|---|
| 独立会话 | 创建、重命名、删除对话 |
| 对话侧边栏 | 快速切换不同主题 |
| 持久化 | 每个对话保存到 .llm-wiki/chats/{id}.json |
| 历史深度 | 可配置上下文消息数量(默认 10) |
| 引用参考面板 | 显示使用了哪些 Wiki 页面,按类型分组 |
| 重新生成 | 一键重新生成最后一条回复 |
| 保存到 Wiki | 将回答归档到 wiki/queries/,自动摄入实体/概念 |
思维链展示
| 特性 | 说明 |
|---|
| 流式思维展示 | 生成中滚动显示 5 行,带透明度渐变 |
| 默认折叠 | 生成完成后隐藏,点击展开 |
| 视觉分离 | 思维内容与主回复分开显示 |
文档格式支持
| 格式 | 方法 |
|---|
| PDF | pdf-extract(Rust)+ 文件缓存 |
| DOCX | docx-rs:标题、加粗/斜体、列表、表格 → 结构化 Markdown |
| PPTX | ZIP + XML:逐页提取,保留标题/列表结构 |
| XLSX/XLS/ODS | calamine:正确单元格类型、多工作表、Markdown 表格 |
| 图片 | 原生预览(png, jpg, gif, webp, svg 等) |
| 视频/音频 | 内置播放器 |
| 网页剪藏 | Readability.js + Turndown.js → 干净 Markdown |
设置与配置
LLM 提供商
| 提供商 | 配置项 |
|---|
| OpenAI | API Key、模型、上下文窗口 |
| Anthropic | API Key、模型 |
| Google | API Key、模型 |
| Ollama | 本地端点、模型 |
| 自定义 | OpenAI 兼容端点 |
向量搜索(可选)
# 开启步骤
1. 设置 → 启用向量语义搜索
2. 配置 OpenAI 兼容 embedding 端点
3. 配置 API Key
4. 选择 embedding 模型
上下文窗口配置
| 窗口大小 | 适用场景 |
|---|
| 4K tokens | 轻量级 LLM |
| 32K tokens | 标准使用 |
| 128K tokens | 长文档分析 |
| 1M tokens | 超长上下文 LLM |
场景模板
| 模板 | 用途 |
|---|
| 研究 | 学术研究、知识探索 |
| 阅读 | 文档阅读、读书笔记 |
| 个人成长 | 自学、技能积累 |
| 商业 | 商业分析、市场调研 |
| 通用 | 通用知识管理 |
项目结构
my-wiki/
├── purpose.md # 目标、关键问题、研究范围(Wiki 的灵魂)
├── schema.md # Wiki 结构规则、页面类型
├── raw/
│ ├── sources/ # 上传的文档(不可变)
│ └── assets/ # 本地图片
├── wiki/
│ ├── index.md # 内容目录
│ ├── log.md # 操作历史(可解析格式)
│ ├── overview.md # 全局概要(自动更新)
│ ├── entities/ # 人物、组织、产品
│ ├── concepts/ # 理论、方法、技术
│ ├── sources/ # 资料摘要
│ ├── queries/ # 保存的聊天回答 + 研究
│ ├── synthesis/ # 跨资料分析
│ └── comparisons/ # 并列对比
├── .obsidian/ # Obsidian 仓库配置(自动生成)
└── .llm-wiki/ # 应用配置、聊天历史、审核项
Wiki 页面组成
| 字段 | 说明 |
|---|
| type | 页面类型(entity/concept/source/query/synthesis/comparison) |
| title | 页面标题 |
| sources[] | 贡献的原始资料文件路径 |
| [[wikilinks]] | 交叉引用语法 |
| index.md | 内容目录和 LLM 导航入口 |
| log.md | 时序操作记录 |
技术栈
| 层级 | 技术 |
|---|
| 桌面 | Tauri v2(Rust 后端) |
| 前端 | React 19 + TypeScript + Vite |
| UI | shadcn/ui + Tailwind CSS v4 |
| 编辑器 | Milkdown(基于 ProseMirror) |
| 图谱 | sigma.js + graphology + ForceAtlas2 |
| 搜索 | 分词 + 图谱关联度 + 向量(LanceDB) |
| PDF | pdf-extract |
| Office | docx-rs + calamine |
| 国际化 | react-i18next |
| 状态管理 | Zustand |
| 网络搜索 | Tavily API |
常见操作命令
摄入相关
| 操作 | 说明 |
|---|
| 导入单个文件 | 资料源 → 选择文件 → 等待摄入 |
| 导入文件夹 | 资料源 → 选择文件夹 → 保留目录结构 |
| 重试失败任务 | 活动面板 → 找到失败项 → 点击重试 |
| 取消摄入 | 活动面板 → 找到队列项 → 点击取消 |
审核系统
| 操作 | 说明 |
|---|
| 查看审核项 | 点击侧边栏「审核」图标 |
| 预定义操作 | 创建页面 / 深度研究 / 跳过 |
| 摄入时生成搜索 | LLM 为审核项预生成 Tavily 搜索查询 |
Lint 维护
| 操作 | 说明 |
|---|
| 运行 Lint | 点击侧边栏「Lint」图标 |
| 修复失效链接 | 自动清理指向已删除页面的 [[wikilinks]] |
| 清理孤立页面 | 删除无关联的 Wiki 页面 |
收尾动作与排障
数据清理
| 场景 | 操作 |
|---|
| 删除资料文件 | 同时移除 Wiki 摘要页面 |
| 三重匹配 | frontmatter sources[]、摘要页面名称、章节引用 |
| 共享实体保护 | 链接到多资料的实体只从 sources[] 移除,不删整个页面 |
| 索引清理 | 被移除页面从 index.md 清除 |
关闭行为
| 平台 | 行为 |
|---|
| macOS | 关闭按钮隐藏窗口(程序后台运行),Cmd+Q 退出 |
| Windows/Linux | 关闭时弹出确认对话框 |
常见问题
| 问题 | 解决 |
|---|
| 摄入失败 | 检查 LLM API 密钥、网络连接;活动面板重试 |
| 向量搜索无结果 | 确认已开启向量搜索、配置了 embedding 端点 |
| 图谱显示异常 | 检查 Wiki 内容是否有 [[wikilinks]] |
| 中文文件名崩溃 | 使用 Unicode 安全字符串处理(已内置) |