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

Milvus向量数据库是什么?

简单来说,Milvus 是一款专门为处理海量向量数据而设计的开源向量数据库。它的核心目标是高效地存储、索引和检索向量。

为了更好地理解,我们把它拆解成几个部分:

1. 什么是“向量”?

在人工智能和机器学习领域,文本、图像、音频、视频等非结构化数据通常被转换为数学表示,即一系列数字,这就是向量(或称为“嵌入”,Embedding)。

  • 例如

    • 一段文字可以通过模型(如 BERT)转换为一个 768 维的向量。

    • 一张图片可以通过模型(如 ResNet)转换为一个 1024 维的向量。

    • 一段音频也可以被转换为一个特定维度的向量。

这些向量有一个关键特性:语义相近的数据,其对应的向量在向量空间中的距离也更近

2. Milvus 的核心功能:相似性搜索

Milvus 的核心工作就是快速地从海量的向量集合中,找到与目标向量最相似的 Top-K 个向量。这种操作称为近似最近邻搜索(Approximate Nearest Neighbor Search, ANNS)。

  • 举个例子:你有一张猫的图片,想从图库中找到所有包含猫的图片。

    1. 你的查询图片首先被AI模型转换为一个向量 V_query。

    2. Milvus 会计算 V_query 与图库中所有已存储图片向量的“距离”(如欧氏距离、余弦距离等)。

    3. 最后,返回距离最近(即最相似)的几张图片作为结果。

Milvus 的强大之处在于,它通过专门的索引(如 IVF_FLAT、HNSW、DISKANN 等)来加速这个搜索过程,使其能在毫秒级别从十亿甚至万亿级别的向量中返回结果,而无需进行暴力计算。

3. 为什么需要专门的向量数据库?(与传统数据库对比)

你可能会问:“为什么不能用传统的 MySQL、PostgreSQL 或 Elasticsearch 来做这个事?”

传统数据库是为处理结构化数据(如数字、字符串、日期)设计的,擅长精确匹配和范围查询。但它们在进行向量相似度搜索时效率极低,基本上是“暴力计算”,无法扩展到海量数据。

而 Milvus 是专为向量搜索而生的,它具有以下关键特性:

  • 高性能:支持多种高性能索引算法,优化了计算和存储,查询速度极快。

  • 高可扩展性:支持分布式部署,可以通过增加节点来轻松处理十亿、万亿级别的向量数据。

  • 开发者友好:提供了丰富的 API(Python、Java、Go等)、SDK 和工具(如 Attu:图形化管理界面),并与主流的AI生态系统(如 PyTorch、TensorFlow、LangChain)无缝集成。

  • 混合查询:除了向量搜索,还支持标量(结构化)数据过滤。例如:“在所有的图片向量中,查找与‘猫’最相似的,并且图片格式为‘jpg’、上传时间在‘2023年’之后的”。

  • 云原生:设计上支持容灾、高可用、易扩展,可以部署在 Kubernetes 上。

4. 主要应用场景

Milvus 是构建 AI 应用的基础设施,常见应用包括:

  • 相似性搜索:图片搜图片、视频搜视频、推荐系统(“猜你喜欢”)。

  • 问答机器人:作为 RAG(检索增强生成)系统的核心记忆体,从海量知识库中快速检索与问题相关的文档片段,提供给大语言模型(如 ChatGPT)来生成精准答案。

  • 化学分子分析:比对分子结构相似性。

  • 音频指纹识别:如 Shazam 听歌识曲功能。

核心架构简介(进阶理解)

Milvus 采用读写分离的架构,自 2.0 版本后主要包括四个组件:

  1. 接入节点(Access Node):系统的前端,负责接收客户端请求、验证身份、协调工作。

  2. 协调节点(Coordinator Node):系统的大脑,负责管理集群状态、负载均衡、任务调度等。

  3. 工作节点(Worker Node):系统的肌肉,真正执行数据读写、索引构建和查询任务。又分为:

    • 查询节点(Query Node):负责执行向量相似性搜索。

    • 数据节点(Data Node):负责接收、持久化写入的向量和标量数据。

  4. 对象存储(Object Storage):通常使用 MinIO、S3 等,用于持久化存储日志和向量数据文件,实现存储与计算分离。

总结

Milvus 本质上是一个专为 AI 时代设计的数据库,它擅长处理由非结构化数据转换而来的向量,并能以极快的速度进行相似性检索。它是构建推荐系统、智能问答、图像检索等高级 AI 应用不可或缺的底层引擎。

如果您想开始使用,可以访问其官网获取文档和代码:

  • 官网:Milvus | High-Performance Vector Database Built for Scale

  • GitHub:https://github.com/milvus-io/milvus

http://www.dtcms.com/a/355858.html

相关文章:

  • Active Directory Basics
  • UPAM(Unified Prompt Attack Model
  • 应急响应/windows权限维持/Linux权限维持
  • 虚拟机逃逸攻防演练:从攻击模拟到隔离漏洞防御实战
  • 机器学习回顾(二)——KNN算法
  • 【Cadence技巧】立创EDA/Altium/Allegro之间的封装转换
  • layout版图设计学习笔记2_工艺流程
  • 切入高潜市场,抢占行业先机!ES SHOW 2025展位预订火爆,10月28-30日共启增长新蓝海
  • php姓名三才五格api接口调用说明
  • 疯狂星期四文案网第53天运营日记
  • gdbserver远程调试和交叉编译gdb
  • Fuzzy Multimodal Learning for Trusted Cross-modal Retrieval(CVPR 2025)
  • OpenCV 图像操作进阶:像素、边界与融合技术
  • 数据结构青铜到王者第九话---二叉树(2)
  • 多语言与零样本语音识别新突破:基于发音特征分类的方法
  • 通过ETL工具,同步SQLserver数据至starrocks数据库
  • Autosar之DCM模块
  • 构建AI智能体:十六、构建本地化AI应用:基于ModelScope与向量数据库的文本向量化
  • Day14 Gorm框架学习(1)
  • 安装与环境搭建:准备你的 Electron 开发环境
  • leetcode 525 连续数组
  • 可改善能源利用水平、削减碳排放总量,并为可再生能源规模化发展提供有力支撑的智慧能源开源了
  • 计算机组成原理3-3-5:定点数的乘法运算——补码阵列乘法器
  • init.usb.configfs.rc的USB动态配置
  • 算法学习笔记:双指针_滑动窗口专题
  • STM32CubeMX 6.15.0 + CLion
  • 3.渗透-.IP地址-详解
  • AI批量抠图工具,无需付费,永久使用
  • 报错记录 Error: CUDNN_STATUS_BAD_PARAM; Reason: finalize_internal()
  • 仓颉编程语言青少年基础教程:输入输出