精品软件 400多个 139my辅 3DESIGN 567网盘

Milvus v1.1.0

Milvus
软件大小: 5.72 MB 更新时间: 2022-01-04 应用平台: WinAll 软件分类: 编程开发

Milvus提供向量数据库管理功能,可以帮助用户在软件上管理数据,您可以为自己的业务创建数据管理方案,可以在软件设置,可以创建数据索引方案,可以对标量数据过滤,让用户可以更方便管理数据,各方便处理TB级别的数据文件;软件基于Python开发,您可以通过代码的方式建立新的向量,可以通过代码创建新的分区,每个都可以创建分区管理数据,方便以后建立数据索引,每个都可以创建对应的索引内容,为查询和转换数据提供方便,如果你需要建立向量类型的数据库就可以通过Milvus软件开发!

Milvus软件功能

1、全面的相似度指标

Milvus 支持各种常用的相似度计算指标,包括欧氏距离、内积、汉明距离和杰卡德距离等。您可以根据应用需求来选择最有效的向量相似度计算方式。

2、业界领先的能

Milvus 基于高度优化的 Appximate Nearest Neighbor Search (ANNS) 索引库构建,包括 faiss、 annoy、和 hnswlib 等。您可以针对不同使用场景选择不同的索引类型。

3、动态数据管理

您可以随时对数据进行插入、删除、搜索、更新等作而无需受到静态数据带来的困扰。

4、近实时搜索

在插入或更新数据之后,您可以几乎立刻对插入或更新过的数据进行搜索。Milvus 负责保证搜索结果的准确率和数据一致。

5、高成本效益

Milvus 充分利用现代处理器的并行计算能力,可以在单台通用上完成对十亿级数据的毫秒级搜索。

6、支持多种数据类型和高级搜索

Milvus 的数据记录中的字段支持多种数据类型。您还可以对一个或多个字段使用高级搜索,例如过滤、排序和聚合。

7、高扩展和可

您可以在分布式环境中部署 Milvus。如果要对集群扩容或者增加可,您只需增加节点。

8、云原生

您可以轻松在公有云、私有云、或混合云上运行 Milvus。

9、简单易用

Milvus 提供了易用的 Python、Java、Go 和 C++ SDK,另外还提供了 RESTful API。

Milvus软件特色

一、异构计算优化了基于 U 搜索向量和建立索引的能。

可以在单台通用上完成对 TB 级数据的毫秒级搜索。

动态数据管理。

二、支持主流索引库、距离计算方式和监控工具集成了 Faiss、NMSLIB、Annoy 等向量索引库。

支持基于量化的索引、基于图的索引和基于树的索引。

相似度计算方式包括欧氏距离 (L2)、内积 (IP)、汉明距离、杰卡德距离等。

Pmetheus 作为监控和能指标存储方案,Grafana 作为可视化组件进行数据展示。

三、近实时搜索插入 Milvus 的数据默认在 1 秒后即可被搜索到。

四、标量字段过滤 (即将上线)支持向量和标量数据。

可以对标量数据进行过滤,增强搜索的灵活。

Milvus教程

Mishards 是什么Mishards 是一个用 Python 开发的 Milvus 集群分片中间件,其内部处理请求转发、读写分离、水平扩展和动态扩容,为用户提供内存和算力可以扩容的 Milvus 实例。

Mishards 简单工作原理Mishards 负责将上游请求拆分,并路由到内部各细分子服务,最后将子服务结果汇总,返回给上游。

Mishards 目标场景

Mishards 适合大数据规模下的搜索场景。那么,怎么判断数据规模的大小呢?这个问题没有标准答案,因为这取决于实际生产环境中使用的硬件资源。这里提供一个简单的判断数据规模的思路:

1、如果你不在意延迟,当数据规模大于单台上硬盘的可用容量时,你可以认为这种场景具有大的数据规模。例如,每次批处理 5000 条查询请求,服务端计算时间已经大于数据从硬盘到内存的加载时间,此时将硬盘的可用容量作为判断数据规模的标准。

2、如果你在意延迟,当数据规模大于单台上的可用内存时,你也可以认为这种场景具有大的数据规模。

基于 Mishards 的集群方案总体架构

