当前位置: 首页 > news >正文

Milvus(16):索引解释

        索引是建立在数据之上的附加结构。其内部结构取决于所使用的近似近邻搜索算法。索引可以加快搜索速度,但在搜索过程中会产生额外的预处理时间、空间和 RAM。此外,使用索引通常会降低召回率(虽然影响可以忽略不计,但仍然很重要)。因此,本文将解释如何最大限度地减少使用索引的成本,同时最大限度地提高索引的效益。

1 概述

        在 Milvus 中,索引是特定于字段的,适用的索引类型因目标字段的数据类型而异。作为专业的向量数据库,Milvus 注重提高向量搜索和标量过滤的性能,因此提供了多种索引类型。下表列出了字段数据类型与适用索引类型之间的映射关系。

字段数据类型

适用索引类型

  • FLOAT_VECTOR

  • FLOAT16_VECTOR

  • bfloat16_vector

  • 平面

  • IVF_FLAT

  • IVF_SQ8

  • IVF_PQ

  • GPU_IVF_FLAT

  • GPU_IVF_PQ

  • HNSW

  • DISKANN

二进制向量

  • BIN_FLAT
  • BIN_IVF_FLAT

稀疏浮点矢量

稀疏反转索引

变量

  • 反转(推荐)

  • BITMAP

  • Trie

BOOL

  • BITMAP(推荐)
  • 反转
  • INT8

  • INT16

  • INT32

  • INT64

  • 反转
  • STL_SORT
  • FLOAT
  • DOUBLE

反转

数组(BOOL、INT8/16/32/64 和 VARCHAR 类型的元素)

BITMAP(推荐)

ARRAY(BOOL、INT8/16/32/64、FLOAT、DOUBLE 和 VARCHAR 类型的元素)

反转

JSON

反转

        本文重点介绍如何选择合适的向量索引。对于标量字段,可以始终使用推荐的索引类型。为向量搜索选择适当的索引类型会极大地影响性能和资源使用情况。在为向量字段选择索引类型时,必须考虑各种因素,包括底层数据结构、内存使用情况和性能要求。

2 向量索引解剖图

        如下图所示,Milvus 中的索引类型由三个核心部分组成,即数据结构量化细化器。量化和精炼器是可选的,但由于收益大于成本的显著平衡而被广泛使用。

        在创建索引时,Milvus 会结合所选的数据结构和量化方法来确定最佳扩展率。在查询时,系统会检索topK × expansion rate 候选向量,应用精炼器以更高的精度重新计算距离,最后返回最精确的topK 结果。这种混合方法通过将资源密集型细化限制在候选矢量的过滤子集上,在速度和精确度之间取得了平衡。

2.1 数据结构

        数据结构是索引的基础层。常见类型包括

  • 反转文件(IVF)

    IVF 系列索引类型允许 Milvus 通过基于中心点的分区将向量聚类到桶中。一般可以安全地假设,如果桶的中心点接近查询向量,那么桶中的所有向量都有可能接近查询向量。基于这个前提,Milvus 只扫描那些中心点靠近查询向量的桶中的向量 Embeddings,而不是检查整个数据集。这种策略既能降低计算成本,又能保持可接受的精确度。这种索引数据结构非常适合需要快速吞吐量的大规模数据集。

  • 基于图的结构

    基于图的向量搜索数据结构,如分层导航小世界(HNSW),构建了一个分层图,其中每个向量都与其最近的邻居相连。查询可以浏览这个层次结构,从粗略的上层开始,然后切换到下层,从而实现高效的对数时间搜索复杂性。这种索引数据结构适用于高维空间和要求低延迟查询的场景。

2.2 量化

        量化通过更粗略的表示来减少内存占用和计算成本:

  • 标量量化(如SQ8)使 Milvus 能够将每个向量维度压缩为单字节(8 位),与 32 位浮点数相比,内存使用量减少了 75%,同时保持了合理的精度。

  • 乘积量化(PQ)使 Milvus 能够将向量分割成子向量,并使用基于编码本的聚类进行编码。这可以实现更高的压缩率(例如 4-32 倍),但代价是召回率略有降低,因此适用于内存受限的环境。

