milvus文档

这篇具有很好参考价值的文章主要介绍了milvus文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

向量数据库

milvus文档

代理

proxy对外的代理(入口)

协调器

总控制 root coord
query coord 查询协调器
data coord 插入协调器
index coord 索引协调器
2.3把 datacoord和indexcoord 合并
任务包括集群拓扑管理、负载平衡、时间戳生成、数据声明和数据管理

Coordinator HA高可用
1打开配置项 queryCoord.enableActiveStandby=true
2部署时启动两个 QueryCoord 节点,两者会按照启动先后顺序成为主备节点,当主节点不可用时,备用节点会成为新的 coordinator,这大大增强了系统的可用性。

执行节点

query node 查询执行
data node 插入执行
index node 索引执行
高可用易拓展

各个节点都是独立的解耦非常好,比如如果查询够不上了就多个部署个查询节点

第三方对接

etcd(存储元信息(比如集合名称)和服务发现)
kafka/pulsar 数据日志部分,(类似于管道)通过订阅来走数据插入的。(保证流通) 2.3 正在基于NATS做自己的消息队列(正在实验阶段)
minio/s3 对象存储(数据落地的地方)
注意这仨都很重要 建议单独做集群或者备份处理

跟关系型数据库的比对

Milvus向量数据库 关系型数据库
Collection 表
Entity 行
Field 表字段

集合Collection

集合(类似关系型数据库的表)
1)创建必须包含一个主键(INT64或String类型,自动生成的目前不是唯一的,最好自己指定)和矢量字段
2)创建可以指定分片(Shards)数量(默认是2),为了多节点并行插入
3)可以动态设置数据过期时间,我的理解是数据删除的时候不是真的删了,等到刷新时间才删除。(目前只有python支持)默认是0
4)可以查看是否存在集合,查看集合详细信息,查看所有集合
5)可以删除集合,集合里的数据也都不可逆的删除
6)取别名,删除别名
7)可以将集合加载到缓存,加快查询速度和吞吐量都增加了(内存注意占90%以下)
8)加载到缓存的,查询后,可以释放掉。空出资源。

分区Partition

分区: Milvus 支持将收集数据划分为物理存储上的多个部分。这个过程称为分区,每个分区可以包含多个段。
可以做到:
1:指定集合,创建分区 ,如果不指定 默认_default分区
2:1)集合里是否有指定分区。2)可以查询某个集合里所有的分区
3:可以删掉某个分区。删除分区后会不可逆的删除分区的数据。
4:可以将某个分区加载到缓存里。相比集合加载到分区,减少内存的使用。(加载多副本可以让空闲的查询节点利用上。目前加载成多副本,只有python支持)
5:加载到缓存的,查询后,可以释放掉。空出资源。

注意: 分区的意义在于通过划定分区减少数据读取,而分片的意义在于多台机器上并行写入操作。

Segment

分段:通过合并数据自动创建的数据文件。一个 collection 可以包含多个 segment。一个 segment 可以包含多个 entity。在搜索中,
Milvus 会搜索每个 segment,并返回合并后的结果。

Sharding

分片:Shard 是指将数据写入操作分散到不同节点上,使 Milvus 能充分利用集群的并行计算能力进行写入。默认情况下,单个 Collection 包含 2 个分片(Shard)。目前 Milvus 采用基于主键哈希的分片方式,未来将支持随机分片、自定义分片等更加灵活的分片方式。

数据管理