主要构件服务发现:获取读写节点的服务地址。

负载均衡器

Mishards 节点:无状态, 可扩容。

Milvus 写节点:单节点,不可扩容。为避免单点故障,需为该节点部署高可用 HA 方案。

Milvus 读节点:有状态,可扩容。

共享存储服务:Milvus 读写节点通过共享存储服务共享数据,可选择 NAS 或 NFS。

元数据服务:目前只支持 MySQL。生产环境下需要部署 MySQL 高可用方案。

Mishards 配置全局配置

元数据元数据记录了底层数据的组织结构。在分布式系统中,Milvus 写节点是元数据唯一的生产者,而 Mishards 节点、Milvus 写节点和读节点都是元数据的消费者。目前版本的 Milvus 只支持 MySQL 和 SQLite 作为元数据的存储后端。

在分布式系统中,元数据的存储后端只能是 MySQL。

服务发现服务发现为 Mishards 提供所有 Milvus 读写节点的地址。Mishards 定义了相关的服务发现接口 IServiceRegistryPvider,并通过插件模式提供了扩展的可能。目前默认提供了两种插件:KubernetesPvider 对应 Kubernetes 集群;StaticPvider 对应静态配置。你可以仿照这两种插件的实现,定制自己的服务发现插件。

链路追踪分布式系统错综复杂,请求往往会分发给内部多个服务调用。为了方便问题的定位,我们需要跟踪内部的服务调用链。系统的复杂越高,一个可行的链路追踪系统带来的好处就越明显。我们选择了已进入 CNCF 的 OpenTracing 分布式追踪标准,OpenTracing 提供与平台和厂商无关的 API,便于开发人员实现链路跟踪系统。

Mishards 定义了相关的链路追踪接口,并通过插件模式提供了扩展的可能。目前默认提供了基于 Jaeger 的插件。

志集群服务志文件分布在不同的服务节点上,因此你在排查问题需要登录到相关获取志。建议使用 ELK 志分析组件来协同分析多个志文件、排查问题。

路由Mishards 从服务发现中心获取 Milvus 读写节点的地址,通过元数据服务获取底层数据元。Mishards 的路由策略就是对于这些素材的一种消费。如图有 10 个数据段(s1, s2, s3, …, s10)。现在选择基于数据段名字的一致哈希路由策略(FileNameHashRingBased),Mishards 会将涉及 s1、s4、s6、s9 数据段的请求路由到 Milvus 1 节点,将涉及 s2、s3、s5 数据段的请求路由到 Milvus 2 节点,将涉及 s7、s8、s10 数据段的请求路由到 Milvus 3 节点。

Mishards 定义了路由策略相关的接口,并通过插件提供扩展。你可以仿照默认的一致哈希路由插件,根据自己的业务特点定制个化路由。

基本案例你可以在 Milvus Helm Charts 找到 Milvus-Helm 支持的所有参数。

1、配置有多个读节点和多个 Mishards 分片中间件的集群。

我们通常配置多个节点来保证服务的可用以及提高吞吐率。下面的例子部署的 Mishards 集群包括:2 个分片中间件、2 个读节点、1 个写节点。

这里通过 mishards.replica 和 readonly.replica 控制副本集数量,默认值为 1。

Mishards 集群中的写节点暂时不支持扩展。

2、使用外部已配置好的 MySQL 集群作为元数据数据库。

为了配合本地部署,有些情况需要支持外部的 MySQL。Milvus-Helm 内部的 MySQL 服务不保证高可用,但你可以通过外部的 MySQL 集群来提升可用。下面的例子就是基于外部 MySQL 的部署。

若使用外部的 MySQL,则不再需要 Helm 内置的 MySQL 服务。这里通过 mysql.enabled 来关闭 Helm 内置的 MySQL 服务。

3、读写节点的 Milvus 分别使用不同的配置。

为了更合理地使用资源,我们希望读节点和写节点拥有不一样的配置。下面的例子配置了一个拥有 16 GB 内存的读节点和 8 GB 内存的写节点。

4、配置 U 资源。

使用 U 可以有效提升 Milvus 的能。下面的例子通过 gpu.enabled=true 允许写节点使用 U 资源,readonly.gpu.enabled=false 禁止读节点使用 U 资源。