AI News HubLIVE
站内改写2 分钟阅读

Fidx – 本地语义搜索,单个SQLite文件,查询时不需LLM

Fidx 是一个本地语义搜索引擎,将 BM25 全文搜索与 768 维向量搜索结合,全部存储在单个 SQLite 文件中。查询时无需 LLM,仅需一次 ONNX 嵌入,在 CPU 上即可实现毫秒级响应。支持 CLI、私有 RAG 检索和代理记忆搜索。

来源Hacker News AI作者: williamliu_ai

Fidx 是一个全新的本地语义搜索引擎,旨在为本地文件和代理提供快速、私密的搜索体验。它的核心设计理念是:在查询路径中避免使用任何大型语言模型(LLM),从而在保持高召回率的同时,实现毫秒级的响应速度。

Fidx 采用混合检索策略,将 BM25 全文搜索(基于 FTS5)与 768 维向量搜索(通过 ONNX 嵌入)相结合,并使用倒数秩融合(RRF)对结果进行排序。这种设计使其既能精确匹配确切的名称和标识符,也能理解语义查询,如"那篇讨论索引项目的文档"。

所有数据——包括文档、BM25 索引和向量嵌入——都存储在一个单一的 SQLite 数据库文件中。这意味着你可以轻松地复制、备份或删除整个索引。Fidx 还支持集合(collection)功能,允许你将不同来源的文件分组,并针对特定集合进行搜索。

安装方面,Fidx 需要 Python 3.11 或 3.12,并支持 sqlite3 加载扩展和 FTS5。推荐使用 uv 安装,首次索引时会自动下载嵌入模型(之后可完全离线使用)。目前支持 Linux x86_64、macOS arm64 和 Windows x86_64 平台。

Fidx 的使用非常直观:通过 CLI 注册目录、建立索引,然后使用 fidx search 进行搜索。它还提供了一个守护进程模式,可以保持模型和索引的热状态,使搜索延迟进一步降低到毫秒级。对于代理和 RAG 工具,Fidx 提供 JSON 输出和文档获取命令,方便集成。

在基准测试中,Fidx 与 QMD 进行了对比。在四个语料库(docs-small、docs、chat、code)上,Fidx 在查询延迟上比 QMD 的 LLM 混合模式快 300–1000 倍(例如 18–49 ms vs 18–36 秒),同时在 purity 指标(noise@10 和 clean@10)上全面领先。在已知项查询中,Fidx 在 docs 和 code 语料库上的召回率(R@10)也优于 QMD。

需要注意的是,Fidx 的纯向量模式在语义查询(即查询与目标文档几乎没有词汇重叠)上表现较好,而混合模式在某些情况下会略低于纯向量模式。开发团队表示,查询自适应加权是未来的改进方向。此外,对于 92k 代码文件的语义搜索,由于文本嵌入器的限制,效果有限,Fidx 在代码搜索上的优势在于词汇匹配。

总体而言,Fidx 提供了一个轻量级、高性能的本地搜索解决方案,特别适合需要快速、私有且无需 LLM 的场景。无论是个人笔记、代码库还是代理记忆,Fidx 都能提供出色的搜索体验。