Milvus(3):数据库、Collections说明

1 数据库

        Milvus 在集合之上引入了数据库层,为管理和组织数据提供了更有效的方式,同时支持多租户。

1.1 什么是数据库

        在 Milvus 中,数据库是组织和管理数据的逻辑单元。为了提高数据安全性并实现多租户,你可以创建多个数据库,为不同的应用程序或租户从逻辑上隔离数据。例如,创建一个数据库用于存储用户 A 的数据,另一个数据库用于存储用户 B 的数据。

1.2 创建数据库

        可以使用 Milvus RESTful API 或 SDK 以编程方式创建数据。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus" # 用户名:密码
)client.create_database(db_name="my_database_1"
)

        还可以在创建数据库时为其设置属性。下面的示例设置了数据库的副本数量。

client.create_database(db_name="my_database_2",properties={"database.replica.number": 3}
)

1.3 查看数据库

        您可以使用 Milvus RESTful API 或 SDK 列出所有现有数据库并查看其详细信息。

# 列出所有现有数据库
client.list_databases()# 输出
# ['default', 'my_database_1', 'my_database_2']# 检查数据库详细信息
client.describe_database(db_name="default"
)# 输出
# {"name": "default"}

1.4 管理数据库属性

        每个数据库都有自己的属性,您可以在创建数据库时设置数据库属性,也可以更改和删除任何现有数据库的属性。下表列出了可能的数据库属性。

属性名称

类型

属性描述

database.replica.number

整数

指定数据库的副本数量。

database.resource_groups

字符串

与指定数据库关联的资源组名称,以通用分隔列表形式显示。

database.diskQuota.mb

整数

指定数据库的最大磁盘空间大小(MB)。

database.max.collections

整数

指定数据库中允许的最大 Collections 数量。

database.force.deny.writing

布尔

是否强制指定的数据库拒绝写操作。

database.force.deny.reading

布尔

是否强制指定的数据库拒绝读取操作。

1.4.1 更改数据库属性

        可以通过以下方式更改现有数据库的属性。下面的示例限制了可以在数据库中创建的 Collections 数量。

client.alter_database_properties(db_name: "my_database_1",properties: {"database.max.collections": 10}
)

1.4.2 删除数据库属性

        还可以通过如下方式删除数据库属性来重置该属性。下面的示例删除了可以在数据库中创建的 Collection 数量限制。

client.drop_database_properties(db_name: "my_database_1",property_keys: ["database.max.collections"]
)

1.5 使用数据库

        可以在不断开与 Milvus 连接的情况下从一个数据库切换到另一个数据库。RESTful API 不支持此操作符。

client.use_database(db_name="my_database_2"
)

1.6 删除数据库

        一旦不再需要数据库,就可以删除数据库。请注意

  • 不能丢弃默认数据库。
  • 在丢弃数据库之前,需要先丢弃数据库中的所有 Collections。
client.drop_database(db_name="my_database_2"
)

        你可以使用 Milvus RESTful API 或 SDK 以编程方式创建数据。

2 Collections 说明

        在 Milvus 中,您可以创建多个 Collections 来管理数据,并将数据作为实体插入到 Collections 中。Collections 和实体类似于关系数据库中的表和记录。本页将帮助你了解集合和相关概念。

        Collection 是一个二维表,具有固定的列和变化的行。每列代表一个字段,每行代表一个实体。下图显示了一个有 8 列和 6 个实体的 Collection。

2.1 Schema 和字段

        在描述一个对象时,我们通常会提到它的属性,如大小、重量和位置。您可以将这些属性用作 Collection 中的字段。每个字段都有各种约束属性,例如向量字段的数据类型和维度。通过创建字段并定义其顺序,可以形成一个 Collections Schema。应在要插入的实体中包含所有 Schema 定义的字段。

2.2 主键和 AutoId

        与关系数据库中的主字段类似,Collection 也有一个主字段,用于将实体与其他实体区分开来。主字段中的每个值都是全局唯一的,并与一个特定实体相对应。

        如上图所示,名为id的字段是主字段,第一个 ID0对应一个名为 "冠状病毒的死亡率并不重要"的实体。不会有其他实体的主字段是 0。

        主字段只接受整数或字符串。插入实体时,默认情况下应包含主字段值。但是,如果在创建 Collections 时启用了AutoId,Milvus 将在插入数据时生成这些值。在这种情况下,请从要插入的实体中排除主字段值。

2.3 索引

        为特定字段创建索引可提高搜索效率。建议您为服务所依赖的所有字段创建索引,其中向量字段的索引是强制性的。

2.4 实体

        实体是指在 Collections 中共享同一组字段的数据记录。同一行中所有字段的值构成一个实体。您可以根据需要在 Collections 中插入任意数量的实体。但是,随着实体数量的增加,所占用的内存大小也会增加,从而影响搜索性能。

2.5 加载和释放

        加载集合是在集合中进行相似性搜索和查询的前提。加载 Collections 时,Milvus 会将所有索引文件和每个字段中的原始数据加载到内存中,以便快速响应搜索和查询。搜索和查询是内存密集型操作。为节约成本,建议您释放当前不使用的 Collections。

