您现在的位置是:首页 > 编程 > 

Milvus:为存储和检索高维向量设计而生的 AI 时代数据库

2025-07-25 10:59:07
Milvus:为存储和检索高维向量设计而生的 AI 时代数据库 在当今的大数据时代,非结构化数据正以指数级的速度增长,包括文本、图像、音频和视频等形式。要在这些数据中进行快速高效的搜索和管理,传统的关系型数据库往往显得力不从心。这种背景下,Milvus 作为一款专门为大规模向量搜索设计的开源数据库,得到了广泛应用。最新版本 Milvus 2.4 进一步巩固了它在行业中的领先地位。什么是 Milvu

Milvus:为存储和检索高维向量设计而生的 AI 时代数据库

在当今的大数据时代,非结构化数据正以指数级的速度增长,包括文本、图像、音频和视频等形式。要在这些数据中进行快速高效的搜索和管理,传统的关系型数据库往往显得力不从心。这种背景下,Milvus 作为一款专门为大规模向量搜索设计的开源数据库,得到了广泛应用。最新版本 Milvus 2.4 进一步巩固了它在行业中的领先地位。

什么是 Milvus?

Milvus 是一种新型的开源向量数据库,专门为存储和检索高维向量设计。它被广泛应用于图像检索、自然语言处理 (LP)、推荐系统、视频分析和生物信息学等领域。Milvus 的核心是基于向量的近似最近邻(A,Approximate earest eighbor)搜索技术,通过高效的索引机制,使得在高维空间中检索相似数据的任务变得可行。

Milvus 2.4 是其最新版本,添加了许多新特性,并在性能和稳定性上取得了重要改进。其关键特点包括:

  1. 分布式架构的增强:支持 PB 级数据存储和查询。
  2. 多种索引类型:包括 IVF、HSW 和 DiskA 等,以满足不同场景的需求。
  3. 动态分区:支持在线增量数据更新,简化了流数据的处理。
  4. 简化部署与管理:通过 Helm 图表和 Kubernetes 的支持,实现了快速部署。
Milvus 2.4 的核心功能解析
分布式架构

Milvus 2.4 的分布式架构显著增强了其处理大规模数据的能力。它采用存储与计算分离的架构,通过分布式文件系统(如 MinIO 或 AWS S)实现数据的高效存储,并通过分布式计算框架(如 gRPC)来协调各节点之间的任务调度。

这种架构的优势在于:

  • 高扩展性:可以动态添加计算或存储节点以应对数据增长。
  • 容错性:即使某些节点出现故障,系统也能继续运行。
多种索引类型

在高维向量搜索中,索引的选择直接影响查询性能和准确性。Milvus 2.4 支持以下主要索引:

  • IVF(Inverted File System):适用于大数据集的批量查询。
  • HSW(Hierarchical avigable Small World):以更高精度和速度进行实时搜索。
  • DiskA:一种面向磁盘优化的索引,可处理超大规模数据。

通过灵活选择索引类型,用户可以根据具体应用场景在性能和资源消耗之间到平衡。

动态分区

动态分区是 Milvus 2.4 的另一项重大改进。它允许用户根据特定条件对数据进行分组,以便提高查询效率。例如,在图像检索中,可以根据图像所属的类别(如猫、狗、鸟等)创建分区,从而加快特定类别数据的检索速度。

真实世界案例:使用 Milvus 2.4 构建图像搜索系统

为了更好地理解 Milvus 的功能,我们来看一个实际案例:构建一个图像搜索系统,允许用户通过上传图片来查相似图片。

环境准备

在开始之前,需要安装以下工具:

  1. Docker 和 Docker Compose:用于运行 Milvus 容器。
  2. Python:用于客户端开发。
  3. Pymilvus:Milvus 的官方 Python SDK。

以下是 Docker Compose 文件的配置,用于快速启动 Milvus 服务:

代码语言:yaml复制
version: ".5"
services:
  milvus:
    image: milvusdb/milvus:v2.4.0
    container_name: milvus
    ports:
      - "1950:1950"
    environment:
      - DATA_PATH=/milvus/data
    volumes:
      - ./data:/milvus/data

