Skip to main content
[ PIER ]

Qdrant

用于 AI 应用的高性能向量数据库。

Service #vector#search#ai#embeddings#similarity

Qdrant 是一个用 Rust 编写的向量相似性搜索引擎。它存储嵌入(来自 OpenAI、Cohere、Voyage、BGE 等的密集向量)并通过 HNSW 索引提供最近邻查询 — 对生产 RAG、语义搜索、推荐和异常检测足够快。Pier 部署带持久存储和仪表板 UI 的官方 Docker 镜像。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 Qdrant。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 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 集合,多模态查询。

代码示例

创建集合 python
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),
)
插入带 payload 的向量 python
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"},
        )
    ],
)
带 payload 过滤器的搜索 python
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,
)
混合搜索(密集 + 稀疏) python
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 更简单 — 单一二进制、单一容器。

常见问题

默认端口和协议?
6333/tcp 用于 REST + 仪表板,6334/tcp 用于 gRPC。Pier 暴露两者。gRPC 对高 QPS 更快;REST 适合大多数应用。
嵌入从哪里来?
Qdrant 不生成嵌入 — 你在客户端生成。OpenAI `text-embedding-3-small`、Voyage、Cohere 或本地模型(BGE、all-MiniLM)都有效。只需将向量传给 Qdrant。
持久化?
是 — Pier 将 `/qdrant/storage` 挂载为持久卷。在容器重启和升级中存活。
内存和磁盘要求?
HNSW 索引是内存映射的。经验法则 — 4 GB RAM 处理约 1M 向量,维度 1536。使用标量量化时,相同 RAM 容纳约 4M 向量。
认证?
Qdrant 支持 API 密钥认证。Pier 自动生成密钥并通过 env var 暴露。在每个请求上发送 `api-key` 头。
备份?
使用 Qdrant 的快照 API 创建每个集合的快照。在数据卷上存储快照或推送到 S3。
Pier 部署哪个版本?
默认 `latest`。Qdrant 移动很快 — 像 `v1.12.0` 这样的固定版本在版本选择器中可用。

相关服务

在你的 VPS 上部署

Qdrant 是一个用 Rust 编写的向量相似性搜索引擎。它存储嵌入(来自 OpenAI、Cohere、Voyage、BGE 等的密集向量)并通过 HNSW 索引提供最近邻查询 — 对生产 RAG、语义搜索、推荐和异常检测足够快。Pier 部署带持久存储和仪表板 UI 的官方 Docker 镜像。

部署此服务 →