README file from
GithubAI RAG + LLM Wiki - Obsidian Plugin
一个面向 Obsidian 的 AI 知识库插件:既保留高级 RAG 检索问答,也新增持久 LLM Wiki 层,让 AI 把原始资料持续整理成可积累、可审计、可互链的 Markdown Wiki。
面向新手的中文教程
隐私提醒:本插件不会内置 API Key。构建索引、提问、导入 Wiki 时,会把必要文本发送到你自己配置的 AI API 服务。自动索引和自动导入默认关闭,建议确认笔记隐私范围后再开启。
✨ 核心特性
🔍 主流最佳实践检索链路
Query → Analysis → Multi-Recall → Fusion → Rerank → Compression → Results
- Query Analysis - Standalone question、Multi-query、Filter inference
- Multi-Recall - Dense + Sparse + Feedback + Meta 四路召回
- Fusion - RRF / Weighted / Distribution-based 融合算法
- Rerank - LLM-based 重排序
- Context Compression - Parent-child chunks、Sentence window、Token budget
🎯 5 个增强功能
- ASK Vault 可复制 - 一键复制答案到剪贴板
- 纠正按钮 + 反馈学习 - 纠正错误答案,自动向量化并加入召回
- AI 全库总结元数据库 - AI 生成笔记摘要,作为独立召回通道
- 自动增量索引 - 文件变化自动更新索引,2秒防抖,批量处理
- 用户问答方式学习 - 高频术语统计,触发词选择性加载,性能优化
📊 稳定性与评测
- 日志记录 - 记录每次查询的完整链路
- 评测指标 - Retrieval Relevance、Groundedness、Citation Accuracy
- 网络容错 - 自动重试、超时控制、指数退避
- 错误处理 - 友好的错误提示和降级策略
🧠 持久 LLM Wiki
- 三层结构 - raw sources 保持只读,
_wiki/由 LLM 维护,_wiki/CLAUDE.md作为 schema 说明书 - 来源摘要 - 每次导入先生成
sources/页面,把原始笔记编译成可引用证据 - 实体/概念融合 - 新资料会融合进已有 entity/concept 页面,而不是直接覆盖旧知识
- 冲突标记 - 新旧信息不一致时保留双方说法,并记录到冲突/待核实列表
- 索引与日志 - 自动维护
index.md和log.md,形成可导航、可追踪的知识演化记录 - Wiki 审计 - 检查无入链孤岛、缺失交叉引用、矛盾、过时信息和知识空白
🚀 快速开始
安装
- 下载最新版本
- 解压到
.obsidian/plugins/ai-rag-llm-wiki/ - 在 Obsidian 设置中启用插件
配置
-
打开设置页
-
填写 API 配置:
- API Base URL(OpenAI-compatible)
- API Key
- Embedding Model(如
text-embedding-ada-002) - Chat Model(如
gpt-4)
-
调整索引配置:
- Chunk Size(默认 800)
- Overlap(默认 150)
- Top K(默认 6)
- 文件变更时自动索引默认关闭,建议确认隐私范围后再开启
使用
1. 构建索引
运行命令:构建 AI 索引(英文命令:Build AI Index)
首次使用需要全量构建索引,之后会自动增量更新。
2. 语义搜索
运行命令:语义搜索(英文命令:Semantic Search)
输入问题,返回相关文档片段。
3. 问答
运行命令:知识库提问(英文命令:Ask Vault)
输入问题,返回答案 + 引用来源。
4. 侧边栏
运行命令:打开 AI RAG 侧边栏(英文命令:Open AI RAG Sidebar)
打开侧边栏,进行连续对话。
5. 元数据索引(可选)
运行命令:构建元数据索引(英文命令:Build Meta Index (AI Summary))
AI 分析每篇笔记生成元数据,提升"这是什么笔记"类问题的召回。
6. 初始化 LLM Wiki
运行命令:初始化 Wiki(英文命令:Initialize Wiki)
插件会创建:
_wiki/CLAUDE.md- Wiki 维护规则_wiki/index.md- 内容索引_wiki/log.md- 时间线日志_wiki/sources/- 原始来源摘要_wiki/entities/- 实体页_wiki/concepts/- 概念页_wiki/summaries/- 主题综述_wiki/syntheses/- 高价值问答/综合分析
7. 导入来源到 Wiki
运行命令:导入当前笔记到 Wiki(英文命令:Ingest Current Note to Wiki),或右键 Markdown 文件选择 导入到 Wiki。
导入时插件会读取原始笔记但不改动原文,然后创建来源摘要页、更新相关实体/概念页、维护索引和日志。开启设置里的 自动导入 后,非 Wiki 笔记变更会在短暂防抖后自动导入。
8. 查询与审计 Wiki
查询 Wiki- 基于已整理的 Wiki 页面回答问题,可将高价值答案归档为 synthesis 页面浏览 Wiki- 浏览、搜索、筛选 Wiki 页面审计 Wiki- 生成 Wiki 体检报告自动修复孤立页面- 为无入链页面补充相关链接和入口
📖 功能详解
检索链路
Query Analysis
- Standalone Question - 处理追问,改写为独立问题
- Multi-Query - 生成查询变体,提升召回覆盖率
- Filter Inference - 推断标签和路径过滤条件
Multi-Recall
- Dense Recall - 向量检索(主要)
- Sparse Recall - BM25 词法检索(主要)
- Feedback Recall - 反馈记忆召回(辅助,权重 0.5)
- Meta Recall - 元数据召回(辅助,权重 0.6)
Fusion
- RRF - Reciprocal Rank Fusion
- Weighted - 加权融合
- Distribution-based - 基于分布的融合
Rerank
- LLM-based - 使用 LLM 重排序候选结果
Context Compression
- Parent-Child Chunks - 扩展到父级 chunk
- Sentence Window - 提取包含关键词的句子窗口
- Token Budget - 控制总字符数
增强功能
1. 复制按钮
- 位置:Ask Vault 和侧边栏的答案区域
- 功能:一键复制答案到剪贴板
2. 纠正 + 反馈学习
- 位置:答案区域的"✏️ 纠正"按钮
- 功能:
- 输入正确答案
- 关联相关笔记(可选)
- 自动向量化并保存
- 作为独立召回通道参与检索
3. 元数据库
- 命令:
构建元数据索引(英文命令:Build Meta Index (AI Summary)) - 生成内容:
summary- 一句话总结userRelation- 这是用户的什么autoTags- 自动标签noteCategory- 笔记分类
- 用途:提升"这是什么笔记"类问题的召回
4. 自动增量索引
- 监听文件变化(create/modify/delete/rename)
- 2秒防抖,避免频繁索引
- 批量处理(每批 5 个文件)
- 配置变化时提示重建
5. 用户模式学习
- 高频术语统计
- 触发词识别(词频 > 5)
- 选择性加载(命中触发词才使用高级分析)
- 性能优化:普通问题 0 次 LLM 调用
评测与日志
评测指标
- Retrieval Relevance - 召回相关性
- Groundedness - 答案基于上下文的程度
- Citation Accuracy - 引用准确性(基于用户纠正率)
- Response Time - 平均响应时间
查看指标
运行命令:Show Evaluation Metrics
查看日志
运行命令:Show Recent Query Logs
🛠️ 开发
构建
npm install
npm run build
开发模式
npm run dev
部署
# 复制文件到 Obsidian 插件目录
cp main.js manifest.json styles.css "path/to/.obsidian/plugins/ai-rag-llm-wiki/"
📊 性能优化
触发词选择性加载
| 场景 | 原方案 | 优化后 |
|---|---|---|
| 普通问题 | 3次 LLM | 0次 LLM |
| 命中触发词 | 3次 LLM | 3次 LLM |
| 追问 | 3次 LLM | 1次 LLM |
防抖与批处理
- 文件变化 2 秒防抖
- 每批处理 5 个文件
- 避免 API 限流
网络容错
- 自动重试(最多 3 次)
- 超时控制(30 秒)
- 指数退避(Rate Limit)
🔒 隐私与数据发送
- 插件不会内置任何 API Key;用户需要在本地 Obsidian 设置中自行配置。
- 构建向量索引会把笔记分块发送到你配置的 Embedding API。
- 提问、导入 Wiki、生成摘要会把问题和必要上下文发送到你配置的 Chat API。
- 自动索引和 Wiki 自动导入默认关闭,建议确认笔记隐私范围后再开启。
- 遇到疑似密码、密钥、令牌等敏感内容时,插件会提示跳过或标记为私密。
📝 数据文件
所有数据存储在 .obsidian/plugins/obsidian-ai-rag-plugin/data/:
manifest.json- 索引元信息chunks.json- 文档分块embeddings.json- 向量数据files.json- 文件元数据feedbacks.json- 反馈记录feedback-embeddings.json- 反馈向量meta-notes.json- 元数据记录meta-embeddings.json- 元数据向量user-patterns.json- 用户模式query-logs.json- 查询日志
⚙️ 配置项
API 配置
apiBaseUrl- API 地址apiKey- API 密钥embeddingModel- 向量模型chatModel- 对话模型
索引配置
chunkSize- 分块大小(默认 800)overlap- 重叠大小(默认 150)autoIndexOnFileChange- 自动增量索引(默认 false)
检索配置
topK- 返回结果数(默认 6)enableHybridSearch- 混合检索(默认 true)maxContextChars- 最大上下文长度(默认 6000)
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可
MIT License
🙏 致谢
本插件基于主流 RAG 最佳实践构建,参考了多个开源项目和论文。