☰
ReadAny语义搜索深度教程:向量检索+BM25混合,不记关键词也能找回观点
2026/10/2 6:56:37 网站建设 项目流程

ReadAny语义搜索深度教程:向量检索+BM25混合,不记关键词也能找回观点

【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAny

ReadAny 是一款 AI 电子书阅读器,内置语义搜索能力:把整本书切成小块做向量化,再结合 BM25 关键词索引,用"混合检索"帮你找到只记得大意、不记得原话的内容。读完这篇教程,你会明白它为什么比传统"Ctrl+F"聪明,以及如何三步开启。

一、为什么你需要语义搜索?

读技术书时常见场景:你记得"作者说过缓存命中率有个平方根之类的规律",但完全不记得那句话的关键词。传统关键词搜索会一无所获。

语义搜索的思路是:把"意思"变成"向量"。

  • 你的问题被转换成一组数字(embedding)
  • 书中每个段落也预先转成了向量
  • 意思越接近,向量夹角越小(余弦相似度越高)

在 ReadAny 中,这部分逻辑集中在 search.ts,它同时实现了vector、bm25、hybrid三种搜索模式。

二、两个检索引擎:向量检索与 BM25

1️⃣ 向量检索:懂"意思"

  • 每本书先被 chunker.ts 切分成小块,再逐块生成向量
  • 查询时计算向量与所有块的余弦相似度,取 Top K(阈值默认 0.3,见 search.ts)
  • 适合"换个说法找观点",但对精确专有名词(人名、API 名)有时不如关键词匹配

2️⃣ BM25 关键词检索:懂"字面"

BM25 是经典的信息检索算法,ReadAny 用倒排索引加速它:

  • inverted-index.ts 预先建好"词 → 文档"映射,并算好 IDF 权重,把检索复杂度从 O(k·n·m) 降到 O(k·d)
  • tokenizer.ts 是亮点:支持中英文日韩混排,中文采用单字 + 二元组切分(如"人工智能" → "人工"、"智能"),还内置了中英文停用词表

所以哪怕你只输入"智能"两个字,也能命中标题为"人工智能"的段落。

三、混合检索(Hybrid):为什么 1+1>2

单独用任何一种检索都有盲区。ReadAny 的混合模式做了两件事:

  1. 并行召回:向量检索和 BM25 各自取 2×TopK 候选
  2. RRF 融合排序:用"倒数排名融合"(Reciprocal Rank Fusion,k=60)给每条结果打分——一个段落只要在两路榜单中靠前,总分就高(见 rrfFusion 实现)

还有两层"保底"设计:

  • 向量服务不可用时(如模型没下载好),自动降级为纯 BM25,搜索不会直接失败
  • 如果换过 embedding 模型,系统会检测到"索引与查询模型不匹配"并提示你重新向量化这本书,避免拿旧向量硬算出错结果

四、三步开启:从向量化到搜索

第 1 步:为书建立向量索引

在图书上点击"向量化",会弹出进度对话框(VectorizeDialog.tsx),实时显示"已处理 N / 共 M 个文本块"。

💡 建议用内置本地模型(builtin 模式,基于 Transformers.js,状态管理见 vector-model-store.ts),无需 API Key、数据不出本地;也可以切到远程 API 模型。

第 2 步:直接用自然语言问

打开 AI 对话页提问即可。AI 背后会调用 RAG 检索工具(rag-tools.ts),从书中捞出最相关的段落作为上下文,回答并附带出处。

第 3 步:连笔记和高亮一起搜

不只是正文:knowledge/search.ts 提供知识库搜索,把book、note、highlight三类来源一起检索。你在书上划的高亮、随手记的笔记,都能被"意思搜索"找回来。

五、常见问题(FAQ)

Q1:换 embedding 模型后搜索报错?这是防错机制:旧索引的维度/模型与新模型不一致。重新对这本书做一次向量化即可。

Q2:只有关键词能搜到、语义搜不到?说明该段落的 embedding 相似度低于 0.3 阈值;可换个更贴近原意的问法,或直接用 BM25 模式精确匹配。

Q3:中文分词会不会漏词?不会漏得太厉害——单字 + 二元组双重切分让"只命中一个字"也有机会召回,这是为 CJK 语言专门设计的。

六、总结

能力传统关键词搜索ReadAny 混合语义搜索
必须记住原词✅ 必须❌ 说大意就行
精确专有名词强有 BM25 兜底
中文短句召回一般二元组分词优化
笔记/高亮同库搜索通常不支持支持

核心要点一句话:向量化一次,之后用"意思"搜书;向量 + BM25 双路召回 + RRF 融合,让"记不住关键词"不再是障碍。

延伸阅读:混合检索的完整实现见 packages/core/src/rag/,知识库搜索见 packages/core/src/knowledge/。

【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAny

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询