启动服务后,可以通过以下命令检查是否正常运行:

代码语言:bash复制
docker-compose up -d
docker ps
数据预处理

图像需要先被转换为向量。这通常通过预训练模型(如 Reset)提取特征。

以下是一个使用 PyTorch 将图像转换为向量的示例代码:

代码语言:python代码运行次数:0运行复制
import torch
import  as models
import  as transforms
from PIL import Image

# 加载预训练的 Reset 模型
model = models.resnet50(pretrained=True)
model = Sequential(*list(())[:-1])  # 去掉最后的分类层
()

def image_to_vector(image_path):
    image = (image_path).convert('RGB')
    transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
        (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])
    image = transform(image).unsqueeze(0)
    with _grad():
        vector = model(image).flatten()
    return ()

vector = image_to_vector("example.jpg")
print(vector.shape)  # 输出: (2048,)
向量插入与检索

在 Milvus 中插入和检索向量的代码如下:

代码语言:python代码运行次数:0运行复制
from pymilvus import connecti, FieldSchema, CollectionSchema, DataType, Collection

# 连接到 Milvus
("default", host="localhost", port="1950")

# 定义集合 schema
fields = [
    FieldSchema(name="id", dtype=DataType.IT64, is_primary=True, auto_id=True),
    FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=2048)
]
schema = CollectionSchema(fields, description="Image search collection")

# 创建集合
collection = Collection("image_search", schema)

# 插入数据
import numpy as np
vectors = np.random.random((10, 2048)).astype(np.float2)
collection.insert([list(range(10)), vectors])

# 创建索引
index_params = {
    "index_type": "HSW",
    "metric_type": "L2",
    "params": {"M": 16, "efCtruction": 200}
}
_index("vector", index_params)

# 搜索
query_vector = vectors[0]
search_params = {"metric_type": "L2", "params": {"ef": 50}}
results = collection.search([query_vector], "vector", search_params, limit=)

for result in results[0]:
    print(f"ID: {result.id}, Distance: {result.distance}")
系统优化与部署

为了进一步优化性能,可以:

  • 使用 GPU 加速:通过 GPU 计算加快索引构建和查询速度。
  • 调整索引参数:根据数据分布调整 HSW 或 IVF 的参数。
  • 利用动态分区:按类别或时间分区数据以提高查询效率。
省流版

Milvus 2.4 作为一款面向高维向量数据的分布式数据库,在性能、可扩展性和易用性上都达到了一个新的高度。无论是图像搜索、推荐系统,还是更复杂的生物信息学分析,Milvus 都能提供强大的支持。

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1200994.html

相关标签:无
上传时间: 2025-07-23 21:25:11
留言与评论(共有 14 条评论)
本站网友 韩德胜
6分钟前 发表
Milvus 作为一款专门为大规模向量搜索设计的开源数据库
本站网友 整装待发
9分钟前 发表
其关键特点包括:分布式架构的增强:支持 PB 级数据存储和查询
本站网友 bb霜怎么用
3分钟前 发表
其关键特点包括:分布式架构的增强:支持 PB 级数据存储和查询
本站网友 深房网
29分钟前 发表
search_params
本站网友 新乐论坛
12分钟前 发表
milvus ports
本站网友 如东租房网
17分钟前 发表
/milvus/data启动服务后
本站网友 齐齐哈尔二手房
14分钟前 发表
它被广泛应用于图像检索
本站网友 虚拟账户
9分钟前 发表
它被广泛应用于图像检索
本站网友 马爹利xo干邑白兰地
20分钟前 发表
schema) # 插入数据 import numpy as np vectors = np.random.random((10
本站网友 双牌石
30分钟前 发表
Milvus 2.4 支持以下主要索引:IVF(Inverted File System):适用于大数据集的批量查询
本站网友 余杭房屋出租
30分钟前 发表
0.225])
本站网友 王贻芳
2分钟前 发表
(2048
本站网友 不孕不育检查
0秒前 发表
最新版本 Milvus 2.4 进一步巩固了它在行业中的领先地位