vectordb
高性能开源向量数据库,C++实现,Docker一键部署,支持RAG混合搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
高性能开源向量数据库,C++实现,Docker一键部署,支持RAG混合搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你正在开发一个企业级 RAG(检索增强生成)系统,数据量超过 1000 万条向量,每次用户提问都要在毫秒级从海量 Embedding 中找出最相关的 Top-K 片段——这是每个 AI 应用开发者迟早会碰到的性能墙。传统关系型数据库做不了这个,Elasticsearch 的向量搜索能力也力不从心。正是在这个背景下,Epsilla 应运而生:一个专注于向量检索性能优化的开源向量数据库管理系统(Vector DBMS),官方标称比主流方案快 10 倍且成本更低。
大语言模型(LLM)之所以强大,离不开知识的支撑。但模型的参数量再大,也无法记住所有细节——这催生了 RAG 架构:用外部向量数据库存储知识片段,运行时检索最相关的内容注入上下文。然而,当向量规模从几万膨胀到上亿级时,检索性能就成了整个系统的瓶颈。传统的 FAISS(Facebook AI Similarity Search)适合单机构建索引,但缺乏分布式管理能力;Pinecone/Qdrant 等商业方案云原生友好,但开源可控性受限。Epsilla 的目标是在开源自主可控和生产级性能之间找到最优解。
Epsilla 引擎采用纯 C++ 实现(engine/ 目录),共 191 个源文件,结构清晰、分层合理:
数据层(db/,58 个文件):包含向量索引核心实现。ann_graph_segment 实现 ANN(近似最近邻)图索引;catalog/ 负责元数据管理(DatabaseSchema、TableSchema、FieldSchema);db_mvp 是数据库核心引擎,持有元数据、索引和表实例;db_server 负责服务端的生命周期管理。
查询层(query/,7 个文件):表达式解析与查询重写,处理 WHERE 过滤条件(字符串包含、数值范围等),在向量检索前对元数据进行预过滤。
服务层(server/,19 个文件):基于 Oat++ 框架构建高性能 HTTP/gRPC 服务端,web_server/ 子模块负责路由分发与请求处理。Oat++ 是轻量级 C++ REST API 框架,性能优于主流 C++ HTTP 库。
嵌入服务(services/embedding_service.cpp):集成外部 Embedding 模型 API(如 OpenAI、Cohere),支持内嵌式向量生成,无需独立部署 Embedding 服务。支持的模型通过 /v1/embeddings 接口查询,返回向量维度和稀疏/稠密类型。
基础设施:
Epsilla 不只是一个向量的仓库,而是一个完整的向量数据库管理系统,提供以下核心能力:
向量检索 + 元数据过滤:可以在向量相似度检索的同时,对字段进行条件过滤(如 WHERE category == 'science'),这在 RAG 场景中对缩小检索范围至关重要。
混合搜索:融合稠密向量(Dense Vector)和稀疏向量(Sparse Vector)检索,对语义匹配和关键词匹配进行融合排序,适用于需要兼顾理解力和精确性的场景。
内嵌式 Embedding:内置对常见 Embedding 模型的支持,输入自然语言直接返回检索结果,无需先调用 Embedding 服务。README 中的示例代码清晰展示了这一特性:
client.query(
table_name="MyTable",
query_text="Celestial bodies and their characteristics", # 直接输入自然语言
limit=2
)
Epsilla 的部署极为简单,官方提供预编译 Docker 镜像,一行命令启动完整服务:
# 服务端(后台运行)
docker run --pull=always -d -p 8888:8888 -v /data:/data epsilla/vectordb
# Python 客户端
pip install pyepsilla
引擎通过 CMake 构建系统管理(CMake >= 3.10,C++17),支持 Linux/macOS 原生编译。Docker 镜像采用多阶段构建(engine/Dockerfile 中 FROM epsilla/base as builder),确保最终镜像精简。
硬件需求方面,Epsilla 对 GPU 无硬性要求——HNSW 等 ANN 索引算法在 CPU 上即可高效运行。入门部署仅需 4GB 内存和 5GB 磁盘,生产级部署推荐 16GB+ 内存以承载更大索引。
向量数据库是 LLM 应用栈的关键基础设施。随着 RAG 架构在企业 AI 场景的普及,对高性能、可控开源向量数据库的需求持续增长。Epsilla 以 C++ 高性能引擎为底座,以 Docker 一键部署为入口,在向量检索赛道中占据了轻量高性能的独特生态位,是中小型团队构建 AI 知识库和 RAG 系统的值得关注的选项。