SuperAPI AI 工具集

grepai-storage-qdrant

数据与分析

查看项目

更新于 10-15 15:11

技能介绍

用途

本技能用于把 Qdrant 配置为 GrepAI 的存储后端,以提供高性能的向量搜索。以下情形适合使用:需要尽可能快的搜索性能;代码库非常庞大(50K+ 文件);已经在使用 Qdrant 基础设施;希望使用高级向量搜索功能。

什么是 Qdrant

Qdrant 是专为向量设计的数据库,提供:极快的向量相似度搜索、出色的可扩展性、高级过滤能力、便捷的 Docker 部署。

前置条件:Qdrant 服务已运行;具备到 Qdrant 的网络访问。

优势包括:性能(最快的向量搜索)、可扩展性(可处理数百万向量)、高级能力(过滤、payload、分片)、易部署(Docker 就绪)、云选项(提供 Qdrant Cloud)。

部署 Qdrant

方式一:Docker(推荐)。使用以下命令运行带持久化存储的 Qdrant:

docker run -d
--name grepai-qdrant
-p 6333:6333
-p 6334:6334
-v qdrant_storage:/qdrant/storage
qdrant/qdrant

端口说明:6333 为 REST API;6334 为 gRPC API(GrepAI 使用)。

方式二:Docker Compose。docker-compose.yml 内容如下:

version: '3.8' services: qdrant: image: qdrant/qdrant ports: - "6333:6333" - "6334:6334" volumes: - qdrant_storage:/qdrant/storage environment: - QDRANT__SERVICE__GRPC_PORT=6334

volumes: qdrant_storage:

启动命令:docker-compose up -d

方式三:Qdrant Cloud。访问 cloud.qdrant.io 注册;创建集群;获取 endpoint 与 API key。

配置

基础配置(本地):

.grepai/config.yaml

store: backend: qdrant qdrant: endpoint: localhost port: 6334

带 TLS(生产):

store: backend: qdrant qdrant: endpoint: qdrant.company.com port: 6334 use_tls: true

带 API Key(Qdrant Cloud):

store: backend: qdrant qdrant: endpoint: your-cluster.aws.cloud.qdrant.io port: 6334 use_tls: true api_key: ${QDRANT_API_KEY}

设置环境变量:

export QDRANT_API_KEY="your-api-key"

配置项说明:endpoint 默认 localhost,为 Qdrant 服务器主机名;port 默认 6334,为 gRPC 端口;use_tls 默认 false,用于启用 TLS 加密;api_key 默认无,为认证密钥。

验证配置

检查 Qdrant 是否运行:

REST API health check

curl http://localhost:6333/health

Expected: {"status":"ok"}

索引后检查集合:

List collections

curl http://localhost:6333/collections

Get collection info

curl http://localhost:6333/collections/grepai

从 GrepAI 检查:

grepai status

Should show Qdrant backend info

Qdrant 仪表板:访问 http://localhost:6333/dashboard,可查看集合、浏览向量、执行查询、监控性能。

性能特征

搜索延迟(参考):小规模(1K 文件)5,000 向量,搜索时间 <10ms;中等(10K 文件)50,000 向量,<20ms;大规模(100K 文件)500,000 向量,<50ms。

内存使用:Qdrant 会将向量加载到内存以实现快速搜索。10,000 向量、768 维度约 60 MB;100,000 向量、768 维度约 600 MB;1,000,000 向量、768 维度约 6 GB。

高级配置

Qdrant 服务器配置:创建 config/production.yaml:

storage: storage_path: /qdrant/storage

service: grpc_port: 6334 http_port: 6333 max_request_size_mb: 32

optimizers: memmap_threshold_kb: 200000 indexing_threshold_kb: 50000

在 Docker 中挂载:

docker run -d
-v ./config:/qdrant/config
-v qdrant_storage:/qdrant/storage
qdrant/qdrant

集合设置:GrepAI 会创建一个名为 grepai 的集合,向量大小与你的嵌入维度匹配,距离度量为余弦相似度,并为大数据集使用磁盘存储。

集群(高级):对于超大规模部署,Qdrant 支持分布式模式:

qdrant config

cluster: enabled: true p2p: port: 6335

备份与恢复

创建快照:

Create snapshot via REST API

curl -X POST 'http://localhost:6333/collections/grepai/snapshots'

恢复快照:

Restore from snapshot

curl -X PUT 'http://localhost:6333/collections/grepai/snapshots/recover'
-H 'Content-Type: application/json'
-d '{"location": "/path/to/snapshot"}'

迁移

从 GOB 迁移:启动 Qdrant(docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant);更新配置为 store.backend: qdrant、endpoint: localhost、port: 6334;删除旧索引 rm .grepai/index.gob;重新索引 grepai watch。

从 PostgreSQL 迁移:启动 Qdrant;更新配置为使用 Qdrant;重新索引(嵌入必须重新生成)。

常见问题

连接被拒绝:确认 Qdrant 正在运行,执行 docker ps | grep qdrant 或 docker start grepai-qdrant。

gRPC 连接失败:检查 6334 端口是否暴露,如 docker run -p 6334:6334 ...。

认证失败:检查 API key,如 echo $QDRANT_API_KEY。

内存不足:在 Qdrant 配置中启用磁盘存储;提高 Docker 内存限制;使用 Qdrant Cloud 进行托管扩容。

初始索引缓慢:属正常现象,Qdrant 在后台优化,索引完成后搜索会很快。

Qdrant 与 PostgreSQL 对比

搜索速度:Qdrant 更强(⚡⚡⚡),PostgreSQL 为 ⚡⚡。设置复杂度:Qdrant 简单(Docker),PostgreSQL 中等。SQL 查询:Qdrant 不支持,PostgreSQL 支持。可扩展性:Qdrant 优秀,PostgreSQL 良好。内存效率:Qdrant 优秀,PostgreSQL 良好。团队熟悉度:Qdrant 较低,PostgreSQL 较高。

建议:大型代码库或追求最高性能时使用 Qdrant;如果需要 SQL 集成或团队更熟悉 PostgreSQL,则使用 PostgreSQL。

最佳实践

使用持久化卷:挂载 /qdrant/storage。生产环境启用 TLS:设置 use_tls: true。保护 API key:使用环境变量。监控内存:向量搜索对内存消耗较大。定期快照:重大变更前备份。

输出格式

Qdrant 存储状态示例:

✅ Qdrant Storage Configured

Backend: Qdrant Endpoint: localhost:6334 TLS: disabled Collection: grepai

Contents:

  • Files: 5,000
  • Vectors: 25,000
  • Dimensions: 768

Performance:

  • Connection: OK
  • Indexed: Yes
  • Search latency: ~15ms