2.3 精炼器

        量化本身就是有损的。为了保持召回率,量化始终会产生比所需数量更多的前 K 个候选结果,这使得精炼器可以使用更高的精度从这些候选结果中进一步选择前 K 个结果,从而提高召回率。

        例如,FP32 精炼器通过使用 FP32 精度而不是量化值重新计算距离,对量化返回的候选搜索结果进行操作符操作。

        这对于需要在搜索效率和精度之间做出权衡的应用(如语义搜索或推荐系统)来说至关重要,因为在这些应用中,微小的距离变化都会对结果质量产生重大影响。

2.4 总结

        这种分层架构--通过数据结构进行粗过滤、通过量化进行高效计算、通过细化进行精度调整--使 Milvus 能够自适应地优化精度-性能权衡。

3 性能权衡

        在评估性能时,平衡构建时间每秒查询次数(QPS)召回率至关重要。一般规则如下:

  • QPS 而言,基于图形的索引类型通常优于IVF 变体
  • IVF 变体尤其适用于topK 较大的情况(例如,超过 2,000 个)
  • SQ相比,PQ通常能在相似的压缩率下提供更好的召回率,但后者的性能更快。
  • 将硬盘用于部分索引(如DiskANN)有助于管理大型数据集,但也会带来潜在的 IOPS 瓶颈。

3.1 容量

        容量通常涉及数据大小与可用 RAM 之间的关系。在处理容量问题时,请考虑以下几点:

  • 如果有四分之一的原始数据适合存储在内存中,则应考虑使用延迟稳定的 DiskANN。
  • 如果所有原始数据都适合在内存中存储,则应考虑基于内存的索引类型和 mmap。
  • 您可以使用量化应用索引类型和 mmap 来换取最大容量的准确性。

        mmap 并不总是解决方案。当大部分数据在磁盘上时,DiskANN 可以提供更好的延迟。

3.2 召回率

        召回率通常涉及过滤率,即搜索前过滤掉的数据。在处理召回问题时,应考虑以下几点:

  • 如果过滤率小于 85%,则基于图的索引类型优于 IVF 变体。
  • 如果过滤比在 85% 到 95% 之间,则使用 IVF 变体。
  • 如果过滤率超过 98%,则使用 "蛮力"(FLAT)来获得最准确的搜索结果。

        上述项目并不总是正确的。建议使用不同的索引类型来调整召回,以确定哪种索引类型有效。

3.3 性能

        搜索性能通常涉及 top-K,即搜索返回的记录数。在处理性能问题时,请考虑以下几点:

  • 对于 Top-K 较小的搜索(如 2,000),需要较高的召回率,基于图的索引类型优于 IVF 变体。
  • 对于 top-K 较大的搜索(与向量嵌入的总数相比),IVF 变体比基于图的索引类型是更好的选择。
  • 对于 top-K 中等且过滤率较高的搜索,IVF 变体是更好的选择。

3.4 决策矩阵:选择最合适的索引类型 

        下表是一个决策矩阵,供您在选择合适的索引类型时参考。

方案

推荐索引

注释

原始数据适合内存

HNSW、IVF + 精炼

使用 HNSW 实现低k/ 高召回率。

磁盘、固态硬盘上的原始数据

磁盘ANN

最适合对延迟敏感的查询。

磁盘上的原始数据,有限的 RAM

IVFPQ/SQ + mmap

平衡内存和磁盘访问。

高过滤率(>95)

强制(FLAT)

避免微小候选集的索引开销。

大型k (≥ 数据集的 1)

IVF

簇剪枝减少了计算量。

极高的召回率(>99)

蛮力 (FLAT) + GPU

--

4 内存使用估算

        索引的内存消耗受其数据结构、通过量化实现的压缩率以及所使用的精炼器的影响。一般来说,由于图的结构(如HNSW),基于图的索引通常会占用较多内存,这通常意味着每个向量的空间开销较大。相比之下,IVF 及其变体更节省内存,因为适用的每个向量空间开销更少。不过,DiskANN等先进技术允许索引的一部分(如图或细化器)驻留在磁盘上,从而在保持性能的同时减少了内存负荷。

4.1 IVF 索引内存使用量

        IVF 索引通过将数据划分为数据集群,在内存效率和搜索性能之间取得平衡。以下是使用 IVF 变体索引的 100 万个 128 维向量所使用的内存明细。

4.1.1 计算中心点使用的内存

        IVF 系列索引类型使 Milvus 能够使用基于中心点的分区将向量聚类到桶中。在原始向量 Embeddings 中,每个中心点都包含在索引中。当你将向量划分为 2,000 个簇时,内存使用量可按如下方式计算:

