使用向量数据库 Zilliz Cloud 时常用到的术语和概念

AUTOINDEX

为满足用户不同需求,Zilliz Cloud 提供 2 种类型的集群 CU:性能型和容量型。但是,为不同类型 CU 集群中的 Collection 创建索引时,通常需要根据所选择的 CU 类型调整索引参数。为了方便创建索引,免去调节参数的麻烦,Zilliz Cloud 使用 AUTOINDEX 的索引类型。

AUTOINDEX 是Zilliz Cloud 独有的索引类型,可以帮助获取最佳搜索性能。当在 Zilliz Cloud 上为 Collection 中的向量字段创建索引时,会自动应用 AUTOINDEX 索引。

特性与收益​

相对于开源的 Milvus 提供的能力而言,AUTOINDEX 有着显著的性能优势。根据一项基准测试结果,在特定的数据集上,AUTOINDEX 的 QPS 是其它索引类型的 3 倍。

AUTOINDEX 可以在如下场景中提供较高性能:

  • 使用单指令流多数据流(SIMD)的方式加速查询和存储,从而进一步提升服务器性能。
  • 优化数据图和裁切策略,显著降低检索时需要访问的数据点。
  • 实现动态量化策略,减少距离计算开销。

同样成本,更高收益​

根据用户对存储容量和检索性能的不同需求,AUTOINDEX 支持纯内存检索、磁盘混合检索及内存映射检索等多种检索模式。在纯内存检索模式下,AUTOINDEX 使用动态量化技术显著降低内存使用。在磁盘混合检索模式下,AUTOINDEX 动态缓存数据,并使用算法减少 I/O 操作,从而保持高性能。

自动调优​

近似最近邻(ANN)算法要求在召回率和性能之间做出取舍。查询参数的设置对检索结果影响巨大。如果检索参数确定召回范围过小,可能会导致极低的召回率,达不到业务要求。反之而言,如果检索参数确定的召回范围过大,查询性能则会极速降低。

选择合适的查询参数需要掌握相关领域的知识,对用户来说,学习曲线过高。为了降低用户的学习曲线,AUTOINDEX 实现了一套智能算法,通过在建立索引时分析用户数据的分布情况,使用机器学习模型自动选择检索参数,实现召回率和检索性能间的平衡。这样一来,用户就无需手动设置检索参数了。

创建索引和向量搜索​

创建索引是指将 Collection 中的 Entity 按照特定顺序进行排序,以提高搜索效率。

在 Zilliz Cloud 上为向量字段创建索引十分简单。只需将索引类型设置为 AUTOINDEX,然后选择相似度类型即可。Zilliz Cloud 将自动选择最合适配置。因此,只需要考虑相似度类型,选择如何测量向量间距离。

集群、Collection 及 Entity

Zilliz Cloud 集群由全托管 Milvus 实例及相关计算资源构成。可以在 Zilliz Cloud 集群中创建 Collection,然后在 Collection 中插入 Entity。Zilliz Cloud 集群中的 Collection 类似于关系型数据库中的表。Collection 中的 Entity 类似于表中的记录。

集群​

在 Zilliz Cloud 上创建集群时,需要选择集群 CU 类型。CU 类型有 2 种选项:性能型和容量型。

确定 CU 类型后,还需要选择 CU 大小。CU 大小决定了集群可容纳的 Collection 数量。在 Dedicated 集群中,每个计算单元(CU)可最多容纳 64 个 Collection,并且每个集群中的 Collection 总数不能超过 4096。

集群中的所有 Collection 共享 CU 资源。为节省 CU 资源,推荐将不再使用的 Collection 从 CU 中释放出来。Collection 被释放后,其中的数据被转移到磁盘存储,从而可以释放 CU 资源以供其他已加载的 Collection 使用。需要查询已被卸载的 Collection 时,可以将其重新加载至内存中。请注意,Collection 加载需要等待一段时间,因此不推荐频繁卸载和加载 Collection。

Collection​

Collection 是一张二维数据表,包含固定列数和可变行数。Collection 数据表中的每 1 列对应 1 个字段,每 1 行表示 1 个 Entity。

字段​

通常会根据属性(如大小、重量、位置等)描述对象。对象属性类似于 Collection 中的字段。

Collection 中,主键是最特殊的字段,每个主键字段的值唯一且不重复。每 1 个主键都可以对应 Collection 中的 1 条 Entity 记录。

