Milvus向量数据库-磁盘索引简介
以下内容是自己在学习Milvus向量数据库时,在Milvus官方网站文档库中对索引的学习整理和翻译,通过自己和借助翻译软件进行了理解整合翻译,有可能有一些地方理解整理的不到位,还望大家理解。
一、磁盘索引
本文介绍了一种名为DiskANN的磁盘索引算法。基于Vamana图,DiskANN在大型数据集中实现了高效搜索。
为了提高查询性能,您可以为每个向量字段指定索引类型。
注:
目前,向量字段只支持一种索引类型。Milvus在切换索引类型时会自动删除旧索引。
二、先决条件
要使用DiskANN索引时,请注意以下事项:
1、默认情况下,DiskANN索引是处于启用的状态(Milvus不同版本中的默认状态有可能不一样)。如果您更喜欢内存索引而不是磁盘索引,建议您可以禁用此功能来获得更好的性能。
- 要想禁用它,您可以在milvus配置文件中将queryNode.enableDisk更改为false。
- 要想再次启用它的话,您可以将queryNode.enableDisk设置为true。
2、Milvus实例需要在Ubuntu 18.04.6或更高版本上运行。
3、Milvus数据路径应挂载到 NVMe SSD 上,以充分发挥性能:
- 对于Milvus独立实例,实例运行所在容器中的路径为/var/lib/Milvus/data。
- 对于Milvus Cluster实例,查询节点和索引节点运行的容器中的数据路径应该是/var/lib/Milvus/data。
三、限制条件
想使用DiskANN索引,你必须确保以下条件:
- 在数据中仅使用至少具有1个维度的浮点向量。
- 仅使用欧氏距离 (L2) 或内积 (IP) 来测量向量之间的距离。
四、索引和搜索的设置
指标构建参数,构建DiskANN索引时,使用DISKANN作为索引类型。不需要索引参数。
搜索参数
| 参数 | 描述 | 范围 |
| search_list | 候选列表的大小,越大,召回率越高,性能越差 | [topk, int32_max] |
五、DiskANN相关的Milvus配置
DiskAN是可调的。您可以在${MILVUS ROOT PATH}/configs/milvus.yaml中修改与DiskANN相关的参数,以提高其性能。
| ... DiskIndex: MaxDegree: 56 SearchListSize: 100 PQCodeBugetGBRatio: 0.125 SearchCacheBudgetGBRatio: 0.125 BeamWidthRatio: 4.0 ... |
| 参数 | 描述 | 取值范围 | 默认值 |
| MaxDegree | Vamana 图的最大度数。 | [1,512] | 56 |
| SearchListSize | 候选人名单的大小。 较大的值会增加构建指数所花费的时间,但会提供更高的召回率。 将其设置为小于“最大度数”的值,除非需要减少索引构建时间。 | [1,int32_max] | 100 |
| PQCodeBugetGBRatio | PQ 代码的大小限制。 | [0.0,0.25] | 0.125 |
| SearchCacheBudgetGBRatio | 缓存节点数与原始数据的比率。 较大的值会随着内存使用量的增加而提高索引构建性能。 | [0.0,0.3] | 0.1 |
| BeamWidthRatio | 每次搜索迭代的最大IO请求数与CPU数之间的比率。 | [1,max(128/cpu number,16)] | 4.0 |
六、故障排除
如何处理报“io_setup() failed; returned -11, errno=11:Resource temporarily unavailable”的错误?
答:Linux内核提供异步非阻塞I/O(AIO)功能,允许进程同时启动多个I/O操作,而无需等待任何一个操作完成。这有助于提高可能重叠处理和I/O的应用程序的性能。
可以使用proc文件系统中的/proc/sys/fs/aio-max-nr虚拟文件中的参数来调整其性能。aio-max-nr参数决定了允许的最大并发请求数。
aio-max-nr默认为65535,您可以将其设置为10485760。
有关更多信息,请参阅如何在Milvus中的磁盘索引:
On-disk Index Milvus v2.3.x documentation
相关文章:
Milvus向量数据库-磁盘索引简介
以下内容是自己在学习Milvus向量数据库时,在Milvus官方网站文档库中对索引的学习整理和翻译,通过自己和借助翻译软件进行了理解整合翻译,有可能有一些地方理解整理的不到位,还望大家理解。 一、磁盘索引 本文介绍了一种名为Disk…...
Web漏洞介绍和Sql注入漏洞
常规渗透测试流程 漏洞探测包括:web漏洞测试,系统漏洞测试 工具探测、手工验证 优先找的漏洞:中间(件)漏洞、框架漏洞...webserver 知道创宇 Seebug 漏洞平台 - 洞悉漏洞,让你掌握前沿漏洞情报ÿ…...
【Eureka】Eureka 介绍与实战
1. Eureka 简介 Eureka 是 Netflix 开发的一个服务注册和发现组件,主要用于微服务架构中。它的核心功能是帮助微服务之间进行通讯和管理,使得服务能够动态地发现彼此,实现灵活的服务调用和负载均衡。 1.1 核心概念 服务注册中心࿰…...
密码管理系统的自动化与集成:重塑安全与效率的双重飞跃
在数字化时代,密码作为保护个人信息、企业资产及敏感数据的第一道防线,其重要性不言而喻。然而,随着网络应用的激增和复杂性的提升,传统的密码管理方式——如使用简单密码、重复密码或依赖记忆——已难以满足现代安全需求…...
Outlook如何精确搜索邮件?
Outlook如何精确搜索邮件? 参考链接:https://jingyan.baidu.com/article/e75aca853148ba552edac6b6.html 我们在使用Outlook搜索功能时,直接输入关键词的话,会出来很多不相关的内容,那么有没有办法让搜索时更加精确呢…...
MambaCSR: 使用SSM的双交错扫描压缩图像超分辨率
MambaCSR: Dual-Interleaved Scanning for Compressed Image Super-Resolution With SSMs 2408.11758 (arxiv.org) GitHub - renyulin-f/MambaCSR: The code source of MambaCSR 摘要 本文提出了MambaCSR,这是一个基于Mamba的简单但有效的框架,用于解决…...
【C++】深入解析C/C++内存管理:new与delete的使用及原理
C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类 本章将分享C为何放弃malloc/free系列,选择新系列new/delete去管理内存。深度探索new/delete的使用及其原理,m…...
递归--数据结构--黑马
递归 总结一句话,上手直接多刷Leetcode,比看这个更有用。 定义 递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 例如,单链表递归遍历的例子: void f(Node node) {if (node null) {retu…...
【3.1】贪心算法-解分发饼干
一、题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是, 每个孩子最多只能给一块饼干 。 对每个孩子i,都有一个 胃口值 g[i] ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个…...
解决 Error running ‘Application‘: Command line is too long.
一、项目场景: 运行刚拉取下来的项目代码,出现下面问题描述的错误提示。 二、问题描述 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configuration? 翻译翻译&…...
衡量与归因将是Netflix程序化广告业务的首要任务
作者:刀客doc 8月20日,Netflix宣布今年上半年,品牌的招商收入同比增长了150%,广告主来自旅游、汽车、零售商、快餐和大众快消等行业。这一消息提振了资本市场对Netflix广告业务的信心,8月20日收盘创下每股 698.54 美元…...
关于如何在已有qt项目中添加该项目的单元测试工程
关于如何在已有qt项目中添加该项目的单元测试工程 新建一个子目录工程,把已有项目作为子工程添加进去,然后新建单元测试工程也作为子工程添加进去。单元测试项目要独立于实际项目工程,确保去掉测试项目后,实际项目仍可以正常运行…...
深度剖析数字媒体产业链的无限潜力与创新生态
在当今信息爆炸的时代,数字媒体产业链正以势不可挡的姿态展现出其令人瞩目的无限潜力与创新生态。 数字媒体的发展潜力简直无可限量。从在线视频的爆发式增长,到虚拟现实和增强现实技术带来的沉浸式体验,再到社交媒体平台上丰富多彩的内容创…...
集团数字化转型方案(十二)
集团数字化转型方案致力于通过构建一个集成化的数字平台,全面应用大数据分析、人工智能、云计算和物联网等前沿技术,推动业务流程、管理模式和决策机制的全面升级。该方案将从业务流程的数字化改造开始,优化资源配置,提升运营效率…...
Andrid异步更新UI:Handler(二)深入了解:Message你真的会创建?它是如何子线程和主线程通知?
目录 为什么会有HandlerHandler的原理,以及对象讲解主线程的loop在哪里,为什么主线程loop没有阻塞呢?Looper如何保证唯一Handler为什么会引发内存泄漏呢?Message应该如何创建它? 一、为什么会有Handler 线程分为主线…...
2025计算机毕设50条小众好做的Java题目【计算机毕设选题推荐】
随着2025年的到来,计算机专业的学生们又迎来了毕业设计的关键时刻。对于大多数学生来说,选择一个合适的毕业设计题目往往是一项艰巨的任务。本文旨在为那些正在为毕业设计题目烦恼的同学们提供一些灵感和建议,特别是针对使用Java技术栈的同学…...
day06_算法训练
一. Stream流 1.1 Stream流概述 概念: jdk1.8以后提供的新的API, 主要用于批量操作数据(集合的另外一种操作方式),代码非常简洁 流式处理思想: 2.2 Stream对象获取 1.单列集合的Stream流对象获取 2.双列集合的Stream流对象获取 3.数组的Stream流对象获取 4.散装数据的St…...
@SpringBootTest单元测试中报错:无法自动装配,找不到 ‘XXX‘ 类型的 Bean
一开始照着网上教程讲Springboot原理中的代码来copy写的↓ import com.google.gson.Gson; import com.itheima.pojo.Result; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.cont…...
nodemon学习(一)简介、安装、配置、使用
nodemon用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。以前,我们开发一个node后端服务时,每次更改文件,均需重启一下,服务才能生效。这使我们的开发效率降低了很多。nodemon的出现,可以…...
【Qt从摄像头视频中获取数据】
有时候需要在视频上画图,所以需要能获取到每一帧视频数据。 以前从视频文件或视频流中得到帧,一般都是使用qt ffmpeg或qt vlc。 qt对显示处理视频大体有以下方法: QMediaPlayer QVideoWidget 这种方法只适合简单的显示视频功能ÿ…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