目前已经有了VARCHAR标量数据。(里面可以存储图片名称之类的)可以查询和索引
插入
插入的时候可以指定Partition分区,插入到指定分区。
插入的时候组织的是一列一列的数据不是一行一行的。
批量插入
json格式:{
rows”:[
{“book_id”: 101, “word_count”: 13, “book_intro”: [1.1, 1.2]},
{“book_id”: 102, “word_count”: 25, “book_intro”: [2.1, 2.2]},
{“book_id”: 103, “word_count”: 7, “book_intro”: [3.1, 3.2]},
{“book_id”: 104, “word_count”: 12, “book_intro”: [4.1, 4.2]},
{“book_id”: 105, “word_count”: 34, “book_intro”: [5.1, 5.2]}
]
}
1)rows的名字不能改
2)book_intro是有要求的 请看官网
1)json文件批量插入,减少了Milvus客户端、代理、Pulsar和数据节点之间的网络传输
2)如果是新版本 要把文件存储到milvus.yml里面配置的minio.bucketName
3)只支持一个文件
4)由于批量插入是异步的,可以查看批量插入的状态
5)可以查看所有插入任务的列表
6)MilvusDM:批量插入的工具
删除
通过主键删除,删除后如果consistency level(数据一致性)比Strong低是可以被立即被查询和恢复的,但超出指定时间外就不可以了。
删除频繁会影响性能的。
删除只能用主键当条件并用in(主键 in [0,1] 删除主键是0和1的数据 ),不能用其他字段。
压缩数据
默认是压缩的,可以配置,当配置不压缩,也可以手动压缩
Milvus在common.retensionDuration中指定的范围内保留数据操作日志不被压缩。可以保留时间内查询的准确性。(不压缩查的准,压缩数据小,所以按实际情况指定时间范围内不压缩,范围外压缩)
压缩是异步的很耗时
可以查看压缩状态

索引 index

向量索引,查询索引相似的,如果不建立索引,就是暴力查询。
默认情况下 数据少于1024不能被建立索引。想要更改milvus.yaml里rootCoord.minSegmentSizeToEnableIndex的配置
如果是标量索引不用索引构建参数,默认类型是字典树
建立索引需要指定算法
索引可建立,可删除,一个向量字段只能有一个向量。
IndexType:索引类型
for floating point vectors:
HNSW:(2.3说RHNSW也删掉了不知道是不是一个)
不差钱,性能高,精准度高,内存高。
适用:同时要求性能和精准度,如果大数据量需要不差钱。
FLAT:
不压缩向量(唯一可以保证精确搜索结果的索引),性能稍低,精准度最高,内存占用仅次于HNSW。
适用:要求精准度,对性能要求低,且数据集相对较小。(不建议大数据量,因为当查询一个 它会把所有数据拿出来一个一个对比。)(百万规模)可以用作别的结果对错的标杆。
IVF_FLAT :
和FLAT的区别,类似调表的索引,设置nlist将向量数据划分多少组,然后比较目标输入向量与每个聚类中心之间的距离, 查询的时候设置nprobe 比如设置3 就找离搜索向量最的近3个组里的数据挨个去对比。
特点 相对来说节省资源,对精准度有一定损失 但不大
推荐参数设置
nlist:4 × sqrt(n) n是一段数据有多少个实体,datacoord.segment.maxSize( 默认512 MB )除以每个实体的大小就可以获得多少个实体。
nprobe:根据实际情况做调节。
IVF_SQ8:
有数据压缩(内存节省70–75%),资源受限的时候可以用IVF_SQ8代替IVF_FLAT,精度减少了
IVF_PQ:
把高维数据变成多个低维数据,进一步节省资源可以用IVF_PQ,精度更小
ANNOY:(低纬度向量)树形索引…官网上有介绍但没说啥适用范围啥的。网上视频介绍都把它放过了没介绍它。就先这样。以后遇到了在补充(2.3版本已经删掉了)
DISKANN:
磁盘索引,内存消耗最小的。需要很高性能的SSD。需要自己编译
也不是完全不用内存。是你全部用内存的1/6算。
要求 :
Ubuntu 18.04.6以上版本
float向量,至少32维以上
L2或者IP来测量向量之间的距离
下面是两个GPU索引
GPU_IVF_FLAT* (GPU_IVF_FLAT)
GPU_IVF_PQ*> (GPU_IVF_PQ)
上面索引资源节省从上到下是一步一步 越来越节省的。
For binary vectors:
BIN_FLAT
BIN_IVF_FLAT
(这俩跟上面FLAT,IVF_FLAT )类似只不过是二进制的。

距离计算公式

浮点型向量主要使用以下距离计算公式:
欧氏距离 (L2): 主要运用于计算机视觉领域。
内积 (IP): 主要运用于自然语言处理(NLP)领域。
余弦(COSINE),如果做了标准化 ip很cosine是一样的。如果没做用cosine处理nlp领域

