【插件發布】Vault Curate 1.5 — 中文友善的 Obsidian 语意搜寻外挂(桌机/手机 , 本地 WebGPU + AI 整理层,皆 opt-in)

分享一个我自己花几个月写 + dogfood 的 Obsidian 外挂,Vault Curate。

之前看到中文圈在问「Obsidian 中文搜寻方案」的讨论,市面上的语意搜寻外挂多半用多语通用模型(MiniLM 那系列的
distilled),中文准度真的不算好——人名、宗教词、生活杂事的查询命中率都偏低。我自己 dogfood 过,差距大到「能不能用」的程度。

Vault Curate 想做什么

一句话:用「意思」搜笔记,不只是关键字,而且对中文友善。

两个我比较在意的设计:

1. 中文用纯中文训练模型

内建 bge-small-zh-v1.5(纯中文训练,~110 MB 第一次自动下载)。比起多语 distilled 模型在中文人名 / 宗教词 /
口语的命中率大幅提升。也支援英文搜寻,只是不是优化重点。

2. AI 整理层 opt-in,预设关闭

新版有个 AI curation 区(用 clustering 自动把笔记分主题群、用 LLM 命名每群,产出 Map of Content;也可以为单篇笔记生
description),但预设是关的。要进 Settings 自己打开,然后手动触发才会跑。

我的立场是:你的 vault 不应该在你不知情的情况下被改。AI 可以帮你发现新分群、看见冷笔记,但要不要采用是你的决定。

技术细节

  • 三路融合搜寻(RRF k=60 合流):BM25 纯 TS CJK trigram + 语意 embedding + Jaro-Winkler 模糊比对
  • 三种 embedding mode:Built-in(装置端 WebGPU、预设、零设定)/ Ollama(本机 daemon)/ OpenAI-compatible(自选 endpoint)
  • Discover Hot/Cold:根据连结密度 + recency 自动分类笔记,主动推荐你忘了的「冷笔记」
  • WebGPU 加速:342 篇 / 5004 chunks 索引约 1m23s(WASM fallback 也能跑,约 27 分钟)

安装

Obsidian Settings → Community plugins → 搜 “Vault Curate” → Install → Enable。第一次开会跳一个 Welcome 视窗带你建索引。

欢迎试用、回馈、开 issue,特别是中文 vault 的 edge case,我会持续调整。

5 个赞

插件不错试一试联想能力如何

1 个赞

谢谢,若是有使用上的问题或是想提供新功能建议,欢迎在这里提出 :slight_smile:

建议新增两项功能优化:一是支持鼠标悬浮时触发预览功能,二是增加当前文档锁定机制,以确保不会因点击关联文档而导致当前关联的文档信息发生变更。

1 个赞

感谢细看与回馈!目前状态:

  1. Hover 预览
    你说得对,目前 Discover 与 Search 结果清单没有接 Obsidian 原生的
    Page Preview API(registerHoverLinkSource)。意思是即使你在
    Settings → Core plugins 开了 Page preview,hover 我们的搜寻结果也
    不会跳预览。这是缺口,下一版会补上。

  2. 当前文档锁定
    我猜你描述的情境是:在 A 笔记看到一串 Discover 推荐,临时点开
    推荐中的 B 看一眼 → Discover 自动跟着 active file 切换成 B 的
    结果,A 的 discovery 列表就消失了。是的,目前确实是这个行为。

    一个过渡解法是切到 Discover 的「全域模式」(Global),它不
    跟着当前 file 变,是把整个 vault 的 Cold notes 对你 Hot pool 做
    排序,不是你想要的「锁 A」,但用例有部分重叠。

    你提到的「锁定 A」可以做成 Pin 机制,会评估加进 backlog。

延续上次的建议(hover 预览 + 锁定当前笔记),今天顺手就做了 :slight_smile:

v1.0.3(UX patch)

  • Hover 预览:Search / Discover 结果 Cmd/Ctrl + hover 跳出 Obsidian
    原生 Page Preview。
  • 锁定 Discover:sidebar 加 :pushpin: 按钮锁定当前笔记,可以点关联结果偷看
    而不打断 discovery context。删除或切到 Global 模式自动解除锁定。
  • 调整 :内建 WebGPU embedding + AI 整理时 LLM 模型 dropdown ,有些人会一直停在 Loading。

哥你真是厉害,我先去试试新版了。多谢

1 个赞

列表标题显示有问题:如果正文有标题会显示正文标题而不是文档标题

1 个赞