2,000 clusters × 128 dimensions × 4 bytes = 1.0 MB

4.1.2 计算簇分配使用的内存

        每个向量嵌入都会分配给一个簇,并以整数 ID 的形式存储。对于 2 000 个簇来说,2 字节的整数就足够了。内存使用量的计算方法如下:

1,000,000 vectors × 2 bytes = 2.0 MB

4.1.3 计算量化带来的压缩

        IVF 变体通常使用 PQ 和 SQ8,内存使用量可按下式估算:

  • 使用带有 8 个子量化器的 PQ

    1,000,000 vectors × 8 bytes = 8.0 MB
  • 使用 SQ8

    1,000,000 vectors × 128 dimensions × 1 byte = 128 MB 

        下表列出了不同配置下的内存用量估算:

配置

内存估算

总内存

IVF-PQ(无细化)

1.0 MB + 2.0 MB + 8.0 MB

11.0 MB

IVF-PQ + 10% 原始细化

1.0 MB + 2.0 MB + 8.0 MB + 51.2 MB

62.2 MB

IVF-SQ8 (无细化)

1.0 MB + 2.0 MB + 128 MB

131.0 MB

IVF-FLAT(全原始向量)

1.0 MB + 2.0 MB + 512 MB

515.0 MB

4.1.4 计算细化开销

        IVF 变体通常会与细化器配对,对候选对象进行重新排序。对于检索前 10 个结果且扩展率为 5 的搜索,细化开销可估算如下:

10 (topK) x 5 (expansion rate) = 50 candidates
50 candidates x 128 dimensions x 4 bytes = 25.6 KB

4.2 基于图形的索引内存使用情况

        基于图的索引类型(如 HNSW)需要大量内存来存储图结构和原始向量嵌入。下面是使用 HNSW 索引类型索引的 100 万个 128 维向量所消耗内存的详细明细。

4.2.1 计算图结构使用的内存

        HNSW 中的每个向量都与其邻居保持连接。在图度(每个节点的边数)为 32 的情况下,所消耗的内存计算如下:

1,000,000 vectors × 32 links × 4 bytes (for 32-bit integer storage) = 128 MB

4.2.2 计算原始向量嵌入所消耗的内存

        存储未压缩的 FP32 向量所消耗的内存可计算如下:

1,000,000 vectors × 128 dimensions × 4 bytes = 512 MB

        当您使用 HNSW 对 100 万 128 维向量嵌入进行索引时,使用的总内存为128 MB(图形)+ 512 MB(向量)= 640 MB

4.2.3 计算量化带来的压缩

        量化可以减小向量大小。例如,使用带有 8 个子量化器(每个向量 8 字节)的 PQ 会导致大幅压缩。压缩后的向量 Embeddings 所消耗的内存可计算如下:

1,000,000 vectors × 8 bytes = 8 MB

        与原始向量嵌入相比,这实现了 64 倍的压缩率,HNSWPQ索引类型使用的总内存将为128 MB(图)+ 8 MB(压缩向量)= 136 MB

4.2.4 计算细化开销

        细化(如使用原始向量重新排序)会将高精度数据临时加载到内存中。对于检索前 10 个结果且扩展率为 5 的搜索,细化开销可估算如下:

10 (topK) x 5 (expansion rate) = 50 candidates
50 candidates x 128 dimensions x 4 bytes = 25.6 KB

4.3 其他考虑因素

        IVF 和基于图的索引可通过量化优化内存使用,而内存映射文件(mmap)和 DiskANN 则可解决数据集超出可用随机存取内存(RAM)的情况。

        DiskANN 是一种基于 Vamana 图的索引,它将数据点连接起来,以便在搜索过程中高效导航,同时应用 PQ 来减小向量的大小,并能快速计算向量之间的近似距离。

        Vamana 图存储在磁盘上,这使得 DiskANN 能够处理那些内存无法容纳的大型数据集。这对十亿点数据集尤其有用。

        内存映射(Mmap)可实现对磁盘上大型文件的直接内存访问,从而允许 Milvus 在内存和硬盘中同时存储索引和数据。这种方法可根据访问频率减少 I/O 调用的开销,有助于优化 I/O 操作,从而在不对搜索性能造成重大影响的情况下扩大 Collections 的存储容量。

        具体来说,你可以配置 Milvus 对某些字段中的原始数据进行内存映射,而不是将它们完全加载到内存中。这样,你就可以直接对字段进行内存访问,而不必担心内存问题,并扩展了 Collections 的容量。

