一个小巧的向量搜索引擎
USearch 是做向量和相似度搜索的近似最近邻(ANN)引擎,写成一个小巧、单头文件的 C++ 库,带 SIMD 加速。它的整套卖点是做 FAISS 更轻、更便携的替代:极小的代码库、没有重依赖、跨多种语言的原生绑定(Python、JavaScript、Rust、Go、Java、Swift、C# 等),还能通过 WebAssembly 在浏览器里跑。截至 2026-06 有 4,167 星,想要嵌入式向量搜索、又不想拉进一个大库或立一个数据库时,它是首选。
心智模型是:USearch 是你在进程内调用的可嵌入引擎;完整向量数据库则是你作为服务跑的系统。
它做什么
你建一个索引,带 id 加向量,搜最近邻,核心和 FAISS 用的是同样基于 HNSW 的算法。让 USearch 与众不同的是周边设计:任意自定义距离度量(不是固定列表)、几种量化选项(含 bf16、f16、int8)用精度换内存和速度、用谓词函数做灵活过滤,以及流式序列化,让你不必把索引全加载进 RAM 就能从磁盘搜。项目自报相对 FAISS 在它的基准里有可观的速度和体积优势;把那些当维护者公布的数,按你自己的负载跑基准。
安装
pip install usearch
npm install usearch
它也提供 Rust、Go、Swift、C# 和单 C++ 头文件。同一个磁盘上的索引能跨这些语言绑定复用,这是它对多语言栈吸引力的一部分。
USearch 与 FAISS
这是项目主动招来的对比,所以说精确点。两者核心都用 HNSW 图,所以算法质量相当。区别在哲学:FAISS 是 Meta 出的功能丰富、面向批处理的库,表面大、有 BLAS 依赖;USearch 小、依赖少、多语言、便携到浏览器和边缘。要它的全功能集和生态做大规模离线批处理选 FAISS;体积、便携、多语言访问或自定义度量更重要时选 USearch。两者在准确率上差得不远;差在打包和触达。
适合与不适合
想在应用内嵌入 ANN 搜索、需要同一索引能从多种语言用、要求自定义距离度量(地理、分子、你自己的)、或必须在浏览器和边缘设备这类受限目标上跑时,USearch 很合适。
它不是完整向量数据库的替代。它没有远程 API、没有内建分布式、没有 ACID 保证,所以在线、多节点、混合过滤的服务,你要 Qdrant 或 Pinecone 这样的系统,可能把 USearch 嵌在里面。并发也有限:并发 add 和 search 支持,但并发移除一直是弱点,要绕着设计。各语言绑定的功能对齐也不均,自定义度量和一些功能在 C++、Python、Rust 里比别的丰富。
USearch 和替代品的对比
| USearch | FAISS | 完整向量 DB(Qdrant、Pinecone) | |
|---|---|---|---|
| 形态 | 可嵌入库 | 可嵌入库 | 独立服务 |
| 体量 | 极小、无重依赖 | 较大、有 BLAS 依赖 | 要运维的服务 |
| 语言 | 多种原生绑定 | 主要 C++ 和 Python | API 上的 SDK |
| 自定义度量 | 任意 | 固定一组 | 有限 |
| 适合 | 嵌入式、便携、多语言 | 功能丰富的离线批处理 | 在线、分布式服务 |
标出处的数字为截至 2026 年 6 月的 GitHub 数据。FAISS 是大规模离线工作的功能丰富老牌。完整向量数据库加上一个库没有的服务、API、分布式和 ACID 保证。USearch 的独门价值是那个你嵌进去的小、便携、多语言引擎,这也是为什么记忆层或分析型数据库这类项目会直接集成它,省得自己重写 ANN。
star 曲线
star 曲线反映它作为一个被嵌进其它系统(分析型数据库、记忆层、搜索功能)的引擎,被稳步采用的增长。活跃的发布节奏,每隔几周一版,指向持续开发。
issue 区给你的预警
反复出现的 issue 集中在边缘,核心很稳。各语言绑定的功能对齐不均,所以你在 Python 里用过的能力,Java 或 JavaScript 里可能没有。并发移除有过设计问题,一个计划中的大版本要修,所以别混着并发 add 和 remove。量化用精度换速度和内存,为你的数据验证准确率影响归你。序列化和持久化行为虽支持,但有些细节,生产前值得测。
相关仓库
要底下用向量库的记忆层,看 Mem0。要嵌入前的文档解析,看 docling 和 unstructured。要构建检索应用的 AI SDK,看 vercel/ai。想看什么在涨,见 LLM 工具、每日榜 和 每周报告。
常见问题
USearch 还是 FAISS,该用哪个? 两者核心都用 HNSW,所以准确率相当。FAISS 功能丰富、面向批处理、有 BLAS 依赖。USearch 小、依赖少、多语言、便携到浏览器和边缘。要全功能集选 FAISS,要体积、便携和自定义度量选 USearch。
USearch 能替代 Qdrant 或 Pinecone 这样的向量数据库吗? 不能。USearch 是可嵌入库,远程 API、分布式、ACID 这些由向量数据库作为服务来提供。不过你能把 USearch 嵌进一个提供这些的更大系统里。
USearch 跨多种语言能用吗? 能。它有 Python、JavaScript、Rust、Go、Java、Swift、C# 等原生绑定,同一个磁盘索引能跨它们复用。注意功能对齐不均,自定义度量和一些功能在 C++、Python、Rust 里更丰富。
量化会伤准确率吗? 它用精度换内存和速度。bf16 这种选项把准确率保持得接近全精度,int8 省更多、准确率代价更大。为你自己的数据验证影响,因为没有自动准确率保证。
USearch 能在浏览器或边缘设备上跑吗? 能。它支持浏览器的 WebAssembly,有适合移动和边缘的绑定,流式序列化让你不必把索引全加载进内存就能从磁盘搜。