二值型向量主要使用以下距离计算公式:
汉明距离 (Hamming): 主要运用于自然语言处理(NLP)领域。
杰卡德距离 (Jaccard): 主要运用于化学分子式检索领域。
谷本距离 (Tanimoto): 主要运用于化学分子式检索领域。
超结构 (Superstructure): 主要运用于检索化学分子式的相似超结构。
子结构 (Substructure): 主要运用于检索化学分子式的相似子结构。

查询

search :先要加载集合到缓存–>然后在查询–>最后清理掉集合缓存。比较好理解 用法参考官网。
查询的结果是最相似的,应该是相似度由高到低有顺序的。
Hybrid Search:标量矢量混合搜寻。跟search一样只是多出了个表达式比如 字段值>100当条件。
query:标量查询条件可以查出向量的意思 感觉没啥用。
时间点的查询:可以查询历史默认432,000s内的可以查询。其他的被压缩了。common.retensionDuration可以配置这个保留时间。

管理指南

由于我只会docker,所以都是基于docker的管理处理
1下载milvus.yaml里面都是各个节点的配置,根据情况修改
2下载milvus-cluster-docker-compose.yml
3把compose文件里每个节点都添加volumes,然后把milvus.yaml映射到下载的milvus.yaml
4然后启动docker-compose,这样就启动了
milvus.yaml的详解我会在部署测试的时候把每个参数写上说明。后续把文件贴上来用作更新

部署到云

AWS,GCP,Azure。官网提供的,目前用不上,暂时先放着。如有有对应,补充。

添加和缩放节点

注意能够动态的 是无状态节点:数据节点,查询节点,索引节点,代理。协调器是主备

监视器和报警

Prometheus和Grafana

RBAC权限

目前只有java和python支持
角色分配可用集合或者分区–>给用户属于某个角色(这样用户就拥有权限了)
这些操作都是可以删除和解绑的(不可逆)。

安全

说白了就是如何用户验证
1启动用户验证milvus.yaml里common.security.authorizationEnabled 设置为 true
2当链接集合的时候需要配置用户名密码(关于长度之类的有要求,详细看文档)。
默认情况下,根用户(用户名:root,密码:Milvus)与每个Milvus实例一起创建。建议您在首次启动Milvus时密码。根用户可用于创建新用户以进行身份验证访问。
Encryption in Transit传输层加密 TLS (Transport Layer Security)
1创建证书
2在milvus.yaml里配置
1)tlsEnabled为true,
2)tls:
serverPemPath: configs/cert/server.pem
serverKeyPath: configs/cert/server.key
caPemPath: configs/cert/ca.pem
(设置生成的证书)=
3)链接的时候带上相应的证书
分单项认证和双向认证,所要的证书不同。

管理工具

Milvus_CLI:交互式命令行,基于python
MilvusDM :数据迁移,只支持1.x(可以不考虑)
Attu:服务可视化,Zilliz.一个开源项目. 文档最多比较官方
Milvus sizing tool:容量评估

注意

建议部署用Kubernetes(k8s)
Milvus 2.2.0以上搜索速度有显著提高。
你下载的版本和代码里引入的版本必须一致
关于不停机滚动升级:只有通过 helm 部署的 Milvus 集群支持滚动升级,Operator 部署暂不支持。
插入不占用cpu,但耗资源。比如有kafka,流传输什么的。
Milvus float只保留7位小数。多了会删掉。
ttl时间:可以把过期数据做一个自动删除
2.3
开始支持arm64版服务器
支持英伟达GPU,正在做升腾GPU适配。
GPU查询速度快3到10倍

不要使用时间旅行功能,
停止了CentOS 支持

支持了CDC
通常用于主动/备用数据同步、增量数据备份和数据迁移等场景。 https://github.com/zilliztech/milvus-cdc.文章来源地址https://www.toymoban.com/news/detail-489281.html

