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

milvus 通俗易懂原理

向量值如何生成的

Milvus 是一个开源的向量数据库,专门用于处理高维向量的存储、搜索和分析。向量值本身通常来自于某些机器学习或深度学习模型的输出,尤其是在自然语言处理(NLP)、计算机视觉(CV)、推荐系统等应用中。具体来说,向量值的生成过程通常包括以下几个步骤:

  1. 数据表示与特征提取文本数据:

对于文本数据,向量通常是通过词嵌入(Word Embedding)或句子嵌入(Sentence Embedding)生成的。例如,利用像 Word2Vec、GloVe 或 BERT 这样的预训练模型,可以将文本(单词、句子、段落)转换成高维向量(embedding)。这些向量能够捕捉到文本的语义信息。

图像数据:对于图像数据,向量通常是通过深度神经网络(如卷积神经网络,CNN)进行特征提取。例如,使用 ResNet、VGG、EfficientNet 等预训练模型,可以将图像转换为一个固定长度的高维向量,表示图像的特征。

音频数据:对于音频数据,通常使用 MFCC(梅尔频率倒谱系数)、VGGish 等方法将音频信号转化为向量表示。视频数据:视频数据通常通过处理每一帧图像或提取时序特征来生成向量,这些向量可以反映视频中的动态信息。

  1. 特征向量生成经过特征提取后,得到的向量(通常是一个浮动的高维数字数组)就代表了数据在某个特征空间中的位置。通过深度学习模型(如卷积神经网络、循环神经网络、Transformer等)训练出的向量通常能较好地捕捉数据的语义信息。比如,对于文本数据,使用 BERT 这类大型语言模型生成的句子向量可以反映出句子中单词之间的语义关系。

  2. 向量的存储与索引Milvus 会接收这些高维向量并将其存储在数据库中,提供高效的向量搜索。Milvus 使用了特定的向量索引结构(如 IVF、HNSW、Annoy 等)来加速高维向量之间的相似性搜索。

  3. 向量搜索一旦向量存储在 Milvus 中,你可以使用 相似性搜索 来查找相似向量。Milvus 提供多种搜索算法,可以通过向量之间的距离度量(如 欧氏距离、余弦相似度、曼哈顿距离 等)来找到最相似的向量。

总结:Milvus 中的“向量值”通常是通过各种机器学习和深度学习模型从原始数据(如文本、图像、音频等)中提取出来的。这些向量表示了数据的特征,可以用于相似度搜索、聚类、推荐等任务。具体的生成方式取决于输入数据的类型和应用场景。

如何查询一个相似性

在 Milvus 或其他向量数据库中进行向量搜索时,核心思想是利用向量之间的相似度度量来找到最相似的向量。具体而言,当你提供一个查询向量(比如一个待搜索的值),Milvus 会计算这个查询向量与数据库中存储的每个向量之间的相似度,然后返回与查询向量最相似的那些向量。

这个过程可以分为以下几个关键步骤:

  1. 向量表示和相似度度量

向量表示:首先,数据(如文本、图像、音频等)被转化为向量。每个数据点都有一个高维向量表示,它是数据在某种特征空间中的位置。查询时,你会提供一个查询向量,表示你要查找的内容。

相似度度量:Milvus 通过计算查询向量和存储向量之间的相似度来判断它们的相似程度。常见的相似度度量方法有:
欧氏距离(Euclidean Distance):用于计算两向量之间的直线距离。距离越小,相似度越高。
余弦相似度(Cosine Similarity):用于衡量两个向量的夹角,值越大(接近1),表示两个向量越相似。
曼哈顿距离(Manhattan Distance):计算向量在各个维度上的绝对差的总和。
通常,余弦相似度和欧氏距离是最常用的相似度度量方法,尤其在处理文本和高维数据时。

  1. 向量索引结构

由于高维数据的计算复杂度较高,直接对所有向量进行一对一比较(即暴力搜索)会非常低效。为此,Milvus 使用了几种高效的向量索引结构,以加速相似度计算和检索。常见的索引结构有:

倒排文件(IVF, Inverted File):将向量分成若干个簇,并将每个簇索引起来。当查询向量到来时,Milvus 只需要搜索与查询向量相似的簇,从而避免了对整个数据库的全面搜索。IVF 适用于大规模数据集,能够提高查询速度。
HNSW(Hierarchical Navigable Small World):一种图索引方法,通过构建小世界网络来加速相似向量的查找。HNSW 在高维空间中也能提供高效的近似邻近搜索。
Annoy(Approximate Nearest Neighbor Search):一种基于树结构的近似搜索算法,适用于在大规模数据集上进行快速的相似性搜索。
PQ(Product Quantization):将向量分解为子向量,通过量化方法来减少存储空间,并加速相似度搜索。
这些索引方法能够大幅度降低计算复杂度,使得即便是在数百万或数十亿个向量的数据库中,Milvus 也能快速响应相似度搜索请求。

  1. 近似搜索 vs 精确搜索

