infinity
AI 原生向量数据库,0.1ms 向量检索 + 全文搜索混合查询,RAG 应用首选
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI 原生向量数据库,0.1ms 向量检索 + 全文搜索混合查询,RAG 应用首选
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你在为一个大模型应用构建「最强知识库」,文档有几十万篇,需要让 AI 能「秒懂」这些内容并精准回答问题。传统的做法是把文本一股脑塞给大模型——但这就像让一个人硬背一整座图书馆,效率低、成本高、还容易「遗忘」。
Infinity 正是为解决这个痛点而生的:它是大模型应用的「超级图书馆管理员」,专门负责高效存储、检索和管理海量的文本向量化数据,让 AI 在回答问题时能快速找到「最相关的那几页书」。
Infinity 由 Infiniflow 团队 开发,GitHub 仓库创建于 2022 年 7 月,是一个完全由社区驱动的开源项目(Apache-2.0 许可证)。该团队同时还维护着拥有 8 万 + Stars 的明星项目 RAGFlow(深度 RAG 编排引擎),Infinity 本质上是 RAGFlow 的「底层存储引擎」,属于典型的「基础设施先行」开源策略。
项目的核心驱动力来自于 2023 年下半年掀起的 RAG(检索增强生成) 浪潮。随着大模型应用的爆发式增长,开发者们迅速意识到:仅靠大模型自身能力无法高效利用私有数据,而向量数据库就是连接「私有知识」与「大模型智能」的关键桥梁。
如果把大模型比作「超级大脑」,那么 Infinity 就是这个大脑的「外接记忆硬盘」。具体来说,它解决了三个核心问题:
第一,语义检索的精准度问题。
普通的关键词搜索(如 Elasticsearch)只能找到「字面上」匹配的内容,但人类表达同一个意思的方式千变万化——「购买手机」「下单」「付款」本质上指的是同一件事。Infinity 通过向量搜索将文字「翻译」成数学坐标,让语义相近的内容自然聚集在一起,从而实现「找意思」而非「找字眼」的效果。
第二,多种检索方式的融合问题。
单一的向量搜索并非万能。对于短查询、精确术语匹配的场景,传统的 BM25 全文检索往往更有效。Infinity 的创新在于将稠密向量、稀疏向量(BM25)、张量(多向量,如 ColBERT 风格)、全文检索四种检索方式融为一体,并支持 RRF、权重和、ColBERT 风格的重排(Re-ranker),在一个查询计划内完成混合搜索,大幅降低工程复杂度。
第三,高性能与易用性的平衡问题。
Infinity 实现了 0.1 毫秒查询延迟、15K+ QPS(百万级向量数据集),以及 1 毫秒延迟、12K+ QPS 的全文搜索(3300 万文档规模)。这得益于纯 C++20 的核心实现,并采用模块化架构,将解析器、调度器、执行器、网络层等层层解耦,确保极致性能的同时保持代码可维护性。

Infinity 的架构设计体现了典型的「性能优先」工程哲学:
核心层(C++20):
整个数据库引擎采用 C++20 编写,充分利用 C++20 Modules 等现代特性。代码组织极为清晰:
src/network/ — 网络通信层,处理客户端连接src/storage/ — 存储引擎,管理数据持久化src/executor/ — 查询执行器,负责搜索计算src/scheduler/ — 任务调度器,优化并发处理src/parser/ — SQL/查询解析器src/function/ — 内置函数库src/expression/ — 表达式计算src/planner/ — 查询规划器src/metrics/ — 性能指标收集src/admin/ — 管理接口src/unit_test/ — 单元测试嵌入层(Python / Go):
除了独立的网络服务模式,Infinity 还支持嵌入式部署——直接将数据库引擎嵌入 Python 应用中,无需启动独立服务进程。通过 pip install infinity-sdk 即可使用,几行代码完成向量插入和查询。Go 语言客户端也在活跃维护中(go/ 目录)。
客户端协议:
使用 Thrift RPC 作为客户端与服务端之间的通信协议(thrift/ 目录),支持 Python、Go 两种 SDK。
代码规模:
主语言 C++ 占 82.8%,Python 占 9.9%(主要为 SDK 和测试),Go 占 4.5%(客户端库)。核心引擎代码量超过 3,130 次提交,代码质量较高。
Infinity 提供了开箱即用的 Docker 镜像,一条命令即可拉起服务:
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
docker pull infiniflow/infinity:nightly
docker run -d --name infinity \
-v /var/infinity/:/var/infinity \
--ulimit nofile=500000:500000 \
--network=host infiniflow/infinity:nightly
系统要求:x86_64 CPU(需 AVX2 指令集支持),Linux glibc 2.17+,或 Windows WSL2/MacOS。内存建议 4GB+,磁盘 10GB+(取决于数据量)。
不过需要注意的是,项目目前没有提供 docker-compose 文件,即没有 docker-compose 一键编排方案(数据库、数据目录、配置等),对于需要持久化存储和生产环境部署的团队来说,需要自行编写 docker-compose 或 Kubernetes manifest。
Python SDK 使用示例:
import infinity
infinity_obj = infinity.connect(infinity.NetworkAddress("<服务器IP>", 23817))
db = infinity_obj.get_database("default_db")
table = db.create_table("my_table", {
"num": {"type": "integer"},
"body": {"type": "varchar"},
"vec": {"type": "vector, 4, float"}
})
table.insert([{"num": 1, "body": "unnecessary and harmful", "vec": [1.0, 1.2, 0.8, 0.9]}])
res = table.output(["*"])
.match_dense("vec", [3.0, 2.8, 2.7, 3.1], "float", "ip", 2)
.to_pl()
print(res)
1. 相对年轻的项目。
作为 2022 年才创建的项目,Infinity 在生产环境的验证案例不如 Milvus、Qdrant 等老牌项目丰富,企业采用时需要更多的内部测试。
2. 生态工具链仍在完善。
目前没有官方的 GUI 管理界面,监控、备份、迁移等运维工具链不如商业数据库成熟。
3. 单机版为主。
Infinity 目前以单机部署为主,虽然底层架构支持扩展,但分布式集群模式的成熟度还有待验证。对于超大规模数据(亿级向量)场景,可能需要评估其集群方案的实际表现。
截至目前,Infinity 已获得 4,500+ GitHub Stars,在向量数据库赛道中增速显著。其最大的技术创新在于「All-in-One 混合检索」——不需要同时部署 Elasticsearch(全文检索)+ Pinecone(向量检索)+ Redis(缓存),一个 Infinity 搞定所有检索模式,大幅简化 RAG 应用的工程架构。
从行业发展趋势看,向量数据库正在从「可选组件」演变为「大模型应用标配基础设施」。Infinity 代表了新一代 AI-Native 数据库的设计思路:不再是在传统数据库上打补丁,而是从底层就为向量化和混合检索而生。随着 Infiniflow 团队持续投入(同步维护 RAGFlow + Infinity 双旗舰项目),Infinity 有望成为 RAG 应用栈中的核心存储层。
图注: