当前位置: 首页 > news >正文

Milvus向量数据库DML操作实战教程

导读:在向量数据库技术快速发展的今天,Milvus作为开源向量数据库的代表,正成为AI应用开发中不可或缺的基础设施。然而,许多开发者在初次接触Milvus时,往往对其数据操作语言(DML)的使用存在困惑,特别是在集合创建、数据管理和索引配置等核心环节。
本文将通过详实的代码示例和实战演练,系统性地解析Milvus向量数据库的四大核心DML操作。从集合的Schema设计到数据的增删改查,每个操作都配备了完整的代码实现和关键参数解释。特别值得关注的是,文中深入探讨了auto_id自动主键生成机制、动态字段扩展功能,以及IVF_FLAT索引类型的性能优化策略。
文章还揭示了一个重要的技术细节:由于Milvus架构特性,数据更新操作需要通过"删除-插入"的组合方式实现,这种设计背后的原理是什么?如何在高并发场景下保证数据一致性?
通过学习本教程,开发者将能够熟练掌握Milvus的基础操作技能,为构建高性能的向量检索系统打下坚实基础。无论您是初次接触向量数据库,还是希望深化Milvus实践经验,本文都将为您提供清晰的技术指导和最佳实践建议。

前言

本教程将深入介绍Milvus向量数据库的核心DML(数据操作语言)操作,包括集合创建、数据插入、删除和更新等关键功能的实际应用。通过实战代码示例,帮助开发者掌握Milvus向量数据库的基本操作技能。

核心DML操作详解

1. 创建集合(Collection)

集合是Milvus中数据存储的基本单位,在创建时需要明确定义字段结构和索引配置。创建集合时需要注意以下关键配置:

  • 当设置auto_id=True时,系统将自动生成主键,无需手动指定
  • 启用动态字段功能(enable_dynamic_field=True)允许在运行时灵活扩展非预定义字段
集合创建代码实现
# 导入MilvusClient和DataType模块,用于连接Milvus服务器并操作数据类型
from pymilvus import MilvusClient, DataType# 实例化MilvusClient以连接到指定的Milvus服务器
client = MilvusClient(uri="http://47.119.128.20:19530"
)# 定义Schema结构
schema = client.create_schema(auto_id=False, enable_dynamic_field=True)
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=128)
schema.verify()  # 验证Schema配置# 定义索引参数配置
index_params = client.prepare_index_params()
index_params.add_index(field_name="vector",index_type="IVF_FLAT",  # 量化索引类型,平衡检索速度与精度metric_type="L2",  # 相似性度量标准(欧几里得距离)params={"nlist": 1024}  # 聚类中心数量
)# 创建集合
client.create_collection(collection_name="my_collection",schema=schema,index_params=index_params
)

2. 数据插入操作(Insert)

Milvus支持单条记录插入和批量数据插入两种模式。需要注意的是,在使用可视化管理工具进行查询等操作时,集合必须处于加载状态才能正常执行。

数据插入代码示例
# 准备待插入的数据
data = [{"id": 1, "vector": [0.1]*128, "text": "Sample text 1"},{"id": 2, "vector": [0.2]*128, "text": "Sample text 2"}
]# 执行数据插入操作
insert_result = client.insert(collection_name="my_collection",data=data 
)print("插入记录的ID列表:", insert_result["ids"])  # 输出返回的主键ID列表

3. 数据删除操作(Delete)

Milvus提供了两种数据删除方式:基于主键的精确删除和基于条件表达式的批量删除。

按主键删除数据
client.delete(collection_name="my_collection",ids=[1, 2]  # 指定要删除记录的主键列表
)
按条件删除数据
# 删除text字段为空字符串的所有记录
client.delete(collection_name="my_collection",filter="text == ''"
)

4. 数据更新操作(Update)

由于Milvus本身不支持直接的数据更新操作,因此需要通过"删除旧数据 + 插入新数据"的组合方式来实现数据更新功能。

数据更新实现方案
# 第一步:删除需要更新的旧数据
client.delete(collection_name="my_collection", ids=[3]  # 指定要更新记录的主键
)# 第二步:插入更新后的新数据
client.insert(collection_name="my_collection",data=[{"id": 3, "vector": [0.3]*128, "text": "Updated text"}]
)

操作注意事项

在进行Milvus DML操作时,需要特别注意以下几个重要事项:

集合状态管理:使用可视化管理工具进行数据查询、检索等操作时,目标集合必须处于加载状态。如果集合未加载,相关操作将无法正常执行。

数据一致性:在执行删除和插入操作时,需要确保数据的一致性,特别是在高并发环境下进行数据更新操作时。

索引优化:合理选择索引类型和参数配置对查询性能具有重要影响。IVF_FLAT索引类型适合大多数应用场景,能够在检索速度和精度之间取得良好平衡。

向量维度:在定义向量字段时,必须明确指定向量的维度大小,所有插入的向量数据都必须符合预定义的维度要求。

通过掌握这些核心DML操作,开发者可以有效地管理Milvus向量数据库中的数据,为后续的向量检索和相似性搜索功能奠定坚实基础。

http://www.xdnf.cn/news/673903.html

相关文章:

  • android平台驱动开发(四)--系统属性节点控制GPIO
  • 字节跳动BAGEL-7B-MoT模型开源:多模态AI技术的新范式与行业涟漪
  • Python爬虫实战:研究Playwright框架相关技术
  • SD07_NVM的安装及相关操作
  • 解码STREAM:GEO技术方法论全解析
  • 多空短线决策副图指标,通达信炒股软件指标操盘图文教程
  • 安卓学习笔记-声明式UI
  • 2025年5月蓝桥杯stema省赛真题——象棋移动
  • ViewModel
  • MySQL问题:主要索引类型(聚簇、辅助、覆盖、前缀)
  • WPF中的图标闪烁功能
  • ubuntu 制作 ssl 证书
  • WEB安全威胁与SSL
  • 互联网大厂Java面试:从Spring到微服务的挑战
  • Linux下使用socat将TCP服务转为虚拟串口设备
  • Docker 在 CI/CD 中的应用:自动化构建、测试与部署流程设计
  • 超声体模的保修制度和维护保养
  • uniapp vue3 鸿蒙支持的 HTML5+接口
  • 服务器数据迁移
  • Windows逆向工程提升之IMAGE_TLS_DIRECTORY
  • 嵌入式学习 D29:系统编程--线程
  • AbMole| MGCD0103(M1790,Mocetinostat)
  • 深入解析Google多线程环境下的空间配置器——TCMalloc
  • 哈希算法及其在文件唯一性判定中的应用
  • [Vue]浅浅了解vue3响应式的基本原理
  • 【c++】exe找不到dll里的符号:error LNK2019: unresolved external symbol
  • (LeetCode 每日一题)2894. 分类求和并作差(数组、数学)
  • 优秘AI短视频数字人6月功能更新预告:新增多个AIGC热门功能,智能体和知识库再升级
  • 11.13 LangGraph记忆机制解析:构建生产级AI Agent的关键技术
  • MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?