相关文章:

Milvus(16):索引解释

索引是建立在数据之上的附加结构。其内部结构取决于所使用的近似近邻搜索算法。索引可以加快搜索速度,但在搜索过程中会产生额外的预处理时间、空间和 RAM。此外,使用索引通常会降低召回率(虽然影响可以忽略不计,但仍然很重要&…...

数字化转型-4A架构之应用架构

系列文章 数字化转型-4A架构(业务架构、应用架构、数据架构、技术架构)数字化转型-4A架构之业务架构 前言 应用架构AA(Application Architecture)是规划支撑业务的核心系统与功能模块,实现端到端协同。 一、什么是应…...

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…...

AI开发playwright tool提示词

[TASK] 生成一个isModuleElementObject function,若element的qa-test class在对象moduleObj {"qa-test-mycourses-course": "qa-test-mycourses-course-title", "qa-test-discussion-module": "qa-test-discussion-description&…...

《Origin画百图》之带显著性标记的多因子分组柱状图

带显著性标记的多因子分组柱状图 需要数据: 组1(大类) 组2(小类) Y数据 Y误差 选中Y数据和Y误差两列数据, 点击绘图--分组图--多因子分组柱状图 数据列就是上一步选择的Y和Y误差, 点击子组…...

邮件发送频率如何设置?尊重文化差异是关键!

一、不同文化背景,邮件频率大不同 1.工作习惯不一样 一些西方国家,美国和欧洲工作时间和个人时间分得很清楚。工作日的上午 9 点到下午 5 点,这期间发邮件,收件人大概率会看也会回。但是在深夜或者周末发邮件容易让收件人觉得你…...

Python 识别图片上标点位置

Python识别图片上标点位置 要识别图片上的标点位置,可以使用Python中的OpenCV库。以下是几种常见的方法: 方法一:使用颜色阈值识别 import cv2 import numpy as np# 读取图片 image cv2.imread(image.jpg)# 转换为HSV颜色空间 hsv cv2.c…...

JDK Version Manager (JVMS)

以下是使用 JDK Version Manager (JVMS) 工具在Windows系统中安装JDK的详细步骤及注意事项,结合多篇搜索结果整理而成: --- 一、安装前准备 1. 下载JVMS - 访问 [GitHub Releases页面](https://github.com/ystyle/jvms/releases) 或镜像地址&#x…...

办公学习 效率提升 超级PDF处理软件 转换批量 本地处理

各位办公小能手们!我跟你们说啊,有个软件叫超级PDF,那可真是PDF文件处理界的全能选手,专门解决咱们办公、学习时文档管理的各种难题。接下来我给大家好好唠唠它的厉害之处。 先说说它的核心功能。第一是格式转换,这软件…...

阿里云服务器-centos部署定时同步数据库数据-dbswitch

前言: 本文章介绍通过dbswitch工具实现2个mysql数据库之间实现自动同步数据。 应用场景:公司要求实现正式环境数据库数据自动冷备 dbswitch依赖环境:git ,maven,jdk 方式一: 不需要在服务器中安装git和maven,直接用…...

C++函数栈帧详解

函数栈帧的创建和销毁 在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体取决于编译器的实现! 且需要注意的是,越高级的编译器越不容易观察到函数栈帧的内部的实现; 关于函数栈帧的维护这里我们要重点介…...

Wireshark抓账号密码

训练内容: 1. 安装Ethereal或者Wireshark,熟悉网络嗅探器的使用方法; 2. 实现浏览器与IIS服务器的ssl安全访问; 3. 利用网络嗅探器截获浏览器访问IIS服务器之间数据包,包括有ssl安全连接(https方式&am…...

【hot100】bug指南记录1

之前学了一阵C,还是更熟悉C的语法呀,转Java还有点不适应........ 这个系列纯纯记录自己刷题犯的愚蠢的错误......hhhh,我是人,one 愚蠢的码人...... 巩固巩固基础好吗?!编程菜鸟.......hhh,又…...

物联网从HomeAssistant开始

文章目录 一、在树梅派5上安装home-assistant二、接入米家1.对比下趋势2.手动安装插件3.配置方式 三、接入公牛1.手动安装插件2.配置方式 一、在树梅派5上安装home-assistant https://www.home-assistant.io/installation/ https://github.com/home-assistant/operating-syste…...

2025年渗透测试面试题总结-网络安全、Web安全、渗透测试笔试总结(一)(附回答)(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 网络安全、Web安全、渗透测试笔试总结(一) 1.什么是 WebShell? 2.什么是网络钓鱼? 3.你获取网络…...

C++ set和map系列(关联式容器)的介绍及使用

欢迎来到干货小仓库 "一个好汉三个帮,程序员同样如此" 1.关联式容器 STL中的容器分为两类,序列式容器和关联式容器。 序列式容器:例如STL库中的vector、list和deque、forward_list(C11)等,这些容器统称为序列式容器&…...

C#与Halcon联合编程

一、加载图片 导入并初始化 using HalconDotNet; ho_Image new HObject();需要在引用中导入 halcondotnet.dll 关联句柄 打开新窗口 //创建一个句柄变量 绑定winform 窗口 HTuple winfowFater this.pictureBox1.Handle; //打开新的窗口 HOperatorSet.SetWindowAttr(&qu…...

5.0.4 VisualStateManager(视觉状态管理器)使用说明

在 WPF 中,VisualStateManager(视觉状态管理器)是用于管理控件在不同状态下的外观变化的核心组件。它通过定义视觉状态(如按钮的默认、悬停、按下状态)和状态过渡动画,使控件在不同交互场景下动态切换样式,而无需重写整个控件模板。以下是其核心用法和示例: 1. 基本概…...

onenet连接微信小程序(mqtt协议)

一、关于mqtt协议 mqtt协议常用于物联网,是一种轻量级的消息推送协议。 其中有三个角色,Publisher设备(客户端)发布主题到服务器,其他的设备通过订阅主题,获取该主题下的消息,Publisher可以发…...

IT需求规格说明书,IT软件系统需求设计文档(DOC)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需…...

探索 DevExpress:构建卓越应用的得力助手

探索 DevExpress:构建卓越应用的得力助手 在当今竞争激烈的软件开发领域,打造高效、美观且功能强大的应用程序是每个开发者的追求。而 DevExpress 作为一款备受瞩目的开发工具,为开发者们提供了实现这一目标的有力支持。在本专栏博客中&…...

康养休闲旅游住宿服务实训室:构建产教融合新标杆

随着健康中国战略的深入实施与银发经济市场的持续扩张,康养休闲旅游作为融合健康管理、文化体验与休闲度假的复合型产业,正迎来前所未有的发展机遇。北京凯禾瑞华科技有限公司依托其在智慧康养领域的技术积淀与产业洞察,创新推出“康养休闲旅…...

Python 程序设计教程:构建您的第一个计算器类

Python 程序设计教程:构建您的第一个计算器类 1. 引言:为什么要学习类? 面向对象编程 (Object-Oriented Programming, OOP) 是一种强大的编程范式,它通过将数据和操作数据的函数(方法)捆绑在一起来组织和结构化代码 1。类 (Class) 是 OOP 的核心概念,不仅在 Python 中…...

深入浅出理解常见的分布式ID解决方案

分布式ID在构建大规模分布式系统时扮演着至关重要的角色,主要用于确保在分布式环境中数据的唯一性和一致性。以下是分布式ID的几个主要作用: 确保唯一性:在分布式系统中,可能有成千上万个实例同时请求ID。分布式ID生成系统能保证即…...

mac 使用 Docker 安装向量数据库Milvus独立版的保姆级别教程

Milvus 特点:开源的云原生向量数据库,支持多种索引类型和GPU加速,能够在亿级向量规模下实现低延迟高吞吐。具有灵活的部署选项和强大的社区支持。 适用场景:适合处理超大规模数据和高性能需求的应用,如图像搜索、推荐…...

Ubuntu日志文件清空的三种方式

清空Ubuntu日志文件可以通过三种方式: 使用命令行清空日志文件:可以使用以下命令清空特定日志文件,例如清空syslog文件: sudo truncate -s 0 /var/log/syslog使用编辑器清空日志文件:可以使用文本编辑器如Nano或Vi来…...

文章记单词 | 第68篇(六级)

一,单词释义 differentiate:英 [ˌdɪfəˈrenʃieɪt] 美 [ˌdɪfəˈrenʃieɪt] ,动词,意为 “区分;辨别;使有差别;使不同;表明… 间的差别;构成… 间差别的原因”。…...

Postman最佳平替, API测试工具Bruno实用教程(一):基础篇

序言 在前文【github星标超3万!Postman最强平替Bruno你用了吗?】中,我们介绍了目前目前Github上广受关注的新锐接口测试工具Bruno,给厌倦了Postman必须在线使用限制的同学提供了一个很好的替代选择。 Bruno的核心优势,官网重点给出了如下几点: 承诺开源和可扩展,并且专…...

LabVIEW 与 NI 硬件(PXI, CompactRIO, DAQ, RF, Vision)的深度研究与未来发展趋势-分析报告

LabVIEW 与 NI 硬件(PXI, CompactRIO, DAQ, RF, Vision)的深度研究与未来发展趋势 引言 本报告旨在对 National Instruments (NI) 的 LabVIEW 软件平台及其核心硬件产品线,包括 PXI、CompactRIO、DAQ、RF 和 Vision 系列,进行深…...

上海雏鸟科技再赴越南,助力10518架无人机刷新吉尼斯记录

近日,上海雏鸟科技携手深圳大漠大、河南豆丁智能在越南胡志明市,使用10518架无人机刷新了“最多无人机同时起飞”的世界吉尼斯记录。本次无人机灯光秀表演以越南南部解放50周年为背景突出了越南历史与民族文化的主题,是一场融合了技术与艺术的…...

在云环境中部署Redis服务与自建Redis服务有啥不同?

云服务 Redis概述 常见的云服务Redis提供商有(阿里云 Redis、华为云 Redis、AWS ElastiCache for Redis等)。这些云提供商负责底层基础设施的部署、配置、维护、操作系统的管理、补丁升级、硬件故障处理等大部分繁琐的运维工作。我们只需要通过控制台或…...

C++类对象的隐式类型转换和编译器返回值优化

文章目录 前言1. 隐式类型转换1.1 单参数的隐式类型转换1.2 多参数的隐式类型转换1.3 explicit关键字 2. 编译器的优化2.1 普通构造优化2.2 函数传参优化2.3 函数返回优化 前言 在类与对象的学习过程中,一定会对隐式类型转换这个词不陌生。对于内置类型而言&#x…...

西门子 PLC 串口转网口模块

在工业自动化领域,高效稳定的通信是保障生产顺畅运行的关键。三格电子西门子 PLC 串口转网口模块,型号涵盖 SG-S7-200-ETH、SG-S7-200-ETH (2P)、SG-S7-300-ETH、SG-S7-300-ETH (2P) 网口扩展与协议支持:该系列模块专为西门子 S7-200/300 PL…...

MATLAB制作直方图

一、什么是直方图? 直方图(Histogram)是一种用于显示数据分布的图形工具。它通过将数据分成若干个区间,统计每个区间内数据的数量或频率,从而形成类似柱状图的形式。它能帮助我们直观了解数据的集中程度、分布形状、离…...

Linux NVIDIA 显卡驱动安装指南(适用于 RHEL/CentOS)

📌 一、禁用 Nouveau 开源驱动 NVIDIA 闭源驱动与开源的 nouveau 驱动冲突,需先禁用: if [ ! -f /etc/modprobe.d/blacklist-nouveau.conf ]; thenecho -e "blacklist nouveau\noptions nouveau modeset0" | sudo tee /etc/modpr…...

微机控制电液伺服拉扭疲劳试验系统

微机控制电液伺服拉扭疲劳试验系统,主要用于测定金属材料及其构件在正弦波、三角波、方波、梯形波、斜波、程序块波谱状态下进行: 拉压扭复合疲劳; 单纯的扭转疲劳试验; 拉压扭复合疲劳作用下材料的断裂韧性试验; 拉压…...

ElementUI 表格el-table自适应高度设置

el-table表格占满页面剩余的全部高度空间 首先,el-table父节点要使用flex布局和超出隐藏(overflow: hidden),设置样式如下: .list{flex: 1;display: flex;flex-direction: column;overflow: hidden; }其次&#xff0…...

深入探索Linux命名管道(FIFO):原理、实践与高级技巧

引言:跨越进程的“文件桥梁” 在Linux的进程间通信(IPC)机制中,命名管道(Named Pipe,FIFO) 是一个看似简单却功能强大的工具。它不仅保留了匿名管道的流式数据传输特性,还通过文件系…...

光伏政策“430”“531”安科瑞光储充为新能源提供解决方案有哪些?

简婷 安科瑞电气股份有限公司 上海嘉定 201801 一、政策节点“430”与“531”的含义 2025年分布式光伏行业的两大核心节点——“4月30日”(430)和“5月31日”(531),分别对应《分布式光伏发电开发建设管理办法》实施…...

VScode一直处于循环“正在重新激活终端“问题的解决方法

方法一: 键盘使用 “ctrlshiftp” 调出快捷命令,也可以按F1,并输入“>Python: Clear Cache and Reload Window ”,回车。清除 VSCode 先前的缓存内容,如下图所示。 方法二: 键盘使用 ” ctrl ,"…...

CAN报文逆向工程

在没有DBC文件的情况下解析CAN报文获取物理信息需要逆向工程和系统分析。以下是详细步骤: 1. 数据采集与基础分析 采集原始数据: 使用CAN分析工具(如PCAN-Explorer、SavvyCAN或USB-CAN适配器配套软件)记录车辆在不同状态下的CAN数…...

文件包含漏洞学习

理论 什么是文件包含漏洞 就是允许攻击者包含并执行非预期的文件。也就是通过PHP函数引入文件时,传入的文件名(或者文件内容)没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入…...

Linux基本操作——网络操作文件下载

6.网络操作文件下载 (1)在VMware Workstation中配置固定IP 配置固定IP需要的两个大步骤 VMware Workstation中的配置 步骤概述:配置IP地址、网关和网段(IP地址范围) Linux系统中的配置 步骤概述:手动修改…...

【ARM AMBA AHB 入门 3.1 -- AHB控制信号】

文章目录 AHB控制信号传送状态HTRANS[1:0]批量传送HBURST[2:0]传送方向HWRITE传送大小HSIZE[2:0]保护控制HPROT[3:0]响应信号 HRESP[1:0] AHB控制信号 传送状态HTRANS[1:0] 在AHB总线上, Master (M) 的传送状态可由HTRANS[1:0]来表示,这两位所代表的意…...

Amazing晶焱科技:系统级 EOS 测试方法 - System Level EOS Testing Method

系统上常见的EOS测试端口以AC电源、电话线(RJ11)、同轴电缆(coaxial cable)以及以太网络(RJ45)最常见,这些端口因有机会布线至户外的关系,受到EOS/Surge冲击的几率也大大提升。因此电…...

基于DR模式的LVS集群案例

一.环境描述 如上图所示,后端是一个NFS服务器实现共享文件,调度器是一个高可用的环境, 这是基于LVS的DR模式实现的一个负载均衡集群。 keepalived在于LVS结合使用的时候,会自动实现很多功能。 比如,第一点我们可以修…...

Spark jdbc写入崖山等国产数据库失败问题

随着互联网、信息产业的大发展、以及地缘政治的变化,网络安全风险日益增长,网络安全关乎国家安全。因此很多的企业,开始了国产替代的脚步,从服务器芯片,操作系统,到数据库,中间件,逐步实现信息技术自主可控,规避外部技术制裁和风险。 就数据库而言,目前很多的国产数据…...

Chain-of-Draft (CoD) 是提示工程的新王者

图像由 DALLE 3 生成 推理型大模型,是当前 AI 研究的热门话题。 我们从最早的 GPT-1 一路走到现在像 Grok-3 这样的高级推理模型。 这段旅程可以说非常精彩,过程中也发现了很多重要的推理方法。 其中之一就是 Chain-of-Thought(CoT&#xff0…...

隐私计算技术及其在数据安全中的应用:守护数据隐私的新范式

前言 在数字化时代,数据已成为企业和组织的核心资产。然而,数据的收集、存储和使用过程中面临着诸多隐私和安全问题。随着法律法规对数据隐私的监管日益严格,企业和组织需要在数据利用与隐私保护之间找到平衡。隐私计算技术作为一种新兴的数据…...

使用Milvus向量数据库构建具有长期记忆的对话机器人

一、申请Milvus试用版 快速创建Milvus实例_向量检索服务 Milvus 版(Milvus)-阿里云帮助中心 二、配置 pip3 install pymilvus tqdm dashscope 由于在下文使用的时候需要用到Milvus的公网地址,而公网地址需要我们手动开启,参考下面这篇文章开启公网地…...