资讯动态

ReadAny本地向量库揭秘:Transformers.js+Web Worker嵌入,离线语义搜索怎么做

发布时间:2026/10/2 17:26:50 来源:尧图企业网站定制
ReadAny本地向量库揭秘Transformers.jsWeb Worker嵌入离线语义搜索怎么做【免费下载链接】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/ReadAnyReadAny 是一款开源的 AI 电子书阅读器它的本地向量库让离线语义搜索和 RAG 智能问答完全在设备本地运行——不依赖云端 API隐私安全、即搜即答。这篇文章将拆解 ReadAny 如何实现内置哪些嵌入模型、如何用 Transformers.js 在 Web Worker 中做向量推理、向量又存在哪里以及向量与关键词混合搜索是怎么工作的。 为什么要做本地向量库传统电子书搜索只认关键词搜时间管理就找不到如何分配精力。而 ReadAny 的 AI 智能问答 功能基于语义搜索——它把全书内容切成文本块chunk用嵌入模型转成高维向量你的提问也变成向量然后计算语义相似度。关键在于本地二字嵌入模型是约 20MB 级的小型 ONNX 模型首次使用时下载并缓存之后离线也能工作。这意味着没有 API 密钥、没有按量计费你的书和内容也永远不会离开设备。 四步流水线从一本书到向量索引ReadAny 的向量化流程由 vectorize.ts 编排分三个阶段分块Chunkingchunker.ts 按 token 目标长度把每章切成带重叠的文本块保证段落语义完整嵌入Embedding批量调用本地嵌入引擎把每个文本块转成向量batchSize20带进度回调索引Indexing向量写入本地向量库并记录模型出处provenance——这是后续搜索正确性的保险丝。切换嵌入模型后旧索引与新查询维度不匹配时ReadAny 会明确提示你重新向量化而不是返回错误的结果。 内置嵌入模型小身材大能量ReadAny 内置了 4 个通过 Transformers.js 本地运行的小模型定义在 builtin-embedding-models.ts模型大小向量维度适用语言all-MiniLM-L6-v2 ⭐推荐~23 MB384英文BGE Small EN v1.5~33 MB384英文BGE Small ZH v1.5~24 MB512中文Multilingual E5 Small~118 MB384多语言这些模型下载后缓存在浏览器/文件系统的 Cache Storage 中embedding-worker.ts 甚至提供了clearCache指令帮你释放空间。中文书推荐 BGE Small ZH多语言书库则选 Multilingual E5。⚡ Web Worker推理不卡 UI 的秘密Transformer 模型推理是 CPU 密集型任务——如果在主线程跑界面会直接冻住。ReadAny 的解法是把整个推理进程搬进Web Worker主线程通过postMessage发送load加载模型、embed批量嵌入、dispose释放等指令Worker 内动态加载 Transformers.js 的feature-extractionpipeline逐条生成向量并用均值池化 归一化pooling: mean, normalize: true保证余弦相似度计算的一致性每处理 2 条文本就回传一次embed:progress让前端能显示实时进度条。这套主线程调度 Worker 干活的模式封装在 local-embedding-service.ts 的WebWorkerEmbeddingEngine中而且引擎是可插拔的——桌面端用 Web Worker移动端则无缝切换到原生 ONNX 引擎上层代码完全无感。 向量存在哪里sqlite-vec 虚拟表桌面端Tauri的向量库由 Rust 后端实现vector/mod.rs核心是sqlite-vec 扩展向量写入 SQLite 的vec0虚拟表vec_embeddings维度在建表时固定如float[384]另有一张id_mapping表把 chunk ID 映射到向量行方便按书籍删除和重建索引开启 WAL 模式保证读写并发前端通过 tauri-vector-db.ts 的vector_search等指令调用。前端的统一抽象是 vector-db.ts 中的IVectorDB接口。若 Rust 后端不可用比如纯浏览器环境search.ts 会自动降级为内存余弦相似度搜索功能不中断。 不只是向量混合搜索更稳ReadAny 的默认搜索模式是混合搜索向量 BM25向量侧负责意思相近回答如何提高专注力能召回时间管理章节BM25 侧基于倒排索引做关键词精确匹配对专有名词、代码、人名更强两路结果用RRF倒数排名融合合并排序取各自所长。此外还带 5 分钟内存缓存和模型一致性校验provenance 匹配确保换模型、换端点不会张冠李戴。 小结一套可以借鉴的本地 RAG 架构ReadAny 的本地向量库证明了一个 23MB 的嵌入模型 Web Worker sqlite-vec就足以支撑离线语义搜索。几个值得借鉴的设计嵌入引擎可插拔Worker / 原生 ONNX跨平台零改动向量库带模型出处记录维度不匹配时显式报错而非静默出错搜索走向量 BM25 混合路线向量失败时优雅降级推理放 Worker、存储用 SQLite性能与资源占用平衡。想深入阅读源码可以从这几个文件入手嵌入 Workerembedding-worker.ts向量化流水线vectorize.ts混合搜索search.tsRust 向量库vector/mod.rs【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