在大规模向量搜索中,直接进行精确的最近邻搜索会非常耗时,尤其是高维空间(如数百维或更高)的情况下。Milvus 提供了近似最近邻搜索(ANN),即在搜索时通过某些算法(如HNSW、IVF)进行近似计算,以换取更高的速度。虽然这种方法不是100%精确的,但在大多数应用中,这种近似误差是可以接受的,并且相较于精确搜索,能大大提高效率。

精确搜索:会计算查询向量与所有向量的相似度,找到最匹配的向量。这种方法计算量大,适合数据量不大的情况。
近似搜索:通过近似算法(如图结构、聚类等)来减少需要检查的向量数目,通常能提供足够高质量的搜索结果,但可能会错过一些最相似的向量。
4. 搜索流程

搜索过程的一般流程如下:

生成查询向量:首先,系统会将查询的数据(如文本、图像)转化为向量表示,称为查询向量。

索引选择和查找:Milvus 会根据存储的向量的索引类型(如HNSW、IVF等)选择合适的索引结构,定位出可能与查询向量相似的子集。

计算相似度:通过计算查询向量与候选向量之间的相似度,找到最相似的向量。Milvus 会根据设置的参数(如返回的近邻数)返回前 K 个最相似的向量。

返回结果:返回相似度最高的向量及其对应的原始数据。

  1. 示例:搜索文本相似度

假设你有一组文本数据,并已经通过 BERT 或其他模型将每个文本转换成了一个向量(例如 768 维的向量)。当你输入一个查询文本时,系统会将该文本转换成一个向量,并利用之前提到的索引结构(如 HNSW 或 IVF)找到与查询向量相似的文本。通过计算这些向量之间的相似度(如余弦相似度),系统会返回与查询最相似的文本及其相关信息。

总结

向量搜索的核心在于通过计算查询向量与数据库中存储向量之间的相似度,来找到最相关的数据。Milvus 通过高效的索引方法和相似度度量来加速这一过程,使得在大规模数据集上,向量相似度搜索既高效又准确。同时,Milvus 支持精确搜索和近似搜索,提供了灵活的选择来平衡搜索精度和性能。

相关文章:

milvus 通俗易懂原理

向量值如何生成的 Milvus 是一个开源的向量数据库,专门用于处理高维向量的存储、搜索和分析。向量值本身通常来自于某些机器学习或深度学习模型的输出,尤其是在自然语言处理(NLP)、计算机视觉(CV)、推荐系…...

什么是撞库、拖库和洗库?

“撞库”是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。 很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网…...

安卓-碎片的使用入门

1.碎片(Fragment)是什么 Fragment是依赖于Activity的,不能独立存在的,是Activity界面中的一部分,可理解为模块化的Activity,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛. Fragment不能独立存在,必须…...

华为IPD流程学习之——深入解读123页华为IPD流程体系设计方法论PPT

该方案全面介绍了华为IPD流程体系设计方法论,包括流程体系建设的背景、理念、架构、核心特征、构建模型、与组织和战略的关系、运营机制、数字化转型以及流程管理组织等内容,旨在为企业提供一套系统的流程体系建设指导,以提升运营效率、质量和…...

DriveMLLM:一个专为自动驾驶空间理解任务设计的大规模基准数据集

2024-11-20, 由武汉大学、中国科学院自动化研究所、悉尼科技大学、牛津大学等合创建了DriveMLLM数据集,该数据集是自动驾驶领域首个专为评估多模态大型语言模型(MLLMs)空间理解能力而设计的基准,对于推动自动驾驶技术的…...

高效处理 iOS 应用中的大规模礼物数据:以直播项目为例(1-礼物池)

引言 在现代iOS应用开发中,处理大规模数据是一个常见的挑战。尤其实在直播项目中,礼物面板作为展示用户互动的重要部分,通常需要实时显示海量的礼物数据。这些数据不仅涉及到不同的区域、主播的动态差异,还需要保证高效的加载与渲…...

python的函数与递归

需求: 编写一个函数,计算斐波那契数列的第 N 项,并使用递归实现。 为了计算斐波那契数列的第 N 项,可以使用递归方法。斐波那契数列的定义是: F(0) 0 F(1) 1 对于 n > 2,F(n) F(n-1) F(n-2)&#xf…...

RabbitMQ学习-Seven

再SpringBoot中使用MQ 1.创建SpringBoot项目 除了我们平常使用的一些工具依赖,还需要选择这个Spring for RabbitMQ依赖 2.需要在application.yml文件中进行配置 server:port :9090 spring:application:name:producerrabbitmq:host: 你的主机名port: 5672virtual-…...

