Vault 混合检索
为 Obsidian 知识库提供基于上下文、BM25 与向量重排的段落级检索。
技能明确披露 Anthropic API 和 claude CLI 会将 wiki 页面正文发送到机器外,并要求 --allow-egress 及安装阶段同意;默认可使用 synthetic 前缀和本地 Ollama。allowed-tools 仅为 Read、Bash,且未展示凭据读取范围。扣分在于外发数据的保留、敏感内容处理、依赖供应链、权限隔离和恢复机制说明不足;还提供了 rm -rf 清理命令但未配套确认或恢复流程。
文档给出了安装、特性检测、退出码 10 回退和空结果处理,并有 BM25 单元测试及 CI。扣分在于静态材料未覆盖 retrieve、contextual-prefix、rerank、setup 的关键端到端路径,Ollama/API/CLI 缺失时的具体失败行为和索引陈旧处理仍有限;按静态校准不超过 10 分。
触发词、输入查询、输出候选结构、安装前提和未安装时的 v1.6 回退均较清楚;--no-llm 提供本地路径,测试还声称支持 Unicode/CJK。扣分在于非-fit 边界、中文检索质量、Ollama/Anthropic 在中国大陆网络环境下的可达性和替代方案证据不足。
技能结构清晰,包含架构、特性门控、安装步骤、参数、命令示例、成本、维护、路线图和交叉引用;仓库上下文提供 MIT 许可证、SECURITY.md、版本信息和 CI。扣分在于选定技能本身没有独立的变更日志、明确维护责任或版本兼容矩阵,且若干依赖和配置假设需要从其他文件推断。
BM25、上下文前缀和可选重排的目标及调用方式明确,输出可供调用方读取并综合。扣分在于静态材料没有提供该技能关键路径的代表性实际输出或可独立核验的检索质量结果;README 的 50-query、+32pp 等收益声明在所给材料中缺少对应基准实现或结果。
存在 revision-scoped 源文件、CI、BM25 测试和明确的特性检测/解释模式,提供了一定可审计性。扣分在于测试未覆盖整个 wiki-retrieve 管线,外部 Anthropic 研究与性能声明无法仅凭给定文件独立复现,且没有多来源或真实执行产物佐证。
- 使用 --allow-egress 或非 synthetic tier 前,应确认 wiki 页面不含敏感信息,并明确第三方服务的数据处理与保留政策。
- 索引不会自动刷新;页面变更后必须手动重建,否则可能返回过时结果。
- 核心 retrieve/setup/contextual-prefix/rerank 路径在本次静态材料中未被完整测试;不要将 README 的性能数字视为已验证结论。
- 中国大陆用户应预先验证 Anthropic API、claude CLI 和本地 Ollama 模型的可达性;否则使用 --no-llm 或 BM25-only。
这个 Skill 能做什么,适合哪些场景?
wiki-retrieve 是 claude-obsidian 中面向 Compound Vault 的可选混合检索技能。它把 Markdown 页面切分为段落级区块,为区块生成上下文前缀,建立 BM25 索引,并可使用本地 ollama 向量进行余弦重排。查询结果返回带绝对路径的候选区块,供 wiki-query 或 autoresearch 读取原页面并生成带引用的答案。它不会自动替换基础查询流程;未完成配置时会回退到旧版 hot→index→drill 顺序。
安装脚本检查所需脚本,创建 .vault-meta/chunks/ 和 .vault-meta/bm25/,探测本地 ollama,并选择 Anthropic API、claude CLI 或本地合成前缀层。contextual-prefix.py 按段落切分页面、生成前缀并写入区块 JSON;bm25-index.py 建立区块倒排索引;retrieve.py 先取得 BM25 候选,再通过 rerank.py 使用 ollama 余弦相似度重排、去重,并输出带 absolute_path 的候选数组。索引不会在页面变更后自动刷新。
- 使用 Obsidian 保存大量 Markdown 笔记,并需要定位答案所在的具体段落。
- 在已配置 claude-obsidian 的 Compound Vault 中,希望提高长页面或区块级问题的召回质量。
- 希望用 BM25 快速筛选候选,再用本地 ollama 对结果进行语义重排的个人知识库用户。
- 对隐私敏感、希望完全本地运行检索的用户,可选择合成前缀和本地重排。
- 需要调试检索质量并查看候选数量、去重等阶段诊断的开发者。
这个 Skill 有哪些优点和局限?
- 提供段落级而非页面级的检索粒度。
- BM25、上下文前缀和可选本地余弦重排组合,支持 --no-rerank 与 --explain。
- 默认不会向外发送页面内容;非合成前缀需要显式 --allow-egress 和同意提示。
- 索引和嵌入缓存写入本地 .vault-meta 目录,并能在功能未配置时平滑回退。
- 这是可选的 v1.7 检索层,不是完整知识库或独立笔记应用。
- 索引不会自动刷新,页面变更后需要手动维护。
- 高质量向量重排依赖本地 ollama;API 和 claude CLI 前缀层会把页面正文发送到机器外。
- SKILL.md 没有提供独立安装包或独立测试套件;平台兼容性主要基于通用 Agent Skills 结构推断。
如何安装这个 Skill?
该技能没有单独安装流程;它随 AgriciDaniel/claude-obsidian 集合发布。安装集合后,在仓库根目录运行:
bash bin/setup-retrieve.sh
若要强制使用本地合成前缀:
bash bin/setup-retrieve.sh --no-llm
也可先运行 bash bin/setup-retrieve.sh --check 进行诊断。脚本只会报告 ollama 状态,不会安装 ollama。
如何使用这个 Skill?
标准检索:
python3 scripts/retrieve.py "你的问题" --top 5
跳过向量重排:
python3 scripts/retrieve.py "你的问题" --top 5 --no-rerank
查看诊断信息:
python3 scripts/retrieve.py "你的问题" --top 5 --explain
直接检查 BM25:
python3 scripts/bm25-index.py query "你的问题" --top 10
页面有实质变更后,手动运行 contextual-prefix.py --all,再运行 bm25-index.py build。其他调用技能应先检查 scripts/retrieve.py、.vault-meta/chunks 和 .vault-meta/bm25/index.json 是否存在;未配置时必须回退到旧查询顺序。
这个 Skill 与同类方案有什么区别?
相较于 v1.6 的 hot.md → index.md → 读取若干页面流程,本技能增加了区块切分、BM25 候选筛选和可选余弦重排。使用 --no-rerank 时可仅运行 BM25,但质量可能低于完整流程。