哈哈,这算是设计上的规则,因为有些人的文件会有 YAML 定义,而档案名称以英数字编写,所以我的设计逻辑是:

  1. frontmatter 的 title: 栏位 ← 最优先
  2. 第一个 H1 heading ← H1
  3. file.basename ← 档名 fallback

您这个档案因为 YAML 没有 title
但有 H1 症状描述,所以就先抓这个了~

因为有些我的笔记有固定的模版,正文里面的标题都是一样的,推送机制结果就给我全部推送一样的,而不是基于文件名。
另外问一个:是否后续增加关联图,或者关联图上的编辑。哈哈

1 个赞

谢谢指出 — 这个 case 我之前没想到。H1 fallback 原本是为了
「档名是英数字编号 + 正文有更可读 H1」的场景设计的,但你
这种「模板生成的笔记 H1 大量重复」的情境,反而让 list 看起
来全长一样。

下版(1.0.4)会加 collision detection:同一个 H1 在 vault
里出现多次时,自动退回 file.basename。Frontmatter title:
优先级保持最高(这是 user 显式标记的,不参与防呆)。

是否后续增加关联图,或者关联图上的编辑

这个想法挺有意思 — 因为 semantic similarity 本来就内部算好
了,画 graph 在技术上不是问题。但 UI 工程量蛮大(layout、
节点交互、编辑),所以会放进 backlog 慢慢评估,短期不会
优先做。目前 Discover panel 的 Top-K 列表算是「graph 的一
维投影」。

1 个赞

这个厉害,语义搜索了

1 个赞

v1.1.0 上线了 — @vvzeng 你在 #10 许愿的关联图做出来了 :tada:

(先补个账:#8 你报的标题问题在 1.0.4 已修——同一个 H1 在 vault 出现多次时,列表自动退回文件名显示,升级后跑一次「更新索引」即可生效,不用重建。)

这次的「关联图」长这样:

  • 对任一笔记生成一张可编辑的 Obsidian Canvas:中心笔记 + top-K 语义邻居放射排列,每条边标注相似度分数
  • 紫边 = 语义相近但你还没建立链接——原生关系图看不到的隐形关联
  • 灰边(带方向箭头)= 已有 wikilink 的笔记
  • 青色节点 = 很久没动的 Cold 旧笔记
  • 三个入口:命令面板 / 笔记右键「VC: 生成关联图」/ Discover 侧栏的「关联图」按钮
  • 每次生成都是带时间戳的新档(预设放 Vault Curate Canvases/,可在进阶设定改),你编辑过的图不会被覆写
  • 想往外再走一层:对 Canvas 里任一节点右键 → 再生成一张,就是第二层

之所以选 Canvas 而不是自绘 graph view:Canvas 是 Obsidian 原生一等公民,拖拽、增删、连线、加卡片全部内 接满足,而且产出是开放的 .canvas格式,不锁在插件里,删掉插件图还在。

在 Community plugins 更新到 1.1.1 即可(1.1.1 是审查合规小补丁,功能同 1.1.0)。欢迎试用回报!

大哥,你是真的强,我先去用用了。:handshake:

大佬好:
目前关联图谱基础视图已完成,想同步实现单点交互能力:在总图谱内点击任意节点,可展开该节点的二级关联图谱,同时兼顾页面渲染性能做优化处理。

关联图谱核心价值,在于挖掘笔记间的关联链路、梳理完整逻辑链条。比如从笔记 A 推导至笔记 E,中间会串联多层中转节点;后续可引入数学模型做随机路径推演、潜在关联挖掘,碰撞出全新的思维关联。

长远规划:搭建无边界的全域图谱画布,支持标记强绑定节点;依托海量节点关联数据,通过算法自动推演、梳理出潜在逻辑链列表乃至完整逻辑树。

十分感谢你开发的这套工具,个人yy,可能工程量浩大哈哈,再次谢谢大佬的作品

1 个赞

Vault Curate 在 Obsidian 官方社群,刚刚更新 1.2.2 版本了~

.

精神不变:全部文件都在你电脑上跑,Obsidian 第二大脑完全可以不用云端 LLM、不用付费、笔记不外传。搜寻只要输入一个概念一段话,就可以从自己的笔记里找出组织好的文件。繁中友好、表格友好、隐私友好 :slight_smile:

.

▎ 1.2.2 这波更新:

▎ - 完整支援 关联图 Canvas ! 以任一笔记为中心生成可编辑的语意关联图,看见还没建立连结的隐形关联,自动帮你生成概念模板,再旧的资料也有机会被翻出来~

▎ - 中文检索更准,速度更快,8GB 的笔电都跑得很顺很好

▎ - 内建 WebGPU 模型 — 零设定就能跑,不再需要先装 Ollama

▎ - 免手动维护 — 升级自动增量重建索引,有进度提示,不用管

安装:Obsidian 社群外挂程式搜「Vault Curate」

这个好厉害,纯本地跑速度咋样呢?

我觉得速度还可以,我自己是 Macbook Air 8GB 都跑得很不错,各位的电脑一定比我更好,哈。

1.4.0 现在已经上了

  1. 右键点击任意生成的画布(或者用“将紫色边应用为维基链接”命令),会弹出一个勾选对话框,按来源笔记分组,每个页面都有 Cmd 或 Ctrl 悬停预览。勾上你想要的配对,它们就会被写成双向维基链接,写进两条笔记各自的“相关”区域(默认双向,不过你也可以改成只写来源端)。那些边会变成灰色,并显示方向箭头。没勾的保持原样——工具只负责建议,决定权在你。这也顺带解决了“持久性”的顾虑:一旦你接受了某个建议,它就成了真实链接,不会再作为建议出现。下周重新生成同一张画布,它已经是灰的了。
  2. 以前热度只看创建日期,所以一篇两年前的老孤儿笔记,就算你上周刚重写过,它仍然会被标成冷门。现在修好了:任何编辑都会给笔记回温(哪怕只打一个字再删掉也算,因为你毕竟对它做了一次判断),而插件自己的批量写入会被忽略。同时,层级现在是在查询时实时计算的,不再依赖旧索引,所以笔记也会按时真正降温。
  3. 加进了相关性排序:现在会把笔记的标签作为关键词信号跟嵌入向量融合,这样就过滤掉了最大的一类虚假邻居,那些仅仅因为写作风格跟锚点相似、而非话题本身相似的笔记。
  4. 在大概 2500 条笔记的真实仓库里测试发现,一旦层级做得真实,单纯冷门优先的排序反而会把相关结果压下去。所以现在,在当前笔记的 Discover 里,排序完全基于相关性(冷门笔记仍然保留视觉标识),而全局 Discover 则被重构成了针对你最近关注的内容来排序冷门笔记,包括最近编辑过的笔记、它们的话题标签、嵌入质心,并按文件夹分组,这样就不会让一个大仓库把所有其他内容都埋掉。

1 个赞

vault-curate 1.5.0: 手机也能查你的 vault 了

这次更新让桌机和手机分工:桌机负责建立与维护索引,手机端只负责读,不用额外设定,原本用 iCloud、Obsidian Sync 或 Syncthing 同步的 vault 直接就能用。

手机上可以用:关键字与模糊标题搜寻(接了远端伺服器的话还能用语意搜寻)、找相似笔记、两种 Discover 模式、忽略不想看到的建议,以及关联图和语意路径生成(平板上体验更好)。索引建立、AI 整理、MOC 产生、紫色关联线转真连结这些写入操作,仍然留在桌机端,避免多装置同步冲突。

另外,语意搜寻这条路如果暂时失效(伺服器挂掉之类),不会整个搜寻失败,关键字和模糊比对照样有结果,状态列会提示语意搜寻暂时不可用(这点桌机也一起修了)。

Community plugins 已经可以更新,完整 changelog 在 GitHub Release。

vault-curate 1.10.0:搜索结果直接显示命中的那一段

这次更新集中在搜索本身:

  • 结果显示命中的段落:每笔结果不再只显示笔记开头,而是显示让它排上来的那一段,搜索词会高亮。点下去直接跳到那一段,跟 Obsidian 内置搜索一样。
  • 长笔记的后段也搜得到了:内置模型一次只读得进约 512 个 token,以前超出的部分会被默默丢掉。现在笔记会切成模型读得完的大小,长笔记深处的内容也能用语意找到。
  • 搜索预设涵盖全部笔记:以前预设只搜 Hot 笔记,刚好把最需要被翻出来的旧笔记排除在外。搜索框下方多了 Hot/Cold/All 快切按钮。
  • 搜索窗口按 Alt+Enter,可以把选到的结果直接插入成链接。

用内置模型的话,更新后第一次打开会在背景自动重建索引(有进度提示,中途关掉下次会接着做)。用 Ollama 或 OpenAI 兼容端点的不受影响。

已知限制:编辑模式下,命中处在表格里时,点击不会卷到那一列(Obsidian 内置搜索也一样),阅读模式正常。

Community plugins 已经可以更新,完整 changelog 在 GitHub Release。