中科亿海微SoM模组——波控处理软硬一体解决方案

本文介绍的波控处理软硬一体解决方案主要是面向相控阵天线控制领域,波控处理通过控制不同天线组件的幅相来调整天线波束的方向和增益,实现高精度角度控制和高增益。本方案由波控处理板、波控处理控制软件算法和上位机软件共同构成。波控处理SoM模组原型样…...

开源法律、政策和实践

#一切皆可开源# 木兰社区对《Open Source Law,Policy and Practice 》这本书的第二版进行了翻译,并发布在了gitee上。这本书是对开源文化、开源政策、法律的全面介绍。目录如下: 1 Open Source as Philosophy,Methodology,and CommerceUsing Law with …...

【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)

金字塔(Pyramid)在图像处理中主要用于多尺度分析和图像压缩。常见的图像金字塔有两种: 高斯金字塔(Gaussian Pyramid):用于下采样图像,生成分辨率逐渐降低的图像序列。拉普拉斯金字塔&#xff…...

基于BERT的语义分析实现

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

DNS查询工具

DNS查询工具是用于查询和获取域名相关信息的工具。通过这些工具,您可以获取到诸如IP地址、邮件服务器以及域名服务器等信息,这对于排查问题、设置域名配置以及确保网站正常运行都非常重要。 以下是五款常用的DNS记录查询工具: MxToolbox MxTo…...

ODB 框架

目录 概述 基本工作原理 映射C对象到数据库表 从数据库中加载对象 持久化C对象到数据库 ODB常用接口 表创建预处理 #pragma db Object table 数据表属性 id auto column(“xxx”) type("xxx") unique index null default&…...

Ubuntu WiFi检测

ubuntu检测到多个同名wifi,怎么鉴别假冒的wifi? 在Ubuntu中,如果检测到多个同名的Wi-Fi网络,可能存在假冒的Wi-Fi(例如“蜜罐”攻击)。以下是一些鉴别假冒Wi-Fi的方法: 检查信号强度&#xff1a…...

QILSTE H4-108TCG高亮纯lu光LED灯珠 发光二极管LED

型号:H4-108TCG 在电子领域,H4-108TCG LED以其卓越的性能和微小的尺寸1.6x0.8x0.4mm脱颖而出。这款高亮纯绿光LED,采用透明平面胶体,符合EIA标准包装,是环保产品,符合ROHS标准。防潮等级为Level 3&#xf…...

IP与“谷子”齐飞,阅文“乘势而上”?

爆火的“谷子经济”,又捧出一只“潜力股”。 近日,阅文集团股价持续上涨,5日累计涨幅达13.20%。这其中,周三股价一度大涨约15%至29.15港元,强势突破20日、30日、120日等多根均线,市值突破280亿港元关口。 …...

Java阶段三05

第3章-第5节 一、知识点 动态代理、jdk动态代理、cglib动态代理、AOP、SpringAOP 二、目标 理解什么是动态代理和它的作用 学会使用JAVA进行动态代理 理解什么是AOP 学会使用AOP 理解什么是AOP的切入点 三、内容分析 重点 理解什么是动态代理和它的作用 理解什么是AO…...

C# yield 关键字

文章目录 前言一、yield 关键字的语法形式及使用场景(一)yield return(二)yield break 二、yield 关键字的工作原理三、yield 关键字的优势与应用场景(一)优势(二)应用场景 前言 在 …...

SpringBoot开发——结合Nginx实现负载均衡

文章目录 负载均衡介绍介绍Nginx实现负载均衡的示例图:负载均衡策略1.Round Robin:2.Least Connections:3.IP Hash :4.Generic Hash:5.Least Time (NGINX Plus only)6.Random:Nginx+SpringBoot实现负载均衡环境准备Nginx 配置负载均衡测试负载均衡介绍 介绍 在介绍Nginx的负…...

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者,因为业务需求,希望失败后重试一定次数,超过之后就不处理了,或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的,问了kimi,按它的方法配置之后,发…...

TsingtaoAI具身智能高校实训方案通过华为昇腾技术认证

日前,TsingtaoAI推出的“具身智能高校实训解决方案-从AI大模型机器人到通用具身智能”基于华为技术有限公司AI框架昇思MindSpore,完成并通过昇腾相互兼容性技术认证。 TsingtaoAI&华为昇腾联合解决方案 本项目“具身智能高校实训解决方案”以实现高…...

【Linux】线程池设计 + 策略模式

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 线程池 1-1 ⽇志与策略模式1-2 线程池设计1-3 线程安全的单例模式1-3-1 什么是单例模式1-3-2 单例模式的特点1-3-3 饿汉实现⽅式和懒汉实现⽅式1-3-4 饿汉…...

