混合搜索
Notarium 的搜索由相互补充的独立通道构成。全文(词法)搜索始终可用,无需任何配置。基于含义的语义搜索和对图谱链接的感知,则是叠加在其之上的可选层。各通道的结果会融合成统一排名;即便可选层不可用,搜索仍会基于全文继续工作——而不会报错。
三条通道
| 通道 | 作用 | 何时生效 |
|---|---|---|
| 词法(FTS/BM25) | 查找词语和短语的精确匹配,按 BM25 排序 | 始终可用,无需配置 |
| 语义(向量) | 查找含义相近的内容,即便没有共同词语 | 可选(VECTOR_SEARCH) |
| 图谱加权 | 通过 [[维基链接]] 拉入命中项的邻居 | 可选(GRAPH_BOOST),默认关闭 |
词法通道是根基:启动后即可工作,无需安装任何东西。语义通道增添了对含义的理解(同义词、改述),图谱加权则增添了对笔记之间链接的认知。
结果如何融合
各通道由 RRF 算法(Reciprocal Rank Fusion,k=60)合并:每条通道产出各自的排序列表,RRF 按位次而非无法相互比较的「原始」分数,将它们叠合成统一排名。这样,词法匹配与语义相近就能一并权衡。融合发生在笔记层级——依据其稳定标识符进行。
flowchart LR
q([查询]) --> fts[词法 · FTS/BM25]
q --> vec[语义 · 向量]
q --> gr[图谱 · 1-hop]
fts --> rrf{RRF 融合}
vec --> rrf
gr --> rrf
rrf --> res([结果])
若语义不可用
语义层可能被关闭或不可用:未启用 VECTOR_SEARCH、未安装向量栈、模型未加载,或查询向量的计算超时。无论哪种情况,查询都会由词法通道处理——搜索始终会响应,不会仅因缺少语义就报错。
语义按需启用
向量搜索会引入沉重的原生栈(磁盘占用约 660 MB),并将嵌入模型加载进内存(数百 MB 的 RAM),因此在公共镜像中默认关闭。如何开启它、如何选择模型,参见 搜索配置。
你在哪里搜索
- Spotlight / OmniSearch——快速、带排名地跳转到某条笔记。完整的混合搜索在此生效:重要的是相关性,而不只是词语的精确命中。参见 搜索与 Spotlight。
- 文档流过滤(文档流 中的
?q=)——对语料库的词法过滤:它保留确实出现了查询词的笔记,并与文件夹、标签和日期过滤叠加。
索引及其重建
搜索索引是派生知识:它由文件构建,并可通过重新扫描完全恢复。每个空间一个索引。更换嵌入模型不是迁移,而是从零重建向量部分。在大型语料库上首次构建向量索引需要数分钟乃至数小时;这段时间内界面会显示「Building search index…」指示,而搜索本身仍以词法模式保持可用。
相关主题:知识图谱——第三条通道的来源,搜索配置——启用语义并选择档位,File-first——索引为何可恢复。