2.6 搜索和查询

        创建索引并加载 Collections 后,就可以通过输入一个或多个查询向量开始相似性搜索。例如,当接收到搜索请求中携带的查询向量表示时,Milvus 会使用指定的度量类型来衡量查询向量与目标 Collections 中的向量之间的相似性,然后再返回与查询语义相似的向量。

        还可以在搜索和查询中加入元数据过滤功能,以提高搜索结果的相关性。请注意,元数据过滤条件在查询中是必须的,但在搜索中是可选的。

  • 基本 ANN 搜索
  • 过滤搜索
  • 范围搜索
  • 分组搜索
  • 混合搜索
  • 搜索迭代器
  • 查询
  • 全文搜索
  • 文本匹配

        此外,Milvus 还提供了提高搜索性能和效率的增强功能。这些增强功能默认为禁用,您可以根据自己的服务要求启用和使用它们。它们是

  • 使用 Partition Key
  • 使用 mmap
  • 集群压缩

2.7 分区

        分区是集合的子集,与其父集合共享相同的字段集,每个分区包含一个实体子集。通过将实体分配到不同的分区,可以创建实体组。你可以在特定分区中进行搜索和查询,让 Milvus 忽略其他分区中的实体,提高搜索效率。

2.8 分片

分片是 Collections 的水平切片。每个分片对应一个数据输入通道。每个 Collections 默认都有一个分片。创建 Collections 时,可以根据预期吞吐量和要插入 Collections 的数据量设置适当的分片数量。

2.9 别名

        可以为您的集合创建别名。一个集合可以有多个别名,但集合不能共享一个别名。收到针对某个 Collection 的请求后,Milvus 会根据所提供的名称定位该 Collection。如果所提供名称的 Collection 不存在,Milvus 会继续定位所提供名称的别名。你可以使用 Collections 别名来调整代码以适应不同的情况。

2.10 函数

        您可以为 Milvus 设置函数,以便在创建 Collections 时派生字段。例如,全文搜索功能使用用户定义函数从特定 varchar 字段推导出稀疏向量字段。

2.11 一致性级别

        分布式数据库系统通常使用一致性级别来定义跨数据节点和副本的数据相同性。在创建 Collections 或在 Collections 中进行相似性搜索时,可以分别设置不同的一致性级别。适用的一致性级别有强有限制的不稳定性会话最终

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

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

相关文章

【质量管理】“武藏曲线”和“微笑曲线”的差异

什么是“微笑曲线” 在电子制造领域,“微笑曲线”(Smiling Curve)是由宏碁集团创始人施振荣于1992年提出的一个理论模型,用于描述产业链中不同环节的附加价值分布。该曲线因形状类似“微笑”而得名,核心观点是&#xf…

【html】a标签target属性以及扩展应用

进行页面新窗口打开跳转&#xff0c;我们使用 <a> 标签即可实现。 <a>标签可以通过设置target的值来控制此链接的打开方式&#xff0c;一般可取以下值&#xff1a; _self&#xff1a;默认值&#xff0c;链接在当前窗口打开 _blank&#xff1a;链接在新窗口打开 …

一文读懂什么是 MCP、A2A、ANP

在人工智能快速发展的今天&#xff0c;智能体&#xff08;Agent&#xff09;正逐步成为互联网交互的新主体。它们不仅能替代人类完成复杂任务&#xff0c;还能通过协作形成更高效的网络生态。然而&#xff0c;这一切的实现离不开通信协议的支持。本文将解析智能体领域的三大核心…

Python3网络爬虫开发--爬虫基础

网络爬虫基础 1.1 HTTP基本原理 1.1.1 URI和URL URI即统一资源标志符,URL即统一资源定位符。 有这样一个链接,http://test.com/test.txt,在这个链接中,包含了访问协议https,访问目录(即根目录),资源名称(test.txt)。通过这样的链接,可以在互联网上找到这个资源,这…

OpenCV颜色变换cvtColor

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 颜色变换是imgproc模块中一个常用的功能。我们生活中看到的大多数彩色图片都是RGB类型的&#xff0c;但是在进行图像处理时需要用到灰度图、二值图、HSV&#xff08;六角锥体模型&#xff0c;这个模型中颜色的…

Hadoop----高可用搭建

目录标题 **什么是高可用&#xff1f;****⭐搭建的步骤**一.jdk**安装配置**- **要点**: 二.zookeeper**集群配置**- **要点** 三.Hadoop高可用的搭建- **要点**①环境变量的配置②配置文件的修改 ③内容分发④集群任务的初次启动 什么是高可用&#xff1f; 通过冗余设计 自动…

【Rust 精进之路之第15篇-枚举 Enum】定义、变体与数据关联:表达多种可能性

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:当值拥有“选项”——超越结构体的表达力 在上一篇【结构体 Struct】中,我们学习了如何使用结构体将多个相关的数据字段组合成一个有意义的整体。结构体非常适合表示那些…