网络原理(一):应用层自定义协议的信息组织格式 HTTP 前置知识

目录 1. 应用层 2. 自定义协议 2.1 根据需求 > 明确传输信息 2.2 约定好信息组织的格式 2.2.1 行文本 2.2.2 xml 2.2.3 json 2.2.4 protobuf 3. HTTP 协议 3.1 特点 4. 抓包工具 1. 应用层 在前面的博客中, 我们了解了 TCP/IP 五层协议模型: 应用层传输层网络层…...

Python-链表数据结构学习(1)

一、什么是链表数据? 链表是一种通过指针串联在一起的数据结构,每个节点由2部分组成,一个是数据域,一个是指针域(存放下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思&#xff0…...

性能优化经验:关闭 SWAP 分区

关闭 SWAP 分区,特别是在性能敏感场景(如 Elasticsearch 服务)中,主要与 SWAP 的工作机制和对应用性能的影响有关。以下是详细原因: 1. SWAP 的工作机制导致高延迟 SWAP 是什么: SWAP 分区是系统将物理内存…...

SpringBoot小知识(2):日志

日志是开发项目中非常重要的一个环节,它是程序员在检查程序运行的手段之一。 1.日志的基础操作 1.1 日志的作用 编程期调试代码运营期记录信息: * 记录日常运营重要信息(峰值流量、平均响应时长……) * 记录应用报错信息(错误堆栈) * 记录运维过程数据(…...

java虚拟机——jvm是怎么去找垃圾对象的

JVM(Java虚拟机)通过特定的算法和机制来查找和识别垃圾对象,以便进行垃圾回收。以下是JVM查找垃圾对象的主要方法和步骤: 一、可达性分析法 JVM使用可达性分析法来识别垃圾对象。这种方法从一组称为“GC Roots”的对象作为起始点…...

Macos远程连接Linux桌面教程;Ubuntu配置远程桌面;Mac端远程登陆Linux桌面;可能出现的问题

文章目录 1. Ubuntu配置远程桌面2. Mac端远程登陆Linux桌面3. 可能出现的问题1.您用来登录计算机的密码与登录密钥环里的密码不再匹配2. 找不到org->gnome->desktop->remote-access 1. Ubuntu配置远程桌面 打开设置->共享->屏幕共享。勾选允许连接控制屏幕&…...

hadoop_HA高可用

秒懂HA HA概述HDFS-HA工作机制工作要点元数据同步参数配置手动故障转移自动故障转移工作机制相关命令 YARN-HA参数配置自动故障转移机制相关命令 附录Zookeeper详解 HA概述 H(high)A(avilable): 高可用,意味着必须有容错机制,不能因为集群故障…...

知名企业排名/seo知识是什么意思

环路概述 路由环路是指因配置不当或路由协议收敛时出错,导致数据包在两台或多台路由器里被来回转发,最后TTL耗尽,不能到达目的地的一种故障。 实验拓扑 今天我们先通过一个小实验来演示下简单的环路现象,实验拓扑如下(…...

新网站该如何做网站优化呢/网页设计用什么软件

项目地址 github.com/LJWLgl/Comm… 概述 开发常用工具类总结&#xff0c;如果对你有用欢迎star~ 导入项目 <dependency><groupId>io.github.ljwlgl</groupId><artifactId>common-util</artifactId><version>2.0.1</version> </d…...

邯郸移动网站建设公司/bing搜索引擎国内版

0 未初始化 1 open状态 2 send状态 3 返回部分内容 4 返回全部内容...

网站怎么分工做/最好用的搜索引擎排名

哈希表&#xff08;hash table&#xff09;也叫散列表&#xff0c;是一种非常重要的数据结构。许多缓存技术&#xff08;比如memcached&#xff09;的核心其实就是在内存中维护一张大的哈希表&#xff0c;本文会对java集合框架中的对应实现HashMap的实现原理进行讲解&#xff0…...

网站搭建怎么收费/百度推广客户端官方下载

google v8 Date 以double 类型储存从1970开始的毫秒数。 FILETIME 储存从1601年开始的 &#xff08;100纳秒&#xff09;数 1 void v8date_to_systemtime(v8::Handle<Value> dateVal,LPSYSTEMTIME st)2 {3 Local<Date> d Date::Cast(*dateVal);4 __int64 …...

网网站设计网/百度手机端推广

计算机比人脑更任劳任怨&#xff0c;让它们完成繁琐的重复事项&#xff0c;是解放人类双手和大脑的重要功能。Python也一样&#xff0c;我们可以用它的循环功能来处理程序或数据。在计算机程序中&#xff0c;循环是指周而复始地重复同样的步骤&#xff0c;一般有计数循环(重复一…...