Qdrant是什么?
Qdrant是一款向量数据库与相似度搜索引擎,将高维embedding向量与称为"payload"的结构化JSON元数据一起存储,并可同时对两者进行搜索。 其自身的GitHub描述将其定位为具有REST和gRPC API的"vector similarity search engine and vector database",专为存储、搜索和管理向量及其payload数据而构建,用于语义匹配、分面搜索以及其他需要比较embedding的应用。
- 核心功能:一个专为存储embedding向量及任意JSON payload元数据而构建的数据库,可根据该元数据进行过滤,并执行快速的近似最近邻搜索
- 实现方式:根据项目自己的仓库和文档,使用Rust编写
- 访问方式:REST API、gRPC API,以及Python、JavaScript/TypeScript、Go、Rust、.NET/C#和Java的官方客户端库(社区还为Kotlin和PHP提供了客户端)
- 与这类用户相关的接口:通过
curl/客户端SDK进行命令行使用、通过任一官方客户端嵌入应用中的库使用,以及无需编写代码即可浏览集合的内置Web控制台 - 部署模式:在Apache License 2.0下完全可自托管,对于不想运维自己集群的团队,也可使用独立、可选的托管服务Qdrant Cloud(AWS、GCP或Azure)
- 规范仓库:github.com/qdrant/qdrant——该项目的源代码、issue跟踪器和发布历史
Qdrant的项目历史
Qdrant由Qdrant公司开发,该公司是这个开源项目及其qdrant.tech网站的背后团队。代码库已在GitHub上公开多年,截至2026年9月已增长到约34,655颗星,并拥有活跃的贡献者群体。该项目已从单节点的向量搜索引擎扩展为一个平台,还支持分布式部署(分片与副本)、用于降低内存占用的向量量化、密集/稀疏混合搜索,以及一个名为Qdrant Edge的更轻量、进程内运行的变体。
- GitHub仓库(github.com/qdrant/qdrant)是该项目源代码和发布说明的规范、持续维护的所在地
- Qdrant Cloud这一独立托管产品是与开源引擎一同推出的,作为该公司的商业化产品
- Qdrant Edge在qdrant.tech上被描述为面向资源受限环境的轻量级、进程内运行的数据库变体,是产品线中较新的补充,在本文撰写时仍处于测试版
Qdrant能做什么?
Qdrant的功能集以大规模存储和搜索向量embedding为核心,并在此之上叠加了元数据过滤和多种搜索模式。根据Qdrant自己的文档和GitHub README,以下是各部分的实际作用。
- 稠密向量搜索 — 为每个point存储一个或多个稠密embedding向量,并对其执行近似最近邻搜索,这是语义搜索和RAG检索背后的核心工作负载
- 稀疏向量与混合搜索 — 在单次查询中将稠密embedding与稀疏向量(一种类似关键词的表示)结合,当纯语义相似度会漏掉用户输入的确切词语时非常有用
- Payload过滤 — 为每个向量附加任意JSON元数据(即"payload"),并据此过滤搜索结果,包括嵌套字段、文本匹配、地理条件和字段存在性检查
- 向量量化 — 应用标量、乘积或二值量化以降低内存占用;Qdrant自己的文档表示,在有利的配置下最多可降低约97%,但实际效果取决于你的向量和配置
- 多向量支持 — 为每个point存储多个向量(例如每个文档分块或图像区域一个),实现更细粒度的相关性评分
- 内置Web控制台 — 一个可视化界面,用于浏览集合、检查point并运行测试查询,本地安装通常可通过
http://localhost:6333/dashboard访问,无需编写任何客户端代码 - 分布式部署 — 通过分片和副本实现超出单节点的扩展,当自托管部署超出单机规模时会用到
- 实时索引 — 根据Qdrant文档,新增和更新的point无需完整重建索引即可被搜索到
本地RAG流水线中的使用示例
以下是基于上文所述Qdrant已记录功能构建的具体工作流——这是自托管的"embedding模型+向量数据库"式RAG搭建通常采用的形态。
从本地embedding模型存储并查询embedding
运行docker run -p 6333:6333 qdrant/qdrant启动本地实例,创建一个与你embedding模型输出维度相匹配的集合,然后使用Python客户端(from qdrant_client import QdrantClient)upsert由本地embedding模型(例如通过Ollama提供的模型或sentence-transformers模型)生成的向量,并附带包含源文档、分块索引以及你之后想用来过滤的任何标签的payload。
将payload过滤与相似度搜索结合用于RAG检索
当你的本地LLM需要回答一个基于你自己文档的问题时,向Qdrant查询与该问题embedding最接近的向量,并按document_type: "policy"或日期范围等payload条件进行过滤,使检索限定在相关文档范围内,而不是无差别地搜索整个语料库。
在内置控制台中检查与调试集合
在本地Docker安装中打开http://localhost:6333/dashboard的Web控制台,浏览集合、查看单个point及其payload,并运行临时测试查询——这有助于在将其接入完整的RAG应用之前,验证你的embedding流水线是否确实正确地填充了Qdrant。
安装Qdrant
Qdrant可通过Docker、可下载的二进制文件或Rust crate免费安装,其源代码托管在GitHub上。 以下链接来自Qdrant自己的文档和GitHub仓库——由于确切的命令可能在不同版本间变化,请始终以这些页面为准直接核实。
来源 | 链接 |
|---|---|
| 官方网站与文档 | qdrant.tech |
| GitHub仓库(源代码,Apache-2.0) | github.com/qdrant/qdrant |
| Docker镜像 | hub.docker.com/r/qdrant/qdrant — docker run -p 6333:6333 qdrant/qdrant |
| Python客户端(PyPI) | pypi.org/project/qdrant-client — pip install qdrant-client |
| JavaScript/TypeScript客户端(npm) | npmjs.com/package/@qdrant/js-client-rest — npm install @qdrant/js-client-rest |
| Rust crate | cargo add qdrant-client,见客户端文档 |
| Qdrant Cloud(托管,可选) | cloud.qdrant.io |
Qdrant没有图形化安装程序——它以服务器进程的形式运行(通过Docker、二进制文件或从源代码构建),你通过客户端库或Web控制台连接到它。Qdrant自身没有公布固定的硬件最低要求;所需的内存和磁盘空间随向量数量、维度以及是否使用量化而变化。
Qdrant定价:开源版 vs. Qdrant Cloud
自托管的Qdrant服务器是免费的,开源软件本身没有付费层级。 GitHub LICENSE文件适用于整个自托管代码库,是标准的Apache License, Version 2.0。Qdrant Cloud是同一家公司提供的独立托管产品,单独计费,使用Qdrant完全不需要它。
- 自托管Qdrant:免费开源(Apache-2.0),无订阅费,软件本身不设使用限制——唯一的成本是你自己的基础设施(计算、内存、磁盘)
- 运行开源服务器无需账户或注册
- Qdrant Cloud是在AWS、GCP或Azure上提供的独立、可选托管服务;最新的层级和费率请直接查看qdrant.tech/pricing,本文不重复可能变动的价格数字
- Qdrant Edge是一款轻量级进程内运行的变体,本文撰写时仍处于测试版——在依赖它之前,请在qdrant.tech上核实其当前的许可和可用性
Qdrant vs. Milvus
Qdrant和Milvus是两个较为成熟的开源、可自托管向量数据库,它们经常被拿来比较,因为两者都瞄准生产级规模的相似度搜索并支持元数据过滤。最明显的区别在于实现语言、部署复杂度,以及各自如何定位其托管云服务。
方面 | Qdrant | |
|---|---|---|
| 实现语言 | Rust | Go和C++ |
| 单节点部署 | 单个Docker容器(qdrant/qdrant) | 除非使用Milvus Lite变体,否则通常需要更多组件(etcd、对象存储) |
| 内置Web控制台 | 有,随服务器一同提供 | 需要单独的工具(Attu)进行GUI管理 |
| 混合搜索 | 在单次查询中支持稠密+稀疏+多向量 | 通过自己的混合搜索API支持 |
| 许可证 | Apache License 2.0 | Apache License 2.0 |
| 托管云服务 | Qdrant Cloud(AWS/GCP/Azure) | Zilliz Cloud,由Milvus的主要商业支持方运营 |
如果你的首要目标是尽可能简单的单容器自托管方案并内置控制台,那么对大多数本地和小团队场景而言,Qdrant的部署足迹更轻量。如果你已经在更大规模上运维基于Kubernetes的原生基础设施,请直接评估Milvus——两者都是免费开源的Apache-2.0软件,且都频繁发布更新,因此在决定之前请在各自的官方网站上核实最新的功能细节。
谁适合使用Qdrant?
Qdrant是否适合你,取决于你是否需要一个具备payload过滤和混合搜索能力的专用、可自托管向量数据库,而不是更简单的嵌入式或内存中选项。
以下情况适合使用Qdrant
- 你正在构建RAG流水线,需要一个完全运行在自己基础设施上、数据不离开服务器的专用向量数据库
- 你需要在向量相似度之外,按结构化元数据(文档类型、日期、标签、权限)过滤搜索结果
- 你想要在单次查询中结合稠密语义embedding与稀疏关键词式向量的混合搜索
- 你想要一个内置Web控制台,在开发过程中检查集合,而无需搭建单独的管理工具
- 你预计最终会超出单机规模,希望在不更换数据库的情况下就能使用分片/副本
以下情况请再等等,或另寻他选
- 你的数据集足够小(数千个向量),一个嵌入式、进程内运行的选项或更简单的库级方案就能满足需求,无需运行独立服务器——嵌入式替代方案可参见txtai
- 你想要完全托管的向量搜索API,并且能接受数据离开自己的基础设施——Qdrant Cloud是一个选项,但请直接与其他托管服务商进行比较
- 你需要一个完整的RAG框架(文档加载器、分块、编排),而不只是向量存储层——将Qdrant与LangChain或LlamaIndex搭配使用来实现这一层,而不是期望Qdrant本身提供
- 你需要带SLA的官方企业支持,而不是社区支持——Qdrant免费层的支持渠道是GitHub Issues和Discord,这是开源项目的典型做法;企业支持条款需与该公司单独进行商业洽谈
Qdrant vs. 其他向量数据库和RAG工具
Qdrant是向量数据库和RAG基础设施领域众多工具之一。以下是它与其他选项相比的定位——完整目录请见本地LLM软件目录,最接近的正面对比请见上文的Qdrant vs. Milvus对比。
- Milvus — 另一款用Go和C++构建的开源、可自托管向量数据库,面向大规模生产部署;详见上文的专门对比部分。
- txtai — 一款以进程内方式运行、而非作为独立服务器运行的嵌入式向量搜索与RAG工具包,是面向较小数据集的更轻量选项。
- LangChain — 一个编排框架,本身并非向量数据库,常用于将Qdrant与文档加载器及LLM一起接入完整的RAG流水线。
- LlamaIndex — 构建RAG流水线时可替代LangChain的数据框架,通过其自有的向量存储连接器可与Qdrant集成。
- Haystack(deepset) — 一款与LangChain和LlamaIndex类似、位于向量数据库层之上的RAG与搜索框架,可将Qdrant用作后端存储。
- 另见PromptQuorum自己的Pinecone vs. Weaviate vs. Qdrant vs. Chroma对比,从更广的四方视角审视向量数据库格局。
评估Qdrant时的常见误区
关于Qdrant的大多数困惑,都源于将它与完整的RAG框架混为一谈、误解它与Qdrant Cloud的关系,或者假设它自己会生成embedding。
误区1:期望Qdrant生成embedding
Qdrant存储和搜索向量——它本身不会将文本转换为embedding。你需要一个独立的embedding模型(本地或云端托管)来生成发送给Qdrant的向量。
误区2:认为使用Qdrant必须依赖Qdrant Cloud
Qdrant Cloud是一款独立、可选的托管产品。开源服务器可通过Docker、二进制文件或Rust crate完全自托管,不依赖云服务。
误区3:把Qdrant当作完整的RAG框架
Qdrant是向量存储与搜索层。文档加载、分块、提示编排和LLM调用由LangChain、LlamaIndex或Haystack等独立框架处理,或者由你自己编写的代码处理。
误区4:假设量化带来的内存节省是统一适用的
Qdrant的文档表示,在有利的配置下量化最多可降低约97%的内存占用,但实际节省效果在很大程度上取决于你的向量维度、量化方法和数据分布——应对自己的工作负载进行基准测试,而不是假设这一数字适用于你的数据集。
常见问题
Qdrant是什么?
Qdrant(qdrant.tech,源码见github.com/qdrant/qdrant)是一款免费、开源的向量数据库与搜索引擎,用Rust编写。它将向量embedding与JSON payload元数据一起存储,支持稠密、稀疏和混合相似度搜索。
Qdrant是免费的吗?
是的,自托管的Qdrant服务器免费开源,采用Apache License 2.0,没有付费层级。Qdrant Cloud是一项独立的托管服务,单独计费——如果你选择这条路径,最新价格请查看qdrant.tech/pricing。
Qdrant是开源的吗?使用什么许可证?
是的。Qdrant的GitHub LICENSE文件是标准的Apache License, Version 2.0,适用于整个自托管代码库。
Qdrant能否完全在本地运行,不依赖云?
可以。Qdrant可通过Docker(docker run -p 6333:6333 qdrant/qdrant)、可下载的二进制文件或Rust crate完全自托管。Qdrant Cloud是可选且独立的——运行该软件并不需要它。
Qdrant有Web控制台吗?
有。Qdrant内置Web控制台,本地安装通常可通过http://localhost:6333/dashboard访问,用于浏览集合、检查point并运行测试查询,无需编写客户端代码。
Qdrant支持混合搜索吗?
支持。根据其自身文档,Qdrant支持在单次查询中结合稠密向量(语义)搜索与稀疏向量(关键词式)搜索,并支持多向量。
如何将Qdrant与本地embedding模型搭配使用?
Qdrant本身不生成embedding。运行一个本地embedding模型(例如通过Ollama或Python中的sentence-transformers模型)将文本转换为向量,然后使用Qdrant的官方客户端之一(Python、JavaScript/TypeScript、Go、Rust、.NET/C#或Java)来存储和查询这些向量。
Qdrant和Qdrant Cloud有什么区别?
Qdrant是开源的向量数据库软件,可在任何地方免费自托管。Qdrant Cloud是同一家公司提供的独立、可选托管产品,运行在AWS、GCP或Azure上,与开源软件独立计费。
Qdrant能与LangChain或LlamaIndex集成吗?
可以。LangChain和LlamaIndex都为Qdrant提供了向量存储连接器,让你可以在用任一框架构建的更大RAG流水线中,将其用作检索后端。
Qdrant支持哪些编程语言?
根据Qdrant自己的客户端文档,它提供Python、JavaScript/TypeScript、Go、Rust、.NET/C#和Java的官方客户端库,此外还有REST API和gRPC API,任何语言都可以直接调用。