Schema​

每个字段都具有自己的属性,字段中数据类型和相关限制(如向量维度和相似性类型)。通过定义字段及顺序,Collection 会有 1 个 Schema,也就是 1 个数据结构框架。Collection Schema 类似于传统数据表的结构。

Zilliz Cloud 支持以下数据类型:

  • 布尔值(BOOLEAN)
  • 双精度浮点数(DOUBLE)
  • 单精度浮点数(FLOAT)
  • 浮点向量(FLOAT_VECTOR)
  • 8 位有符号整数(INT8)
  • 32 位有符号整(INT32)
  • 64 位有符号整(INT64)
  • 可变长度字符串(VARCHAR)
  • JSON

Zilliz Cloud 提供 3 种 CU 类型。不同 CU 类型适用于不同的场景,搜索性能也有所不同。

Zilliz Cloud 集群中仅 FLOAT_VECTOR 支持向量的数据类型。

索引​

与 Milvus 实例不同,Zilliz Cloud 集群仅支持 AUTOINDEX 索引。该索引类型针对 Zilliz Cloud 提供的 3 种 CU 进行了优化。

Partition​

Partition 是从 Collection 中划分而来。Zilliz Cloud 支持将物理存储划分成若干部分,每一部分被称为一个 Partition。每个 Partition 都可以包含多个 Segment。

通过将 Entity 分别存入不同的 Partition,Zilliz Cloud 实现了对 Entity 的隔离与分组。在按 Partition 进行检索时,由于无须关注 Collection 中其它 Partition 的数据,检索效率得到了较大的提升。

Entity​

Collection 中的 Entity 是指共享相同字段集的数据记录,如图书馆中的图书或基因组中的基因。存储在每个字段中的数据共同形成 1 个 Entity。

输入查询向量、选择相似性类型和过滤条件(可选)后,可以对 Collection 中的 Entity 进行向量搜索。例如,如果使用关键字 “Interesting Python demo” 进行搜索,Zilliz Cloud 会返回所有标题语义相似的的文章。在此过程中,搜索实际是在向量字段 title_vector 上执行的。

可以向 Collection 中添加任意数量的 Entity。但是,随着 Entity 数量和维度增加,Entity占用的内存大小也会增加,影响 Collection 的搜索性能。

Schema

定义 Schema 是指为数据库中数据创建一个清晰有序的数据结构。Schema 可以揭示和解列数据之间的关系。因此,定义 Schema 是为了了解数据集中的所有数据,展示数据间联系,从而用最有效的方式表示数据关系。

定义 Schema​

在 Zilliz Cloud 集群中,不同 Collection 的 Schema 可能不同。正确定义数据模型以表示数据集的结构十分重要。定义数据模型时,需要考虑以下几个方面:

  • Entity

    Collection 中的 Entity 类似于传统数据库表格中的行。Entity 的每个属性对应传统数据库表格中的列。向 Collection 插入数据前,请先观察 Entity 之间共享的属性。

    例如,可以将书可以作为 Collection 中的 Entity,书的属性可以包括标题、作者、ISBN 和语言。

  • 数据类型

    Entity 的每个属性都有自己的数据类型。设置合适的数据类型以定义属性。

    例如,标题的数据类型应为可变长度字符串(VarChar)

  • Entity 属性值限制

    不同的数据类型可能带有不同的限制。例如,向量字段对向量维数有限制、VarChar字段对字符的最大长度有限制。

需要花费一些时间来定义 Collection 的数据模型。当需要定义的数据属性特别多时,你需要花费的时间可能更多。因此,Zilliz Cloud 集群提供了动态和静态数据模型以满足不同需求。

动态数据列​

1 个 Collection 可拥有 1 个主键字段和 1 个向量字段。可以在待插入数据中包含动态数据列,无需手动定义数据集中的 Entity 属性。简单来说,在创建 Collection 时输入 Collection 名称和向量维数,Zilliz Cloud 会自动根据后续插入的数据推断哪些数据将以键值对的形式存入名为 $meta 的保留字段中。

以下示例代码片段创建了 1 个名为 medium_articles 的 Collection,且为该 Collection 开启了动态数据列。

# Connect using a MilvusClient object
from pymilvus import MilvusClient

CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT" # Set your cluster endpoint
TOKEN="YOUR_CLUSTER_TOKEN" # Set your token

