Milvus向量数据库检索

news/2024/7/19 15:42:25 标签: milvus, 数据库

  官方文档:https://milvus.io/docs/search.md
  本节介绍如何使用 Milvus 搜索实体。
  Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离,并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达式来执行混合搜索。
  下面的例子展示了如何对2000行的图书ID(主键)、字数(标量场)、图书介绍(向量场)的数据集进行向量相似度搜索,模拟根据搜索条件搜索某本书的情况关于他们的矢量化介绍。 Milvus 会根据您定义的查询向量和搜索参数返回最相似的结果。

1. 加载集合

  在Milvus中,所有的搜索和查询操作都在内存中执行。在进行向量相似度搜索之前,需要将集合加载到内存中。

from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.load()

2. 准备搜索参数

  准备适合您的搜索场景的参数。
  以下示例定义搜索将使用欧氏距离计算距离,并从 IVF_FLAT 索引构建的十个最接近的簇中检索向量。

search_params = {
    "metric_type": "L2", 
    "offset": 0, 
    "ignore_growing": False, 
    "params": {"nprobe": 10}
}

  参数介绍:
在这里插入图片描述

3. 进行向量搜索

  使用 Milvus 搜索向量。要在特定分区中搜索,请指定分区名称列表。
  Milvus 支持专门为搜索设置一致性级别。本主题中的示例将一致性级别设置为“Strong”。
  您还可以将一致性级别设置为“Bounded有界”、“Session会话”或“Eventually最终”。有关 Milvus 中四个一致性级别的更多信息,请参阅一致性(https://milvus.io/docs/consistency.md)。
  使用支持 GPU 的 Milvus 进行向量搜索时,返回的实体数量应满足以下要求:

  • GPU_IVF_FLAT:返回的实体数量应小于 256。
  • GPU_IVF_PQ:返回的实体数量应小于 1024。

  具体如下:参考内存索引(https://milvus.io/docs/index.md)。
  示例:

results = collection.search(
    data=[[0.1, 0.2]], 			# 用于搜索的向量。
    anns_field="book_intro",    # 要搜索的字段的名称。
    # the sum of `offset` in `param` and `limit` 
    # should be less than 16384.
    param=search_params,        # 特定于索引的搜索参数
    limit=10,                   # 要返回的结果数。该值与 param 中的偏移量之和应小于 16384。
    expr=None,				    # 用于过滤属性的布尔表达式。有关详细信息,请参阅布尔表达式规则(https://milvus.io/docs/boolean.md)。
    # set the names of the fields you want to 
    # retrieve from the search result.
    output_fields=['title'],   # 要返回的字段的名称
    consistency_level="Strong" # 搜索的一致性级别
)

# 查看最相似向量的主键值及其距离、输出的字段。
results[0].ids
results[0].distances
hit = results[0][0]
hit.entity.get('title')

# 当搜索完成时,释放 Milvus 中加载的集合以减少内存消耗。
collection.release()

http://www.niftyadmin.cn/n/5428485.html

相关文章

pytorch升级打怪(三)

数据集合数据加载器 简介加载数据集迭代和可视化数据集为您的文件创建自定义数据集__init____len____getitem__ 准备您的数据以使用DataLoaders进行训练通过DataLoader进行遍载 简介 处理数据样本的代码可能会变得混乱且难以维护;理想情况下,我们希望我…

kakfa模拟仿真篇之spark-submit在linux运行 (更贴近真实场景)

源码在上篇 地址在这 :Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql-CSDN博客 这里分享一下一些新朋友不知道spark-submit 指令后 的参数怎么写 看这篇绝对包会 声明: 此项目是基于 maven 打包的说明…

Vue.js+SpringBoot开发APK检测管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软件档案模块2.4 软件检测模块2.5 软件举报模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 开放平台表3.2.2 软件档案表3.2.3 软件检测表3.2.4 软件举报表 四、系统展示五、核心代…

SpringBoot3框架,入门学习

依赖管理机制 导入场景启动器后,会根据maven依赖传递的原理,将这个场景下所有的核心依赖都导入进来每个boot项目都有一个父项目spring-boot-starter-parent,parent的父项目是spring-boot-dependencies,spring-boot-dependencies其…

介绍第一位 AI 软件工程师 Devin

认识 Devin,世界上第一位完全自主的 AI 软件工程师。 ‍ Devin 是一位孜孜不倦、技术娴熟的队友,同样愿意与您一起构建或独立完成任务供您查看。 有了 Devin,工程师可以专注于更有趣的问题,工程团队可以为更雄心勃勃的目标而奋斗。…

gradio找不到麦克风

一、背景: #使用gradio开发的web服务部署在服务器上。#程序的launch代码为:app.launch(shareTrue, server_name"0.0.0.0")#我通过服务器ip和端口,在个人电脑上进行访问。#web页面的音频输入组件显示“找不到麦克风”&a…

说明window系统中如何安装和配置python环境

打开官网:www.python.org 可以选择下最新版本或者其他版本,学习建议最新版本,如果是上班建议退后一到两个版本,以免有bug出现 点击下载后的安装包: 安装成功后测试: 重新打开cmd,输入如下命令…

Rust 的 Arc<Mutex<T>> 的用法示例源代码

在 Rust 中&#xff0c;Arc<Mutex<T>> 是一种组合类型&#xff0c;它结合了 Arc&#xff08;原子引用计数&#xff09;和 Mutex&#xff08;互斥锁&#xff09;。Arc 用于在多个所有者之间共享数据&#xff0c;而 Mutex 用于确保在任意时刻只有一个线程可以访问被保…