使用向量数据库 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 MilvusClientCLUSTER_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 consoletoken=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.mzph.cn/pingmian/9785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 正在开发一种可以防止版权诉讼的工具

OpenAI 正在开发一种名为 Media Manager 的工具,该工具将使内容创建者和所有者能够确定他们是否愿意将自己的内容用于 ML 研究和 AI 模型训练。 Media Manager 将做什么? 明年推出的 Media Manager 将使内容创作者和所有者能够更好地控制他们的工作是否…

Oracle体系结构初探:闪回技术

在Oracle体系结构初探这个专栏中,已经写过了REDO、UNDO等内容。觉得可以开始写下有关备份恢复的内容。闪回技术 — Oracle数据库备份恢复机制的一种。它可以在一定条件下,高效快速的恢复因为逻辑错误(误删误更新等)导致的数据丢失…

岩点×数说故事×小红书 | 发布《中国攀岩行业分析报告》

从下班健身到下班攀岩,从“鸡娃”到岩馆“溜娃”,被奥运“正名”的攀岩运动,在国内熬过了萌芽阶段,悄然开出了花。2023年,各类重磅攀岩赛事重启、线下岩馆疯狂扩张,小众攀岩正式进入大众视野,风…

249 基于matlab的MED、OMEDA、MOMEDA、MCKD信号处理方法

基于matlab的MED、OMEDA、MOMEDA、MCKD信号处理方法。最小熵反褶积(MED),最优最小熵反卷积调整卷积 (OMEDA),多点最优最小熵解卷积调整(Multipoint Optimal Minimum Entropy Deconvolution Adjusted,MOMEDA),最大相关峭…

Vue2 组件通信方式

props/emit props 作用&#xff1a;父组件通过 props 向子组件传递数据parent.vue <template><div><Son :msg"msg" :pfn"pFn"></Son></div> </template><script> import Son from ./son export default {name: …

winform图书管理系统

winform图书管理系统说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 图书管理员 读者管理 图书管理 添加 修改 删除 查看 入库 书册列表 书册管理用户管理退出 借书 还书 系统管理员 修改图书管理权限 项目获取&#xff1a;…

LeetCode 209 长度最小的子数组(滑动窗口and暴力)

、 法一&#xff1a;滑动窗口 //使用滑动窗口来解决问题 //滑动窗口的核心点有&#xff1a; /*1.窗口内是什么&#xff1f;2.如何移动窗口的起始位置&#xff1f;3.如何移动窗口的结束位置&#xff1f;4.两个指针&#xff0c;怎么判断哪个指针是终止指针&#xff0c;哪个指针…

代码随想录算法训练营第六十天| LeetCode647. 回文子串 、516.最长回文子序列

一、LeetCode647. 回文子串 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0647.%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.html 状态&#xff1a;已解决 1.思路 这道题我只想出来了暴力解法&#xff0c;动规解法并没有想出来。根据视频讲解才把它想出来。…

针对macOS上的maven安装配置

这篇博客将向读者介绍如何安装和配置Maven。Maven是一个强大的项目管理工具&#xff0c;广泛用于Java项目的构建、依赖管理和项目报告生成。它可以极大地简化项目的构建过程&#xff0c;并帮助开发人员管理项目的各种依赖项。 什么是Maven&#xff1f; Maven是一个基于项目对…

C++——命名空间

c ——命名空间 前言一.命名空间命名空间的进一步拓展 二.io流特性 前言 ** 好久不见&#xff0c;甚是想念~今天我们讲解的是关于c命名空间的一些知识点&#xff0c;这只是开胃小菜哦&#xff0c;期待我们后面更深入知识的灵魂碰撞吧 ** 一.命名空间 怎么形容呢~命名空间出现…

Rocketmq如何保证消息不丢失和幂等性

生产者 生产者通过RocketMQ提供的事务消息&#xff08;两阶段提交&#xff09;能保证消息的一致性。 第一阶段给Broker发送一个半事务消息&#xff0c;半事务消息是不能消费的消息&#xff0c;broker已经收到生产者发送的消息&#xff0c;但是并未收到生产者的二次确认&#x…

SpringBoot异步接口实现:提高系统的吞吐量

前言 Servlet 3.0之前&#xff1a;每一次Http请求都由一个线程从头到尾处理。 Servlet 3.0之后&#xff0c;提供了异步处理请求&#xff1a;可以先释放容器分配给请求的线程与相关资源&#xff0c;减轻系统负担&#xff0c;从而增加服务的吞吐量。 在springboot应用中&#…

JavaScript使用 BigInt

在 JavaScript 中&#xff0c;最大的安全整数是 2 的 53 次方减 1&#xff0c;即 Number.MAX_SAFE_INTEGER&#xff0c;其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字&#xff0c;双精度浮点数的符号位占 1 位&#xff0c;指数位占 11 位&#xff…

2024C题生物质和煤共热解问题的研究 详细思路

背景 随着全球能源需求的不断增长和对可再生能源的追求&#xff0c;生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源&#xff0c;源自植物和动物的有机物质&#xff0c;而煤则是一种化石燃料。** 在共热解过程中&#xff0c;生物质和煤在高温和缺氧…

Linux系统调用mmap

0 前言 《Linux系统调用》整体介绍了系统调用,本文重点分析其中mmap的实现与使用方法。 1 定义 1.1 x86 (1)linux-2.6.31- 采用老式定义方法: asmlinkage long sys_mmap(unsigned long addr, unsigned long len,unsigned long prot, unsigned long flags,unsigned long…

记录解决问题--redis ssl连接

1.问题场景 springboot连接redis启动报错&#xff0c;感觉是没连上redis&#xff0c;本地是正常启动的&#xff0c;但是本地不是ssl连接。 2.redis ssl连接知识 ①一般不开启ssl的连接&#xff0c;直接连接即可&#xff0c;有密码输密码。 ②不受信的ssl连接&#xff0c;也就…

unity基础(二)

debug方法 Debug.Log(" 一般日志 ");Debug.LogWarning(" 警告日志 ");Debug.LogError(" 错误日志 ");// Player Informationstring strPlayerName "Peter";int iPlayerHpValue 32500;short shPlayerLevel 10;long lAdvantureExp 1…

越秀城投·星汇城 | 看得再多,都不如实景现房更安心

对于大多数家庭而言&#xff0c;买房是人生大事。经历了前几年房企暴雷、楼盘停工烂尾的风波&#xff0c;“现房”成为买房人心中最安心的代名词。无需再等待&#xff0c;所见即所得。 越秀城投星汇城位于平度南部新城核芯片区&#xff0c;不仅享受区域发展的利好&#xff0c;…

vs2019 里 C++ 20规范的 string 类的源码注释

&#xff08;1&#xff09;读源码&#xff0c;可以让我们更好的使用这个类&#xff0c;掌握这个类&#xff0c;知道咱们使用了库代码以后&#xff0c;程序大致具体是怎么执行的。而不用担心程序出不知名的意外的问题。也便于随后的代码调试。 string 类实际是 库中 basic_strin…

使用zdppy_amauth开发获取用户列表接口

服务端代码&#xff1a; 1、创建数据库连接对象2、初始化数据库3、声明一个上下文4、挂载用户相关的路由&#xff0c;这里主要由&#xff1a;登录&#xff0c;注册&#xff0c;获取用户列表5、启动服务 import mcrud import api import amauth import env import contextlibe…