# Initialize a MilvusClient instance
# Replace uri and API key with your own
client = MilvusClient(
    uri=CLUSTER_ENDPOINT, # Cluster endpoint obtained from the console
    token=TOKEN # API key or a colon-separated cluster username and password
)

# Create a collection
client.create_collection(
    collection_name="medium_articles",
    dimension=768
)

将 Entity 插入 Collection 时,Zilliz Cloud 将自动解析数据并将 Schema 中未定义的字段(也就是除了 id 和 vector 字段以外的其它字段)以键值对的形式存入一个名为 $meta 的保留字段。

client.insert(
    collection_name="medium_articles",
    data: {
        "id": 0,
        "title": "The Reported Mortality Rate of Coronavirus Is Not Important",
        "ve

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/609969.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【高阶数据结构】图 -- 详解

一、图的基本概念 图 是由顶点集合及顶点间的关系组成的一种数据结构&#xff1a;G (V&#xff0c; E)。其中&#xff1a; 顶点集合 V {x | x属于某个数据对象集} 是有穷非空集合&#xff1b; E {(x,y) | x,y属于V} 或者 E {<x, y> | x,y属于V && Path(x, y…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-基本使用

目录 SpringtBoot整合RabbitMQ1.依赖2.配置RabbitMQ的7种模式1.简单模式&#xff08;Hello World&#xff09;应用场景代码示例 2.工作队列模式&#xff08;Work queues&#xff09;应用场景代码示例手动 ack代码示例 3.订阅模式&#xff08;Publish/Subscribe&#xff09;应用…

超详细的胎教级Stable Diffusion使用教程(一)

这套课程分为五节课&#xff0c;会系统性的介绍sd的全部功能和实操案例&#xff0c;让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion&#xff0c;它究竟有多强大&#xff1f; 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…

本安防爆手机在电力行业中的应用

在电力行业这一充满挑战与风险的领域中&#xff0c;安全始终是最为首要的考量。电力巡检、维修等作业往往涉及易燃、易爆环境&#xff0c;这就要求工作人员配备能够在极端条件下保障通讯和作业安全的专业设备。防爆手机应运而生&#xff0c;以其独特的设计和卓越的性能&#xf…

05、Kafka 操作命令

05、Kafka 操作命令 1、主题命令 &#xff08;1&#xff09;创建主题 kafka-topics.sh --create --bootstrap-server 192.168.135.132:9092,192.168.135.133:9092,192.168.135.134:9092 --topic test1 --partitions 4 --replication-factor 3–bootstrap-server&#xff1a;…

Istio 流量管理(请求路由、流量转移、请求重试、流量镜像、故障注入、熔断等)介绍及使用

一、Istio 流量管理 Istio是一个开源的服务网格&#xff0c;它为分布式微服务架构提供了网络层的抽象。它使得服务之间的通信变得更为可靠、安全&#xff0c;并且提供了细粒度的流量管理、监控和策略实施功能。Istio通过在服务之间插入一个透明的代理&#xff08;Envoy&#x…

防静电段码屏驱动VK2C23适用于水电气表以及工控仪表类产品

VK2C23是一个点阵式存储映射的LCD驱动器&#xff0c;可支持最大224点&#xff08;56SEGx4COM&#xff09;或者最大416点&#xff08;52SEGx8COM&#xff09;的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据&#xff0c;也可通过指令进入省电模式。其高抗干扰&#xff…

Django实验(远程访问+图片显示)

众所周知&#xff0c;Python除了不能生孩子什么都会。Python也是可以做web服务的。 Python做web有一个重点优势是&#xff1a;做一个快速的AI Demo。 第一步&#xff1a;安装一个版本5.0以上django 第二步&#xff1a;构建咱们的Django工程&#xff0c;我取名为BBQ django-adm…

static静态成员变量和静态方法

当有new创建一个对象的,里面属性和方法,通过构造函数,能定义多个不同的对象,在我们做面向对象开发的时候,给一个场景,人在一个班级的时候,你的老师可能是固定的。 当我们用构造方法去构造的时候&#xff0c;每次都去传递一个固定的实参去定义个老师。 这样好会显得代码非常的…

Linux网络编程:TCP并发服务器实现

目录 1、前言 2、多进程代码实现 2.1 创建新的进程 2.2 客户端接收响应函数 2.3 僵尸进程处理 2.4 完整代码 2.5 代码测试 3、多线程代码实现 3.1 创建新的线程 3.2 线程函数定义 3.3 完整代码 3.4 代码测试 4、总结 1、前言 前面实现了基本的TCP编程&#xf…

理解机器学习中的类别不平衡问题

大家好&#xff0c;实际世界的数据集通常是杂乱的,当不同类别之间的样本分布不均匀时&#xff0c;就会出现类别不平衡。或者说&#xff0c;某些类别的样本比其他类别多得多。例如&#xff0c;考虑一个信用卡违约数据集&#xff0c;信用卡违约是一个相对较少发生的事件&#xff…

Java入门基础学习笔记2——JDK的选择下载安装

搭建Java的开发环境&#xff1a; Java的产品叫JDK&#xff08;Java Development Kit&#xff1a; Java开发者工具包&#xff09;&#xff0c;必须安装JDK才能使用Java。 JDK的发展史&#xff1a; LTS&#xff1a;Long-term Support&#xff1a;长期支持版。指的Java会对这些版…

Sass语法介绍-变量介绍

02 【Sass语法介绍-变量】 sass有两种语法格式Sass(早期的缩进格式&#xff1a;Indented Sass)和SCSS(Sassy CSS) 目前最常用的是SCSS&#xff0c;任何css文件将后缀改为scss&#xff0c;都可以直接使用Sassy CSS语法编写。 所有有效的 CSS 也同样都是有效的 SCSS。 Sass语…

javaMail快速部署——发邮件喽~

目录 功能阐述 前序步骤 &#xff08;1&#xff09;到QQ邮箱中获取到授权码 代码实现 坑 今天在写一个修改密码的功能的时候要用到邮箱的发送&#xff0c;然后因为这个项目比较老旧了&#xff0c;采用的是javaWeb和jsp的配置&#xff0c;对于我只使用过springBoot整合的ja…

京东手势验证码-YOLO姿态识别+Bézier curve轨迹拟合

这次给老铁们带来的是京东手势验证码的识别。 目标网站&#xff1a;https://plogin.m.jd.com/mreg/index 验证码如下图: 当第一眼看到这个验证码的时候&#xff0c;就头大了&#xff0c;这玩意咋识别&#xff1f;&#xff1f;&#xff1f; 静下心来细想后的一个方案&#xf…

JavaWeb中的Session和Cookie

前言 什么是会话跟踪技术 Cookie 1.什么是cookie 2.Cookie的应用 2.1 保持用户登录状态 2.2 记录用户名 3. Cookie的设置和获取 3.1 、通过HttpServletResponse.addCookie的方式设置Cookie 3.2、浏览器中查看cookie的内容 3.3、服务端获取客户端携带的cookie&#xf…

240+ Stylized Arctic Textures - Snow, Ice More

240+风格化的雪、冰、雪岩和其他雪纹理的集合,用于北极风格化/幻想/rpg风格的游戏环境。 在这个系列中,你会在风格化/幻想/rpg风格的游戏中找到大量适合北极和其他雪地环境的纹理——雪、冰、雪地岩石、雪地草、雪地砾石、雪地等等! 每个纹理都是可平铺/无缝的,并与各种不同…

C++语法|进程虚拟地址空间和函数调用栈

本文来自施磊老师的课程&#xff0c;老师讲的非常不错&#xff0c;我的笔记也是囫囵吞枣全部记下&#xff0c;但是我在这里推荐一本书&#xff0c;真的真的建议初学C或者想要进阶C的同学们看看&#xff1a;《CPU眼里的C/C》 文章目录 进程的虚拟地址空间和布局进程虚拟地址空间…

布隆过滤器和黑名单,解决Redis缓存穿透

目录 1.什么是布隆过滤器&#xff1f; 2.布隆过滤器的原理 3.空间计算 4.布隆过滤器的视线场景&#xff1a; 5.在Spring Boot中集成Redisson实现布隆过滤器 6、Redisson实现布隆过滤器 6.1导入依赖 6.2使用 布隆过滤器&#xff08;Bloom Filter&#xff09;是1970年由布…

邮件大附件系统如何进行安全、高效的大附件发送?

邮件大附件系统是一套解决传统电子邮件系统&#xff0c;在发送大文件时遇到限制的解决方案。由于传统电子邮件系统通常对附件大小有限制&#xff0c;这使得发送大文件变得困难。邮件大附件系统通过各种技术手段&#xff0c;允许用户发送超过传统限制的大文件&#xff0c;通常在…
最新文章