超高性能向量引擎Qdrant:百万级向量毫秒检索实战

超高性能向量引擎Qdrant:百万级向量毫秒检索实战

【免费下载链接】qdrant Qdrant - 针对下一代人工智能的高性能、大规模向量数据库。同时提供云端版本 【免费下载链接】qdrant 项目地址: https://gitcode.com/GitHub_Trending/qd/qdrant

你是否还在为大规模向量数据的存储与检索效率低下而烦恼?是否在寻找一款既能处理高并发请求,又能保证检索精度的向量数据库?本文将带你深入了解Qdrant向量引擎,通过实战案例展示如何轻松实现百万级向量的毫秒级检索,让你快速掌握这一高性能工具的使用方法。

读完本文,你将能够:

  • 了解Qdrant的核心优势和应用场景
  • 掌握Qdrant的安装与基本配置方法
  • 学会创建向量集合、添加向量数据及执行带过滤条件的搜索操作
  • 熟悉Qdrant的客户端使用和API文档查阅方式

Qdrant简介

Qdrant(读作“quadrant”)是一款为下一代人工智能应用打造的高性能、大规模向量搜索引擎和向量数据库。它提供了生产级别的服务,通过便捷的API实现向量的存储、搜索和管理,并具备强大的过滤支持,适用于各种基于神经网络或语义的匹配、分面搜索等应用场景。

Qdrant采用Rust语言开发,确保了在高负载情况下的快速性和可靠性。无论是将嵌入模型或神经网络编码器转化为匹配、搜索、推荐等应用,Qdrant都能提供有力支持。同时,Qdrant还提供了完全托管的云端版本——Qdrant Cloud,包括免费套餐可供使用。

Qdrant架构

Qdrant的核心功能包括:

  • 强大的过滤和负载能力,支持多种数据类型和复杂查询条件
  • 混合搜索功能,结合稀疏向量与常规密集向量的优势
  • 向量量化和磁盘存储选项,降低资源消耗
  • 分布式部署支持,实现水平扩展

官方文档:docs/QUICK_START.md 项目源码:README.md

快速开始

安装与启动

Qdrant提供了多种安装和启动方式,满足不同场景的需求。

Python客户端

通过Python客户端可以快速开始使用Qdrant,首先安装客户端库:

pip install qdrant-client

Python客户端提供了便捷的本地启动方式:

from qdrant_client import QdrantClient
qdrant = QdrantClient(":memory:") # 创建内存中的Qdrant实例,适用于测试、CI/CD
# 或者
client = QdrantClient(path="path/to/db")  # 持久化更改到磁盘,适用于快速原型开发
客户端-服务器模式

要体验Qdrant的全部功能,可以通过Docker容器运行服务端:

docker run -p 6333:6333 qdrant/qdrant

然后使用任何客户端连接,包括Python:

qdrant = QdrantClient("http://localhost:6333") # 连接到已存在的Qdrant实例

对于生产环境部署,建议参考安装和安全指南,确保启用适当的认证和配置。

创建集合

集合(Collection)是Qdrant中存储向量数据的逻辑单元。创建集合时需要指定向量的维度和距离度量方式。

使用以下命令创建一个使用点积(Dot)距离度量的集合:

curl -X PUT 'http://localhost:6333/collections/test_collection' \
    -H 'Content-Type: application/json' \
    --data-raw '{
        "vectors": {
          "size": 4,
          "distance": "Dot"
        }
    }'

成功创建集合后,会返回以下响应:

{
  "result": true,
  "status": "ok",
  "time": 0.031095451
}

可以通过以下命令确认集合是否创建成功:

curl 'http://localhost:6333/collections/test_collection'

添加向量点

创建集合后,可以向其中添加向量点(Points),每个向量点可以包含向量数据和可选的负载信息。

使用以下命令添加多个向量点:

curl -L -X PUT 'http://localhost:6333/collections/test_collection/points?wait=true' \
    -H 'Content-Type: application/json' \
    --data-raw '{
        "points": [
          {"id": 1, "vector": [0.05, 0.61, 0.76, 0.74], "payload": {"city": "Berlin"}},
          {"id": 2, "vector": [0.19, 0.81, 0.75, 0.11], "payload": {"city": ["Berlin", "London"] }},
          {"id": 3, "vector": [0.36, 0.55, 0.47, 0.94], "payload": {"city": ["Berlin", "Moscow"] }},
          {"id": 4, "vector": [0.18, 0.01, 0.85, 0.80], "payload": {"city": ["London", "Moscow"] }},
          {"id": 5, "vector": [0.24, 0.18, 0.22, 0.44], "payload": {"count": [0] }},
          {"id": 6, "vector": [0.35, 0.08, 0.11, 0.44]}
        ]
    }'

成功添加后,会返回操作结果:

{
  "result": {
    "operation_id": 0,
    "status": "completed"
  },
  "status": "ok",
  "time": 0.000206061
}

带过滤的搜索

Qdrant的强大之处在于能够结合向量相似度和过滤条件进行搜索。

首先执行一个基本的搜索请求:

curl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \
    -H 'Content-Type: application/json' \
    --data-raw '{
        "vector": [0.2,0.1,0.9,0.7],
        "top": 3
    }'

返回结果包含与查询向量最相似的前3个向量点:

{
  "result": [
    { "id": 4, "score": 1.362, "payload": null, "version": 0 },
    { "id": 1, "score": 1.273, "payload": null, "version": 0 },
    { "id": 3, "score": 1.208, "payload": null, "version": 0 }
  ],
  "status": "ok",
  "time": 0.000055785
}

如果添加过滤条件,结果会有所不同。例如,搜索"city"为"London"的向量点:

curl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "filter": {
          "should": [
              {
                  "key": "city",
                  "match": {
                      "value": "London"
                  }
              }
          ]
      },
      "vector": [0.2, 0.1, 0.9, 0.7],
      "top": 3
  }'

带过滤条件的搜索结果:

{
  "result": [
    { "id": 4, "score": 1.362 },
    { "id": 2, "score": 0.871 }
  ],
  "status": "ok",
  "time": 0.000093972
}

高级功能与性能优化

向量量化与存储优化

Qdrant提供多种选项来降低向量搜索的资源消耗。内置的向量量化技术可将RAM使用量减少高达97%,并动态管理搜索速度和精度之间的权衡。

配置文件:config/config.yaml

分布式部署

Qdrant通过分片(sharding)和复制(replication)机制提供全面的水平扩展支持,实现零停机滚动更新和无缝动态扩展。

性能基准

性能测试脚本:tests/basic_api_test.sh

API文档与客户端

Qdrant提供REST和gRPC两种API接口,满足不同场景的需求。

REST API

在线OpenAPI 3.0文档可通过docs/redoc/index.html访问,支持生成各种编程语言的客户端。

gRPC接口

对于生产环境中的高速搜索,Qdrant提供gRPC接口,可参考gRPC文档了解更多信息。

gRPC文档:docs/grpc/docs.md

客户端库

Qdrant提供多种官方客户端库,方便集成到不同的应用栈中:

社区还提供了Elixir、PHP、Ruby等其他语言的客户端实现。

总结与展望

Qdrant作为一款高性能向量数据库,为下一代人工智能应用提供了强大的支持。通过本文的介绍,你已经了解了Qdrant的基本使用方法和核心功能。

随着人工智能和机器学习的不断发展,向量数据库在语义搜索、推荐系统、图像识别等领域的应用将越来越广泛。Qdrant凭借其出色的性能和丰富的功能,正成为这一领域的重要工具。

鼓励你进一步探索Qdrant的高级功能,如混合搜索、分布式部署和性能优化,将其应用到实际项目中,体验向量数据库带来的强大能力。

如果你觉得本文对你有帮助,请点赞、收藏并关注,以便获取更多关于Qdrant和向量数据库的实用教程。下期我们将深入探讨Qdrant的分布式部署和高级搜索功能,敬请期待!

贡献指南:docs/CONTRIBUTING.md 开发文档:docs/DEVELOPMENT.md

【免费下载链接】qdrant Qdrant - 针对下一代人工智能的高性能、大规模向量数据库。同时提供云端版本 【免费下载链接】qdrant 项目地址: https://gitcode.com/GitHub_Trending/qd/qdrant

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值