- 文档首页
向量数据库 Milvus 版
最佳实践
向量数据库 Milvus 版 Python 客户端和 DiskANN 的大规模向量检索系统实践
最佳实践
向量数据库 Milvus 版 Python 客户端和 DiskANN 的大规模向量检索系统实践
向量数据库 Milvus 版 Python 客户端和 DiskANN 的大规模向量检索系统实践
随着生成式 AI、推荐系统和语义搜索等应用的快速发展,向量数据规模正在持续增长。传统基于关键字或结构化索引的检索方式难以满足高维向量数据的相似度搜索需求。向量数据库 Milvus 版作为一款高性能向量数据库,提供了面向海量向量数据的存储与近似最近邻(ANN)搜索能力,而 DiskANN 则通过基于磁盘的索引结构,在保持高查询效率的同时显著降低内存消耗,实现在十亿级规模数据上执行向量检索。
本文将介绍如何结合向量数据库 Milvus 版 Python 客户端与 DiskANN 索引构建一个面向大规模向量数据的检索系统。
- 已创建向量数据库 Milvus 版实例,获取实例的私网地址并开启私网地址公网解析。具体操作,请参见创建实例和查看实例信息。
- 已安装或升级 PyMilvus SDK。当前向量数据库 Milvus 版实例基于 2.5 版本内核,建议 SDK 同样使用 2.5 版本以确保兼容性。示例命令如下。
数据库管理常用代码如下所示。
Collection 管理常用代码如下所示。
说明
Schema 包含一个主键和至少一个向量字段。支持的 Schema 类型请参见模式解释。 如果需要执行 Upsert 操作,主键必须设置为 auto_id=False。如果设置 auto_id=True,则无法使用 Upsert 功能。
建议在创建 Collection 时同时创建索引。向量字段必须定义索引;对于经常用于过滤的标量字段,也强烈建议创建索引。示例代码如下。
使用 Schema 创建 Collection,并使用 list_collections 获取并查看当前的 Collection 列表。
实体类似于关系型数据库中的一行数据,或 Elasticsearch 中的一个文档。实体管理常用代码如下所示。
在定义 Collection 时,可以指定要创建的索引以加速搜索性能,并且每个向量字段都必须配置索引。索引管理常用代码如下所示。
不同的字段类型支持不同的索引类型。向量字段可以使用 AUTOINDEX 或其他索引类型。索引类型详情请参见索引解释。 如果 Collection 之前已经被释放,搜索前需要先将其加载。详细信息请参见加载和释放。加载代码如下所示。 查看加载状态代码如下所示。
确认 Collection 已成功加载后,可对其执行搜索操作。代码如下所示。示例搜索代码如下。
创建 DiskANN 索引示例代码如下。
说明
不建议修改 pq_code_budget_gb_ratio 和 search_cache_budget_gb_ratio 等参数;默认值对大多数工作负载已经进行了良好优化。参数 search_list_size 和 max_degree 通常与召回率正相关,但与 QPS 性能负相关,因此应根据实际性能需求谨慎调整。
最近更新时间:2026.04.09 14:06:20