[ PROMPT_NODE_22980 ]
qdrant-vector-search
[ SKILL_DOCUMENTATION ]
# Qdrant - 向量相似度搜索引擎
使用 Rust 编写的高性能向量数据库,专为生产级 RAG 和语义搜索而设计。
## 何时使用 Qdrant
**适用场景:**
- 构建需要低延迟的生产级 RAG 系统
- 需要混合搜索(向量 + 元数据过滤)
- 需要通过分片/复制进行水平扩展
- 需要完全数据控制的本地部署
- 每条记录需要多向量存储(稠密 + 稀疏)
- 构建实时推荐系统
**关键特性:**
- **Rust 驱动**:内存安全,高性能
- **丰富的过滤**:搜索时按任何负载字段过滤
- **多向量**:每个点支持稠密、稀疏、多稠密向量
- **量化**:标量、乘积、二进制量化以提高内存效率
- **分布式**:Raft 共识、分片、复制
- **REST + gRPC**:双 API,功能完全对等
**替代方案:**
- **Chroma**: 设置更简单,适用于嵌入式场景
- **FAISS**: 极致的原始速度,适用于研究/批处理
- **Pinecone**: 全托管,首选零运维方案
- **Weaviate**: 偏好 GraphQL,内置向量化器
## 快速开始
### 安装
bash
# Python 客户端
pip install qdrant-client
# Docker (开发推荐)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
# 带持久化存储的 Docker
docker run -p 6333:6333 -p 6334:6334
-v $(pwd)/qdrant_storage:/qdrant/storage
qdrant/qdrant
### 基本用法
python
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
# 连接到 Qdrant
client = QdrantClient(host="localhost", port=6333)
# 创建集合
client.create_collection(
collection_name="documents",
vectors_config=VectorParams(size=384, distance=Distance.COSINE)
)
# 插入带负载 (payload) 的向量
client.upsert(
collection_name="documents",
points=[
PointStruct(
id=1,
vector=[0.1, 0.2, ...], # 384 维向量
payload={"title": "Doc 1", "category": "tech"}
),
PointStruct(
id=2,
vector=[0.3, 0.4, ...],
payload={"title": "Doc 2", "category": "science"}
)
]
)
# 带过滤的搜索
results = client.search(
collection_name="documents",
query_vector=[0.15, 0.25, ...],
query_filter={
"must": [{"key": "category", "match": {"value": "tech"}}]
},
limit=10
)
for point in results:
print(f"ID: {point.id}, Score: {point.score}, Payload"