语义检索
Scholardo 有三种搜索,先分清楚你要哪一种:
| 搜什么 | 用什么 | 入口 |
|---|---|---|
| 文件名 | 列表内搜索 | 侧栏子 tab 行的放大镜 |
| 文献内容 | 语义检索 | Cmd+Shift+F |
| 和 agent 的对话 | 会话历史搜索 | 右栏终端的放大镜 |
这一页讲的是中间那个:按意思搜你的整个文库。
三种检索模式
| 模式 | 怎么工作 | 什么时候用 |
|---|---|---|
| Lexical 词法 | 全文关键词匹配(SQLite FTS5) | 你记得原文用了哪个词 |
| Dense 语义 | 向量相似度 | 你只记得意思,不记得措辞 |
| Hybrid 混合 | 两者结果融合排序(RRF) | 默认,多数情况最好 |
混合模式同时跑两条腿再融合排名,既不会漏掉精确的术语命中,也不会漏掉换了说法的相关段落。
检索范围
| 范围 | 覆盖 |
|---|---|
| All | 笔记 + 资料 + 会话(默认) |
| Sources | 只搜资料(Docs / Refs / Feeds) |
| Notes | 只搜笔记 |
笔记和会话只走关键词
笔记和会话记录不做向量化,无论选哪个模式都走关键词检索。这是有意的设计决定——它们本来就短、结构清晰,向量化的收益不足以抵消隐私与成本。语义能力只作用在文献内容上。
开启语义检索
词法检索开箱即用,不需要任何配置。语义检索需要一个 embedding provider——把文本转成向量的服务。
去「设置 → Embeddings」选一个:
Ollama(本地,注重隐私时用这个)
在你自己机器上跑,不需要 API key,内容不出本机。
- 装好 Ollama 并确保守护进程在跑
- 拉一个 embedding 模型,例如:
ollama pull bge-m3 - 回到设置里点刷新,选中该模型
Jina(云端)
需要 API key。填好 key 即可用。
OpenAI 兼容端点
任何提供 /v1/embeddings 接口的后端都能接,填 Base URL 和 Model ID。
云端向量化 = 内容离开本机
选择 Jina 或任何云端端点时,Scholardo 会明确弹窗征求你的同意(「Send embeddings off-device?」),并要求你手动打开「Enable remote indexing」。
这不是走过场——索引意味着你的文献正文会被分块发到第三方服务。如果你的文献涉及未发表数据或敏感材料,请用 Ollama。
索引怎么建
选好 provider 之后,Scholardo 会在后台把你的文献切块并向量化。切块参数可调:
- Chunk size (words)——每块多少词
- Overlap (words)——相邻块之间重叠多少词,避免语义被切断
改了 provider、模型或切块参数之后,需要 Rebuild now 重建索引——旧向量是用旧模型算的,和新模型的向量不可比。重建会弹窗确认,因为要丢弃全部现有 embedding 重来。
Agent 也在用同一套检索
Agent 通过 MCP 工具 search 调用的就是这套检索。所以你跟 agent 说「找找我库里讲固态电解质界面阻抗的部分」,它拿到的结果和你自己搜是一样的。
配套的还有:
get_item/batch_get_items——按 ID 取回全文list_sources/list_refs/list_notes——列出各类内容
没有配置时会怎样
没配 embedding provider 时,搜索面板照常工作(走词法),并提示「Configure semantic search」引导你去设置。不会静默降级到一个更差的结果而不告诉你。
相关
- Docs 文献与文档——文件怎么进到库里
- Agent 与 MCP 工具——agent 侧的检索能力

