Qdrant 概述
欢迎!
无论您是刚开始接触 Qdrant 开源版还是云服务版,这份简短的入门指南都将帮助您了解该平台的概况。强烈建议您在开始使用 Qdrant 进行开发之前先阅读本概述!
检索流程
向量搜索是一种革命性的信息检索技术,它超越了关键字匹配,能够根据语义查找数据。它始于嵌入模型(embedding models),将非结构化数据(文本、图像、音频)转换为稠密向量嵌入(dense vector embeddings)——即代表数据概念本质的定长数字列表。这些向量被映射到一个高维的向量空间(vector space)中,语义相似的项目在空间中彼此靠近。这种空间组织方式使得搜索“气候变化”时能够检索到关于“全球变暖”的文档,即使它们使用的具体词汇不同。

虽然稠密向量擅长捕捉上下文,但有时可能会遗漏特定的技术术语或唯一标识符。为了弥补这一差距,Qdrant 还利用稀疏向量(sparse vectors)来捕捉特定关键字的精确词法匹配(lexical matches)。详情请参阅此指南。
从非结构化数据生成嵌入的过程称为推理(inference)。在 Qdrant Cloud 上,您可以使用云推理(Cloud Inference)让 Qdrant 在服务器端生成嵌入。或者,您也可以使用 FastEmbed 等库在客户端生成嵌入。
搜索过程本身围绕Top-K检索概念展开。当用户提交请求时,它会立即转换为查询向量(query vector)。引擎随后计算查询向量与文档向量之间的相似度,并返回“Top-K”个最接近的匹配项,其中 K 是用户定义的结果数量。这使开发人员能够微调搜索广度与答案精确度之间的平衡。

为了提供最强大的搜索体验,Qdrant 实现了结合语义和词法搜索的混合检索(Hybrid Retrieval),您可以在此处了解更多信息。
架构
Qdrant 采用客户端-服务器架构,为 Python、JavaScript/TypeScript、Rust、Go、.NET 和 Java 提供官方客户端库。此外,Qdrant 还公开了 HTTP 和 gRPC 接口,以便与几乎任何编程语言集成。
数据结构

Qdrant 集合专为横向和纵向扩展而设计。您可以通过下方的链接了解图表中的详细信息。
部署
Qdrant 支持多种部署模型,以满足不同的基础设施和运营需求。合适的选择取决于您的安全限制和运营模型:Qdrant 管理的基础设施(托管云)、与您自己的集群共同承担责任(混合云),或完全所有权与独立性(私有云 或 开源版)。
| 特征 | 优势 | OSS(开源) | 托管版 | 混合云 | 私有版 |
|---|---|---|---|---|---|
| 部署 | 根据您的基础设施需求,选择如何以及在何处部署 Qdrant 向量数据库。 | ✅ | ✅ | ✅ | ✅ |
| 高可用性 | 自动故障转移和复制,确保您的向量搜索始终可用。 | ❌ | ✅ | ✅ | ✅ |
| 零停机升级 | 利用复制功能升级您的 Qdrant 数据库,无需中断服务。 | ❌ | ✅ | ✅ | ✅ |
| 监控与告警 | 内置监控和告警功能,以观察集群的健康状况和性能。 | ❌ | ✅ | ✅ | ❌ |
| 集中管理 UI | 一个统一的控制台,用于创建、配置和管理所有 Qdrant 数据库集群。 | ❌ | ✅ | ✅ | ❌ |
| 横向与纵向扩展 | 通过自动分片重新平衡和重分片支持,实现集群的纵向伸缩或横向扩展。 | ❌ | ✅ | ✅ | ✅ |
| 备份与灾难恢复 | 自动备份和恢复功能,确保数据持久性和平稳恢复。 | ❌ | ✅ | ✅ | ✅ |
| 数据隐私与控制 | 将所有用户数据保留在您自己的基础设施和网络内,外部无法访问。 | ✅ | ❌ | ✅ | ✅ |
| 多云与本地部署 | 根据您的需求在 AWS、GCP、Azure、本地机房或边缘节点部署。 | ✅ | ❌ | ✅ | ✅ |
| 企业支持 | 为生产环境部署提供 Qdrant 企业支持服务。 | ❌ | ✅ | ✅ | ✅ |
| 无需基础设施管理 | Qdrant 完全管理您的基础设施,让您可以专注于构建应用程序。 | ❌ | ✅ | ❌ | ❌ |
扩展考量
当您刚开始进行概念验证(POC)或副项目时,Qdrant 的默认配置是非常合理的。然而,当转入生产环境并面对数据量增长和并发用户数上升时,您对高可用性、延迟或吞吐量的期望将会改变。如果您预见到服务需要扩展,应从一开始就建立能够应对这些挑战的系统。有一些常见的场景需要注意,特别是当您刚接触 Qdrant、预期业务快速增长并希望使系统能够经受住未来考验时。
内存需求
内存是扩展向量搜索时的关键资源。默认情况下,Qdrant 将向量存储在 RAM 中以获得最佳搜索性能,但随着集合增长到数百万个向量,将所有内容保留在内存中会变得成本高昂。Qdrant 允许您通过将数据卸载到磁盘来控制内存使用,即使在现有集合上,您也可以随时启用该机制。
- 如果将向量存储在磁盘上,频繁访问的向量会自动保留在缓存中,而其他向量仅在需要时才从磁盘读取。
- 如果将 HNSW 索引存储在磁盘上,图形遍历可能需要 IO 操作。
仅在 RAM 严重受限时才将两者都放入磁盘,并确保拥有快速的 NVMe 存储。
筛选
仅靠向量搜索就能为用户提供不错的搜索体验;然而,语义相似度很少是您唯一需要考虑的因素。嵌入无法捕捉价格等属性,通常需要对特定的载荷(payload)属性应用过滤器。为了使过滤有效,您应该了解一些特定的 Qdrant 机制,包括载荷索引(payload indexes)。
载荷索引
载荷索引是一种辅助数据结构,能够对特定载荷属性进行有效过滤。这对于关系型数据库用户来说是一个熟悉的概念,即在经常过滤的列上创建索引。同样,在 Qdrant 中,您也应该为用于过滤的字段创建载荷索引。
载荷索引的一个独特之处在于它扩展了 HNSW 图,允许在语义搜索阶段应用过滤条件。这意味着它是单次遍历图形,而不是预过滤或后过滤,这两种过滤方式都有各自的缺陷。