到了这里,关于milvus文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生向量数据库Milvus

    什么是 Milvus Milvus 是一款云原生向量数据库,它具备高可用、高性能、易拓展的特点,用于海量向量数据的实时召回。 Milvus 基于 FAISS、Annoy、HNSW 等向量搜索库构建,核心是解决稠密向量相似度检索的问题。在向量检索库的基础上,Milvus 支持数据分区分片、数据持久化、增量

    2024年02月02日
    浏览(56)
  • docker 安装向量数据库 Milvus

    官网为 www.milvus.io/ Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据(图片 / 视频 / 语音 / 文本)检索。单节点 Milvus 可以在秒内完成十亿级的向量搜索(请参考:在线教程),分布式架构亦能满足用户的水平扩展需求。 Milvus 向量数据库的应用场景包括:互联网娱乐

    2024年02月13日
    浏览(90)
  • 向量数据库Annoy和Milvus

    Annoy 和 Milvus 都是用于向量索引和相似度搜索的开源库,它们可以高效地处理大规模的向量数据。 Annoy(Approximate Nearest Neighbors Oh Yeah): Annoy 是一种近似最近邻搜索算法,它通过构建一个树状结构来加速最近邻搜索。 Annoy 支持支持欧氏距离,曼哈顿距离,余弦距离,汉明距

    2024年02月09日
    浏览(41)
  • milvus: 专为向量查询与检索设计的向量数据库

    milvus docs milvus release Milvus的目标是:store, index, and manage massive embedding vectors generated by deep neural networks and other machine learning (ML) models. Milvus 向量数据库专为向量查询与检索设计,能够为万亿级向量数据建立索引。 与现有的关系数据库主要按照预定义的模式处理结构化数据不同,

    2024年02月15日
    浏览(42)
  • 《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3新功能

    支持用户通过 upsert 接口更新或插入数据。已知限制,自增 id 不支持 upsert;upsert 是内部实现是 delete + insert所以性能上会有一定损耗,如果明确知道是写入数据的场景请继续使用 insert。 支持用户通过输入参数指定 search 的 distance 进行查询,返回所有与目标向量距离位于某一

    2024年02月09日
    浏览(43)
  • 使用docker搭建Milvus向量数据库

    官网是这样说的: Milvus创建于2019年,目标单一:存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。 作为一个专门用于处理输入向量查询的数据库,它能够对万亿规模的向量进行索引。与现有的关系数据库不同,Milvus主要按照预定义的模式处

    2024年02月09日
    浏览(46)
  • 腾讯云向量数据库正式对外全量开放公测

    11月1日,腾讯云对外宣布向量数据库正式全量开放公测,同时性能层面带来巨大提升。腾讯云数据库副总经理罗云表示,除了公测之外,腾讯云向量数据库单索引已经支持百亿级向量规模,支持百万级QPS毫秒级查询延迟,领先行业平均水平1.5倍以上,计算成本低于行业水平

    2024年02月06日
    浏览(47)
  • milvus向量数据库搭建及可视化

    官方文档 https://milvus.io/docs/install_standalone-docker.md sudo curl -L “https://github.com/docker/compose/releases/download/v2.10.0/docker-compose- ( u n a m e − s ) − (uname -s)- ( u nam e − s ) − (uname -m)” -o /usr/local/bin/docker-compose sudo curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.0/docker-compose- unam

    2024年02月08日
    浏览(79)
  • 《向量数据库指南》——Milvus 中的向量索引概览和平面索引

    目录 Milvus 中的向量索引 索引概览 平面索引 在之前的教程中,我们简单介绍了单词 Embedding 示例,了解了 Embedding 的强大,以及如何在向量数据库中进行向量存储和索引。此外,我们也简单介绍了最近邻搜索算法,这个问题涉及根据所选距离度量找到距离查询向量最接近的向

    2024年02月13日
    浏览(54)
  • 【milvus】向量数据库,用来做以图搜图+人脸识别的特征向量

    ref:https://milvus.io/docs 第一次装东西,要把遇到的问题和成功经验都记录下来。 1.Download the YAML file 看一下下载下来的是什么东西 Start Milvus In the same directory as the docker-compose.yml file, start up Milvus by running: 报错则需要安装docker-compose了 下载最新版的docker-compose 文件 添加可执行权限

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包