基于Milvus向量数据库的增删改查

一、Milvus向量数据库简介

      Milvus是一个开源的、可扩展的、高性能的向量数据库,采用分布式架构,支持海量向量数据的存储、检索和管理。它主要应用于计算机视觉、自然语言处理、推荐系统等人工智能领域,可以实现相似度检索、聚类分析、降维等功能。Milvus具有以下特点:

1.高性能:

      采用分布式架构和高效的索引算法,实现高速的向量检索和计算。

2.可扩展:

      支持动态扩容和负载均衡,满足不断增长的数据存储和处理需求。

3.易用性:

      提供Python、Java、C++等多种语言的SDK,方便用户快速接入和开发应用。

4.开源:

      基于Apache 2.0协议,允许用户自由使用、修改和分发。

二、Milvus向量数据库的增删改查

     以下将详细介绍基于Milvus的向量数据库的增加、删除、修改和查询等操作。

1.增加操作

(1)创建集合(Collection)

       在向量数据库中,首先需要创建一个集合(Collection)来存储向量数据。创建集合时,需要指定集合名称、向量维度、向量类型等参数。以下是一个创建集合的示例:

from milvus import Milvus, DataType     # 创建Milvus客户端实例  client = Milvus(host='localhost', port='19530')     # 定义集合名称、向量维度和数据类型  collection_name = 'example_collection'  vector_dim = 128  data_type = DataType.FLOAT_VECTOR     # 创建集合  status, _ = client.create_collection(collection_name, vector_dim, data_type)

(2)添加向量数据

      创建集合后,可以向其中添加向量数据。添加向量数据时,需要指定集合名称和向量数据列表。以下是一个添加向量数据的示例:

import numpy as np     # 生成向量数据  vectors = np.random.random((1000, vector_dim)).tolist()     # 添加向量数据到集合  status, ids = client.insert(collection_name, vectors)    

2.删除操作

(1)删除向量数据

      可以根据向量ID删除指定的向量数据。以下是一个删除向量数据的示例:

# 删除指定ID的向量数据  status = client.delete_entity_by_id(collection_name, [ids[0]])

(2)删除集合

      可以根据集合名称删除整个集合及其包含的所有向量数据。以下是一个删除集合的示例:​​​​​​​

# 删除集合  status = client.drop_collection(collection_name)

3.修改操作

      Milvus目前不支持直接修改向量数据。如果需要修改某个向量数据,可以先删除原向量数据,然后添加新的向量数据。以下是一个修改向量数据的示例:

# 删除旧的向量数据  status = client.delete_entity_by_id(collection_name, [ids[0]])     # 生成新的向量数据  new_vector = np.random.random((1, vector_dim)).tolist()     # 添加新的向量数据到集合  status, new_id = client.insert(collection_name, new_vector)     # 更新向量ID列表  ids[0] = new_id[0]

4.查询操作

(1)查询集合信息

      可以查询指定集合的元数据信息,如集合名称、向量维度、向量类型等。以下是一个查询集合信息的示例:# 查询集合信息

status, collection_info = client.describe_collection(collection_name)

(2)查询向量数量

       可以查询指定集合中的向量数量。以下是一个查询向量数量的示例:​​​​​​​

# 查询向量数量  status, vector_count = client.count_entities(collection_name)

(3)查询向量数据

       可以根据向量ID查询指定的向量数据。以下是一个查询向量数据的示例:​​​​​​​

# 查询指定ID的向量数据  status, vectors = client.get_entity_by_id(collection_name, [ids[0]])

(4)相似度检索

      可以根据给定的查询向量,检索与其最相似的向量数据。以下是一个相似度检索的示例:

# 生成查询向量  query_vector = np.random.random((1, vector_dim)).tolist()     # 设置检索参数  top_k = 10  params = {'nprobe': 10}     # 执行相似度检索  status, results = client.search(collection_name, query_vector, top_k, params)

三、总结

        本文详细介绍了基于Milvus的向量数据库的增删改查应用。随着人工智能技术的发展,向量数据库在计算机视觉、自然语言处理、推荐系统等领域的应用将愈发广泛。希望本文能帮助你了解和掌握Milvus向量数据库的基本操作,并在实际项目中发挥其价值和潜力。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
功能设计 ​ 系统功能模块较为简单,主要功能就是**新增人脸**和**人脸搜索**两个功能,其中新增人脸使用页面上传和压缩包批量上传两个方式,压缩包上传时文件名称为用户名,下面主要说明人脸搜索的功能流程 ##### Milvues ​ 在介绍前需要说明一下Mulvus ​ Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据(图片 / 视频 / 语音 / 文本)检索。单节点 Milvus 可以在秒内完成十亿级的向量搜索 ​ 因此虹软的SDK只能提取向量及对比的功能,在大规模人脸识别中,需要搜索引擎对于人脸数据进行初步筛选到一个较小的范围后在利用虹软的SDK进行测试,值得一提的是,博主多次测试后Milvues返回的匹配率足以满足人脸匹配的要求,Milvus的安装部署和使用文档参考 https://milvus.io/cn/docs/v2.0.x ​ **特别说明的是**虹软提取的数组是一个经过归一后的1032长度的byte数组,我们需要对数组进行转换,去除前8位的版本号,并将1024长度的byte转为256长度的float向量,这部分可以利用Arrays提供的方法进行转换,代码中也有相应的工具类 ##### 人脸上传(单张) ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
Azure Open AI Embedding是一种嵌入模型,通过使用Azure平台上的开放AI服务,可以将文本转换为高维向量表示。这种嵌入模型可以用于自然语言处理、推荐系统等领域,帮助我们更好地理解和处理文本数据。在使用Azure Open AI Embedding时,我们可以利用Azure的强大计算资源和高效的API接口,快速获取到所需的文本嵌入表示。 Milvus本地向量数据库是一种针对大规模向量数据的高性能数据库。它提供了快速的向量相似度搜索和存储功能,可以高效地应用于图像识别、人脸识别、文本检索等领域。在搭建Milvus本地向量数据库的单例安装和使用时,我们可以通过简单的配置和管理,快速部署本地向量检索系统,并且能够自由定制化自己的向量索引。 对于私有模型的应用,可以将Azure Open AI Embedding模型和Milvus本地向量数据库结合起来。首先,可以使用Azure Open AI Embedding模型将文本数据转换为向量表示,然后将这些向量存储到Milvus本地向量数据库中进行索引和检索。这样可以实现自己的定制化文本嵌入表示和快速的向量相似度搜索。同时,我们也可以通过对Milvus本地向量数据库进行单例安装和私有化部署,更好地保护自己的数据和模型隐私。这样的集成和应用可以帮助我们更好地理解和处理大规模文本数据,并且能够高效地进行相似度搜索和检索。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值