---
title: "混合搜索"
description: "词法搜索始终可用，语义与图谱加权为可选项；结果通过 RRF 融合，即便没有可选层，搜索也会保持全文模式。"
---

# 混合搜索

Notarium 的搜索由相互补充的独立通道构成。全文（词法）搜索始终可用，无需任何配置。基于含义的语义搜索和对图谱链接的感知，则是叠加在其之上的可选层。各通道的结果会融合成统一排名；即便可选层不可用，搜索仍会基于全文继续工作——而不会报错。

## 三条通道

| 通道 | 作用 | 何时生效 |
|---|---|---|
| 词法（FTS/BM25） | 查找词语和短语的精确匹配，按 BM25 排序 | 始终可用，无需配置 |
| 语义（向量） | 查找含义相近的内容，即便没有共同词语 | 可选（`VECTOR_SEARCH`） |
| 图谱加权 | 通过 `[[维基链接]]` 拉入命中项的邻居 | 可选（`GRAPH_BOOST`），默认关闭 |

词法通道是根基：启动后即可工作，无需安装任何东西。语义通道增添了对含义的理解（同义词、改述），图谱加权则增添了对笔记之间链接的认知。

## 结果如何融合

各通道由 **RRF** 算法（Reciprocal Rank Fusion，k=60）合并：每条通道产出各自的排序列表，RRF 按位次而非无法相互比较的「原始」分数，将它们叠合成统一排名。这样，词法匹配与语义相近就能一并权衡。融合发生在笔记层级——依据其稳定标识符进行。

```mermaid
flowchart LR
  q([查询]) --> fts[词法 · FTS/BM25]
  q --> vec[语义 · 向量]
  q --> gr[图谱 · 1-hop]
  fts --> rrf{RRF 融合}
  vec --> rrf
  gr --> rrf
  rrf --> res([结果])
```

## 若语义不可用

语义层可能被关闭或不可用：未启用 `VECTOR_SEARCH`、未安装向量栈、模型未加载，或查询向量的计算超时。无论哪种情况，查询都会由词法通道处理——搜索始终会响应，不会仅因缺少语义就报错。

> [!note] 语义按需启用
> 向量搜索会引入沉重的原生栈（磁盘占用约 660 MB），并将嵌入模型加载进内存（数百 MB 的 RAM），因此在公共镜像中默认关闭。如何开启它、如何选择模型，参见 [搜索配置](/docs/self-hosting/search-setup/)。

## 你在哪里搜索

- **Spotlight / OmniSearch**——快速、带排名地跳转到某条笔记。完整的混合搜索在此生效：重要的是相关性，而不只是词语的精确命中。参见 [搜索与 Spotlight](/docs/guides/search-spotlight/)。
- **文档流过滤**（[文档流](/docs/guides/feed/) 中的 `?q=`）——对语料库的词法过滤：它保留确实出现了查询词的笔记，并与文件夹、标签和日期过滤叠加。

## 索引及其重建

搜索索引是派生知识：它由文件构建，并可通过重新扫描完全恢复。每个空间一个索引。更换嵌入模型不是迁移，而是从零重建向量部分。在大型语料库上首次构建向量索引需要数分钟乃至数小时；这段时间内界面会显示「Building search index…」指示，而搜索本身仍以词法模式保持可用。

相关主题：[知识图谱](/docs/concepts/knowledge-graph/)——第三条通道的来源，[搜索配置](/docs/self-hosting/search-setup/)——启用语义并选择档位，[File-first](/docs/concepts/file-first/)——索引为何可恢复。
