跳转到内容

搜索

Engram 会为笔记内容建立语义搜索索引,即使措辞不同,也能找到与你的查询含义相近的笔记。同样支持精确匹配搜索,但它在哪里运行取决于搜索范围。

  • **跨整个知识库的语义搜索。**基于每条笔记嵌入向量的向量相似度。找到的是相关的想法,而不只是字面文本。这是目前网页应用搜索面板所运行的搜索。
  • **关键词搜索和混合搜索。**后端还会为笔记建立可安全用于加密场景的关键词(词法)搜索索引,以及融合词法和向量结果的混合模式(见下文)。这些功能已在后端提供;网页应用的搜索面板目前尚未提供模式切换,所以现在发出的是语义查询。
  • 在已打开的笔记内精确匹配。Ctrl/Cmd+F 和编辑器的查找/替换作用于你当前会话中已解密的笔记,与任何文本编辑器一样。

Engram 支持对整个知识库进行关键词(词法)搜索,而且不会破坏静态加密。 后端并不扫描明文,而是为每个文本块建立一个稀疏向量索引,键为 HMAC(your vault key, token),因此服务器可以在索引中匹配查询词, 却始终不会持有可读的笔记文本。关键词搜索、语义(向量)搜索和混合搜索 (在服务器端通过倒数排名融合把词法与向量结果合并)这三种模式, 后端均已上线。

这也意味着,服务器端仍然无法对原始文本做真正的子字符串或正则搜索 (索引以词元而非字符为单位)。如果需要正则、区分大小写或按路径过滤的 字面搜索,仍应使用 Obsidian 本地的搜索面板(它搜索的是磁盘上的 .md 文件)。 编辑器中的 Ctrl/Cmd+F 也可用于在已打开的笔记内查找。

Engram 和 Obsidian 的搜索是互补的:云端提供语义、关键词和混合搜索;磁盘上则提供完整的正则 / 区分大小写 / 按路径过滤的字面搜索。Obsidian 的本地搜索面板针对的是 Engram 正在同步的同一个知识库。

  • 网页应用搜索面板(搜索栏):目前为语义查询
  • Obsidian 插件针对与网页应用相同的后端运行搜索
  • Obsidian 搜索面板用于对磁盘上的知识库进行本地正则 / 区分大小写 / 路径字面搜索

如果需要正则表达式或限定路径的字面匹配,请使用 Obsidian 的本地搜索。

  1. 你的查询会被嵌入(查询模型与文档模型是非对称的,针对检索而非索引进行了调优)
  2. Qdrant 返回前 K 个向量匹配结果,使用二值量化 + 重新打分
  3. 如果配置了重排器(后端设置 RERANKER_BACKEND=jina + JINA_URL),候选结果会按向量分数与重排器分数 40/60 的比例混合后重新排序;如果没有配置,则使用原始向量排序

默认的云端部署目前不使用重排器;Jina 适配器已经发布,随时可以启用。

通过 API 支持把搜索限制在某个文件夹内。传入 folder=<path> 查询参数。类似 folder:work/ 的搜索框查询语法已在路线图上,尚未接入界面。

  • **知识库非常小(< 20 条笔记)。**可供比较的嵌入向量较少;在知识库增长之前,结果会偏嘈杂
  • **刚导入的笔记。**嵌入由 Oban 异步运行;刚写好的笔记可能需要几秒钟才会出现在结果中
  • **非常专门的术语。**语义相似度最适合概念性查询。对于精确的标识符(函数名、错误码),关键词搜索和混合(词法 + 向量)搜索更合适。两者在后端都已上线,网页应用界面的支持仍待推出。在此期间,Obsidian 的本地搜索可以覆盖精确标识符。