载荷索引扩展了 HNSW 图这一事实意味着,在索引数据之前创建它更有效,因为优化器只需要构建一次图。然而,在某些情况下,您可能已经拥有一个包含大量向量的集合,并意识到需要按特定属性进行过滤。在这种情况下,您仍然可以创建载荷索引,但它不会立即影响 HNSW 图。
ACORN 是一种额外的机制,如果您的搜索操作中存在多个高基数过滤器,它可以提高搜索精度。
扩展
纵向扩展存在天然局限——最终您会达到可用硬件的最大容量,且单节点部署缺乏冗余。通过分片(sharding)、复制(replication)和段配置(segment configuration)选项来优化扩展。
分片
Qdrant 使用分片将集合分散到多个节点上,其中每个分片都是独立的点存储区。通常建议从 12 个分片开始,这提供了从 1 个节点扩展到 2、3、6 或 12 个节点的灵活性,而无需重分片。然而,这种方法可能会限制小集群的吞吐量,因为每个节点需要管理多个分片。
为了获得最佳吞吐量,请设置 shard_number 等于您的节点数(点击此处了解更多)。如果您想更好地控制分片,Qdrant 支持用户自定义分片。
复制
复制因子决定了每个分片存在多少个副本。对于生产系统,强烈建议复制因子至少为 2。

段配置
每个分片将数据存储在多个段(segments)中。一个段存储分片中部分点的所有数据结构。段数量越少,产生的段越大,搜索吞吐量越好,因为更大的 HNSW 索引需要较少的比较。然而,更大的段构建和重建需要更长时间,会减慢写入和优化速度。段数量越多意味着索引速度越快,但搜索性能较低,因为查询需要扫描更多的段。阅读更多关于段配置的内容。
安全
某些集合级操作可能会降低 Qdrant 集群的性能。Qdrant 的严格模式(strict mode)通过多种控制手段防止低效的使用模式:它可能会阻止对未索引载荷字段的过滤和更新、限制查询结果大小和超时时长、限制过滤条件的复杂性和数量、限制载荷索引的数量、约束批量写入(upsert)大小、强制执行集合存储上限(针对向量、载荷和点计数),并实施读写操作的速率限制以防止系统过载。
OSS(开源)版本不强制执行任何限制,但请根据应用程序需求考虑启用和配置严格模式设置。否则,某些 API 调用可能会因为以非最优方式使用 Qdrant 而影响集群性能。
获取帮助
如果您是 Qdrant 的新手,请从免费的基础课程开始,该课程涵盖了核心概念和最佳实践。如需问题咨询、故障排查和社区支持,请加入 Discord 社区——这是从 Qdrant 用户和核心团队获得帮助的最佳场所。付费客户可以通过 Qdrant 云控制台访问支持门户,以获得直接的技术支持和优先响应服务。