模拟实现strncat、qsort、atoi

目录 前言 一、模拟实现strncat 参数 代码演示&#xff1a; 二、模拟实现qsort 参数 代码演示&#xff1a; 前言 本文主要是对strncat&#xff0c;qsort&#xff0c;atoi的模拟实现 一、模拟实现strncat C 库函数 char *strncat(char *dest, const char *src, size_t n…

Ubuntu 系统中修改 MySQL 的 sql_mode

在 Ubuntu 系统中修改 MySQL 的 sql_mode 需要编辑 MySQL 的配置文件并重启服务。以下是详细步骤&#xff1a; 步骤 1&#xff1a;定位 MySQL 配置文件 MySQL 配置文件通常位于以下路径之一&#xff08;具体取决于安装方式&#xff09;&#xff1a; /etc/mysql/my.cnf /etc/m…

进阶算法 第一课:贪心

本文遵循 CC BY-NC-ND 4.0 协议&#xff0c;作者&#xff1a; U•ェ•*U \texttt{U•ェ•*U} U•ェ•*U&#xff0c;转载请获得作者授权。 欢迎大家来到进阶算法第一课&#xff1a;贪心&#xff1b;我会分为以下几点为大家讲解贪心&#xff1a; 什么是贪心。贪心的性质与分类。…

AI领域:MCP 与 A2A 协议的关系

一、为何会出现MCP和A2A 协议是非常重要的东西&#xff0c;只有大家都遵循统一的协议&#xff0c;整体生态才好发展&#xff0c;正如有了HTML&#xff0c;互联网才快速发展&#xff0c;有了OpenAPI&#xff0c; API才会快速发展。 Agent目前是发展最快的领域&#xff0c;从最初…

深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例

最近在训练一个基于 Tiny-UNet 的图像去噪模型时&#xff0c;我遇到了经典但棘手的错误&#xff1a; RuntimeError: CUDA out of memory。本文记录了我如何从复现、分析&#xff0c;到逐步优化并成功解决该问题的全过程&#xff0c;希望对深度学习开发者有所借鉴。 训练数据&am…

FramePack V2版 - 支持首尾帧生成,支持LoRA,支持批量,支持50系显卡,一个强大的AI视频生成软件 本地一键整合包下载

FramePack 是斯坦福大学主导开发的视频生成框架&#xff0c;是一种用于视频生成的下一帧&#xff08;下一帧部分&#xff09;预测神经网络结构&#xff0c;可以逐步生成视频。FramePack 主要开发者之一&#xff0c;就是业内大名鼎鼎的张吕敏大佬&#xff0c;AI领域的“赛博佛祖…

STM32 HAL 通用定时器延时函数

使用通用定时器TIM3&#xff0c;实现ms、us延时。 delay.c #include "delay.h" #include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** brief 初始化定时器3用于延时* param 无* retval 无*/ void Delay_Init(void) {TIM_ClockConfigTypeDef sClock…

软件功能测试和非功能测试有什么区别和联系?

软件测试是保障软件质量的核心环节&#xff0c;而软件功能测试和非功能测试作为测试领域的两大重要组成部分&#xff0c;承担着不同但又相互关联的职责。 软件功能测试指的是通过验证软件系统的各项功能是否按照需求规格说明书来正确实现&#xff0c;确保软件的功能和业务流程…

使用Java调用TensorFlow与PyTorch模型:DJL框架的应用探索

在现代机器学习的应用场景中&#xff0c;Python早已成为广泛使用的语言&#xff0c;尤其是在深度学习框架TensorFlow和PyTorch的开发和应用中。尽管Java在许多企业级应用中占据一席之地&#xff0c;但因为缺乏直接使用深度学习框架的能力&#xff0c;往往使得Java开发者对机器学…

Docker安装beef-xss

新版的kali系统中安装了beef-xss会因为环境问题而无法启动&#xff0c;可以使用Docker来安装beef-xss&#xff0c;节省很多时间。 安装步骤 1.启动kali虚拟机&#xff0c;打开终端&#xff0c;切换到root用户&#xff0c;然后执行下面的命令下载beef的docker镜像 wget https:…

metasploit(2)生成dll木马

声明&#xff01;本文章所有的工具分享仅仅只是供大家学习交流为主&#xff0c;切勿用于非法用途&#xff0c;如有任何触犯法律的行为&#xff0c;均与本人及团队无关&#xff01;&#xff01;&#xff01; 一、dll文件基本概念 DLL 是一种包含可由多个程序同时使用的代码和数…

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 一、起源&#xff1a;USB标准与早期电力传输需求 1. USB的诞生背景 1996年&#xff0c;由英特尔、微软、IBM等公司组成的USB-IF&#xff08;USB Implementers Forum&#xff09;发布了…

使用Python设置excel单元格的字体(font值)

一、前言 通过使用Python的openpyxl库&#xff0c;来操作excel单元格&#xff0c;设置单元格的字体&#xff0c;也就是font值。 把学习的过程分享给大家。大佬勿喷&#xff01; 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…