Qdrant
用于 AI 应用的高性能向量数据库。
Qdrant 是一个用 Rust 编写的向量相似性搜索引擎。它存储嵌入(来自 OpenAI、Cohere、Voyage、BGE 等的密集向量)并通过 HNSW 索引提供最近邻查询 — 对生产 RAG、语义搜索、推荐和异常检测足够快。Pier 部署带持久存储和仪表板 UI 的官方 Docker 镜像。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 Qdrant。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。
什么是 Qdrant?
Qdrant 是用 Rust 编写的开源向量相似性搜索引擎。它的存在是为了非常非常快地 回答一个问题:“给定这个查询向量,找到 k 个最近的存储向量。“在大多数通用 数据库为高维向量工作负载苦苦挣扎的地方,Qdrant 专为 HNSW 索引、payload 过滤和数百万向量上的亚 50ms 响应时间而构建。
现代 AI 栈 — RAG、语义搜索、推荐、异常检测 — 都需要这个原语。嵌入来自 模型(OpenAI、Cohere、Voyage、本地 BGE/MiniLM);嵌入存活在 Qdrant 中; 查询结合向量相似度与 payload 过滤器(“查找类似的,但只在英文中,上周 发布,由用户 X”)。
Pier 如何部署它
Pier 使用官方 qdrant/qdrant Docker 镜像。默认端口是 6333(REST + 仪表板
UI)和 6334(gRPC)。数据卷挂载到 /qdrant/storage。Pier 自动生成 API
密钥(通过 QDRANT__SERVICE__API_KEY 设置)并在服务详情页面显示。
内置仪表板 UI 在端口 6333(路径 /dashboard)可达。在 Pier 的 Domains
标签中附加域名以通过 Traefik 获得 HTTPS。
何时不要使用 Qdrant
如果你已在 Postgres 中有数据且数据集低于约 1M 向量,pgvector 更简单 — 少一个数据库要运维。对于任何规模的纯托管服务简单性,Pinecone 用成本换零 运维。Qdrant 在你想要自托管控制、数百万向量规模、丰富 payload 过滤和 混合稀疏+密集搜索时获胜。
核心功能
磁盘上的 HNSW 索引
内存映射 HNSW(分层可导航小世界)图 — 在数百万高维向量上毫秒搜索,无需将所有内容保留在 RAM 中。
Payload 过滤
将 JSON 元数据(标签、日期、用户 ID)附加到每个向量。在搜索时过滤 — "查找我拥有的、最近 30 天内修改过的相似文档"在一个查询中。
REST + gRPC + Python/JS/Rust/Go 客户端
Python、JS、Rust、Go、.NET、Java 的一流客户端。支持 REST 和 gRPC;gRPC 对高 QPS 工作负载更快。
混合搜索(稀疏 + 密集)
结合 BM25 风格的稀疏向量与密集嵌入。混合通常优于企业文档 RAG 的任何一个单独的。
量化
标量、产品和二进制量化将索引大小减少 4-32×,召回损失最小。在商品 VM 上运行十亿级向量索引。
分片和复制
通过分片水平扩展;副本用于冗余。Pier 提供单节点;生产规模集群需要手动编排。
应用场景
RAG / 聊天机器人检索
检索增强生成中的"R"。用 OpenAI / BGE / Voyage 嵌入你的文档;存储在 Qdrant;在聊天时查询前 k 个相关块。
语义搜索
按含义查找文档,而不仅是关键字。"谁有 React 状态管理经验?"即使他们写"Redux/Zustand 专长"也会返回匹配。
推荐系统
用户 → 项目嵌入 → 类似项目。当你有项目嵌入但没有行为数据时冷启动友好。
重复 / 近重复检测
基于哈希的去重错过释义。基于嵌入的去重捕捉它们。对内容审核、剽窃、支持工单去重至关重要。
图像 / 多模态搜索
CLIP 嵌入让你通过文本搜索图像,反之亦然。相同的 Qdrant 集合,多模态查询。
代码示例
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
client = QdrantClient(url="http://qdrant:6333")
client.create_collection(
collection_name="docs",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
) from qdrant_client.models import PointStruct
client.upsert(
collection_name="docs",
points=[
PointStruct(
id=42,
vector=[0.1, 0.2, ...], # 1536-dim
payload={"title": "Hello", "url": "/posts/hello", "lang": "zh"},
)
],
) from qdrant_client.models import Filter, FieldCondition, MatchValue
hits = client.search(
collection_name="docs",
query_vector=[0.1, 0.2, ...],
query_filter=Filter(
must=[FieldCondition(key="lang", match=MatchValue(value="zh"))]
),
limit=5,
) from qdrant_client.models import Prefetch
results = client.query_points(
collection_name="docs",
prefetch=[
Prefetch(query=dense_vector, using="dense", limit=20),
Prefetch(query=sparse_vector, using="sparse", limit=20),
],
query={ "fusion": "rrf" }, # 倒数排名融合
limit=5,
) 对比
| vs Pinecone(托管) | Pinecone 是托管、精致、昂贵的。Qdrant 是 OSS、自托管、可比性能。当你想要对数据、成本的控制或需要本地部署时选 Qdrant。 |
| vs Weaviate | Weaviate 有内置嵌入生成模块(为你调用 OpenAI/Cohere)。Qdrant 更精简 — 你在客户端生成嵌入。两者都很优秀;Qdrant 通常更快,Weaviate 有更好的混合功能。 |
| vs pgvector(PostgreSQL 扩展) | 当你已在 Postgres 中有数据且不想要第二个数据库时 pgvector 很棒。在规模化(10M+ 向量)时 Qdrant 优于 pgvector,并有更丰富的 payload 过滤。 |
| vs Milvus | Milvus 是中国主导的 OSS 项目,具有类似功能集。运维更重(更多组件)。Qdrant 更简单 — 单一二进制、单一容器。 |
常见问题
默认端口和协议?
嵌入从哪里来?
持久化?
内存和磁盘要求?
认证?
备份?
Pier 部署哪个版本?
相关服务
在你的 VPS 上部署
Qdrant 是一个用 Rust 编写的向量相似性搜索引擎。它存储嵌入(来自 OpenAI、Cohere、Voyage、BGE 等的密集向量)并通过 HNSW 索引提供最近邻查询 — 对生产 RAG、语义搜索、推荐和异常检测足够快。Pier 部署带持久存储和仪表板 UI 的官方 Docker 镜像。
部署此服务 →