Milvus中那些年重要的基本概念

        Milvus是一款开源的云原生向量数据库,专为海量向量数据的存储、检索和管理而设计。它支持实时的向量相似度搜索,适用于各种AI和机器学习应用场景。以下是Milvus的一些基本概念:

非结构化数据

        非结构化数据是指那些不遵循特定数据模型或格式、无法在传统关系型数据库中轻松存储的数据。这类数据包括文本、图像、音频和视频等,它们通常是自由形式的,包含丰富的信息,但也更加复杂。

        在Milvus中,非结构化数据通过特征提取转换为向量形式,即每个数据点被转换为数值向量,这些向量能够在多维空间中表示原始数据的特征。例如,一张图片可以通过深度学习模型转换为一个特征向量,该向量捕捉了图片的关键特征,如颜色、形状和纹理。

        Milvus作为一个向量数据库,专门用于存储和检索这些向量。它利用先进的索引策略,如倒排索引(Inverted Index)和HNSW(Hierarchical Navigable Small World),来快速检索相似的向量,从而找到与查询条件最匹配的非结构化数据。

        简而言之,Milvus将非结构化数据的复杂性转化为向量空间中的简单性,使得这些数据可以通过向量相似度进行高效的搜索和分析。这对于实现基于内容的检索(CBIR)、推荐系统、自然语言处理等应用至关重要。

特征向量(Embedding Vector)

       Milvus是一款开源的向量数据库,支持TB级向量的增删改操作和近实时查询,集成了多种向量索引库,提供了一整套简单直观的API。 特征向量是将非结构化数据转换成的连续向量,通常由浮点数或二进制数数组组成。这些向量可以用于计算数据之间的相似度。

  1. 向量定义:向量是具有一定大小和方向的量,可以理解为一串数字的集合,类似于一行多列的矩阵。例如:[2,0,1,9,0,6,3,0]。
  2. 特征向量:特征向量包含事物的重要特征,常见的特征向量如RGB色彩,其中每种颜色通过红、绿、蓝三种颜色的比例得到。
  3. 优势:特征向量能够高效准确地描述多媒体内容,对于机器学习和模式识别领域至关重要。
  4. 应用领域:广泛应用于图像识别、语音识别、垃圾邮件过滤等多个领域。

向量相似度检索

在Milvus中,向量相似度检索是一项核心功能,它允许用户在海量向量数据中快速找到与查询向量最相似的数据。以下是详细描述:

  1. 加载集合:在进行搜索之前,需要将包含向量数据的集合(Collection)加载到内存中。这是因为Milvus中的所有搜索和查询操作都在内存中执行。
  2. 准备搜索参数:根据搜索场景,定义搜索参数。例如,可以指定使用欧几里得距离(L2)来计算向量之间的距离,并从索引中检索最近的向量。
  3. 执行搜索:使用定义好的搜索参数,Milvus将计算查询向量与集合中向量之间的距离,并返回最相似的结果。搜索可以是简单的向量搜索,也可以是混合搜索,后者结合了标量字段过滤。
  4. 搜索结果:Milvus返回的搜索结果包括最相似的向量的ID和它们的相似度分数。用户可以根据这些信息进一步处理或分析数据。

Collection(集合)

        在Milvus中,Collection(集合)是存储和管理向量数据的基本单位,类似于关系型数据库中的表(table)。以下是关于Milvus中Collection的详细描述:

  • Collection的结构:每个Collection由多个字段(Field)组成,这些字段可以包含向量字段(用于存储向量数据)和标量字段(如数字、文本等用于存储描述性数据或元数据)。

  • 创建Collection:创建一个Collection时,需要定义其结构,包括字段的名称、类型和其他属性。例如,可以创建一个包含书籍ID、书名、单词数量和书籍简介向量的Collection。在创建新Collection时,Milvus会创建一个默认分区 _default

  • Collection的操作:用户可以对Collection执行各种操作,如插入数据、建立索引、搜索和删除等。

  • 分区和分片:为了提高数据管理的灵活性和搜索的效率,Collection可以被划分为多个分区(Partition)。此外,Collection还可以配置分片(Shard),以支持大规模分布式部署。

  • 索引和搜索:为了加速向量数据的检索,Milvus允许用户在Collection上创建索引。创建索引后,可以使用向量相似度搜索功能来快速找到与查询向量最相似的数据。

  • 扩展性:Milvus的设计支持高扩展性,可以容纳数千个Collection,满足大数据量和多租户场景下的需求。

  • 示例代码:以下是一个使用Python SDK创建Collection的示例代码:

from pymilvus import CollectionSchema, FieldSchema, DataType

book_id = FieldSchema(
  name="book_id",
  dtype=DataType.INT64,
  is_primary=True,
)

book_name = FieldSchema(
  name="book_name",
  dtype=DataType.VARCHAR,
  max_length=200,
)

word_count = FieldSchema(
  name="word_count",
  dtype=DataType.INT64,
)

book_intro = FieldSchema(
  name="book_intro",
  dtype=DataType.FLOAT_VECTOR,
  dim=2
)

schema = CollectionSchema(
  fields=[book_id, book_name, word_count, book_intro],
  description="Test book search"
)

collection_name = "book"

         这个示例展示了如何定义一个Collection的模式,包括主键字段、标量字段和向量字段。在实际应用中,向量字段通常具有更高的维度。Milvus的Collection是处理和检索向量数据的强大工具,它为各种AI和ML应用提供了灵活、高效的数据管理和搜索能力。

        Milvus的架构设计上,采用了存储与计算分离的模式,所有组件都是无状态的,以增强系统的弹性和灵活性。它包括接入层、协调服务、执行节点和存储层,每个层次都可以独立扩展和容灾。

        Milvus的应用场景非常广泛,包括但不限于图像搜索、推荐系统、自然语言处理和生物信息学等领域。如果您想了解更多关于Milvus的信息,可以访问其官方文档或社区资源。

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七夜zippoe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值