Java 向量化查询引擎与向量数据库 -- 知识铺
Milvus 向量数据库概览
第一章 概述
Milvus 是一个专为机器学习和深度学习领域设计的向量数据库,自2019年创建以来,其核心目标始终是为嵌入向量提供高效的存储、索引和管理功能。嵌入向量是由深度神经网络和其他机器学习模型生成的,它们能够将原始数据转换为数值向量,进而用于各种机器学习任务中。
存储对象:向量
Milvus 专注于存储这些嵌入向量。向量是多维空间中的点,它们通过数值来表示原始数据的特征。Milvus 通过这些向量,可以进行高效的相似性搜索和分析。
向量相似性分析
Milvus 的一个关键功能是能够通过计算两个向量之间的相似距离来分析它们之间的相关性。如果两个嵌入向量非常相似,这通常意味着它们所代表的原始数据源也是相似的。这种能力在诸如图像识别、自然语言处理等领域中非常有用。 Milvus 通过其强大的索引机制,使得用户能够快速检索出与查询向量最相似的向量,从而加速机器学习模型的训练和推理过程。
结论
Milvus 作为一个高性能的向量数据库,为机器学习社区提供了一个强大的工具,帮助开发者和研究人员更有效地管理和利用嵌入向量数据。
Milvus Bootcamp 简介
Milvus Bootcamp 是一个专注于使用 AI 技术处理非结构化数据的平台。通过神经网络,我们可以从图像、音频、视频等非结构化数据中提取特征向量,然后通过计算这些特征向量的距离(例如欧几里得距离或余弦相似度)来分析数据的相似性。Milvus Bootcamp 旨在向用户展示 Milvus 向量数据库的简便性和深度,帮助用户学习如何运行基准测试,构建相似性搜索应用,如聊天机器人、推荐系统、反向图像搜索、分子搜索、视频搜索、音频搜索等。
相关应用
以下是 Milvus 支持的一些关键应用领域:
- 图像相似性搜索:能够快速从庞大的数据库中检索出与查询图像最相似的图像。
- 视频相似度搜索:通过将视频的关键帧转换为向量,Milvus 能够实现近乎实时的数十亿视频的搜索和推荐。
- 音频相似度搜索:Milvus 可以快速查询大规模的语音、音乐、音效以及相似声音数据。
- 分子相似性搜索:Milvus 支持对特定分子进行快速的相似性搜索、子结构搜索或上层结构搜索。
- 推荐系统:构建个性化推荐系统,提高用户体验。
Milvus 设计理念Milvus 作为一个云原生的向量数据库,其设计上实现了存储与计算的分离,以增强系统的弹性和灵活性。Milvus 中的所有组件都是无状态的,这使得系统更加健壮和易于扩展。
官网链接Milvus Bootcamp 官网
系统架构概述
Milvus 系统由四个层次组成,每个层次具有独特的功能和角色。以下是各个层次的详细说明:
访问层访问层由一组无状态代理组成,它们作为系统的前端层和用户的接入点。
协调服务协调服务负责任务分配,是系统的大脑,确保工作节按照既定的指令执行操作。
工作节点工作节点相当于系统的手臂和腿,它们是执行器,根据协调服务的指令执行DML/DDL命令。
存储存储是系统的骨架,负责数据的持久化。它由元存储和日志组成。
了解更多有关Milvus系统架构的详细信息,请参阅体系结构概述。
开发者工具Milvus 提供了丰富的API和工具,以支持DevOps实践。
客户端库Milvus 提供了客户端库,允许开发者通过编程方式从应用程序代码中插入、删除和查询数据。
快速开始本章节将指导您如何快速安装并运行Milvus。
安装Milvus使用docker-compose安装Milvus Standalone的步骤如下:
第1步:下载配置文件下载milvus-standalone-docker-compose.yml
配置文件,并将其保存为docker-compose.yml
。
第2步:启动服务在包含docker-compose.yml
的目录中,使用docker-compose
命令启动所有服务,并让它们在后台运行。
第3步:查看容器展示当前通过docker-compose
编排并运行的所有容器。
注意事项请确保按照步骤操作,并根据需要查看相关文档和资源。
管理 Milvus 服务和数据
服务停止与数据删除若需停止 Milvus 服务并删除数据,请执行相应命令。
学习 Milvus
前提条件下载 PyMilvus 2.2.2。
3.1 连接管理#### 连接 Milvus 服务器Milvus 支持两个端口:19530(gRPC 默认端口)和 9091(RESTful API 端口)。
- 使用示例代码建立连接,需指定
alias
(别名)、host
(IP 地址)和port
(端口)。 - 确保连接建立后再进行操作。
- 最大连接数为 65,536。
断开 Milvus 服务器连接使用示例代码断开指定 alias
的连接。
3.2 集合管理集合必须包含主键字段和向量字段,主键支持 INT64 和 String 类型。
准备 Schema准备字段 schema,包括 FieldSchema
、CollectionSchema
和 collection_name
。
创建集合使用示例代码创建集合,可指定 using
(服务器别名)、shards_num
(碎片数)和 TTL(生存时间)。
修改集合可修改集合的 TTL。
核对集合信息检查集合是否存在,获取具体信息,列出所有集合。
删除集合使用示例代码删除集合。
集合别名管理创建、删除、更改集合别名。
加载集合将集合加载到内存中,以执行搜索和查询操作。
释放集合从内存中释放集合,减少内存使用。
3.3 分区管理#### 创建分区Milvus 允许创建分区以提高性能。
核对分区信息检查分区是否存在,列出所有分区。
删除分区使用示例代码删除指定 partition_name
的分区。
加载分区将分区加载到内存中,减少内存使用。
释放分区从内存中释放分区。
3.4 数据管理#### 插入实体准备数据并插入 Milvus,可指定 partition_name
。
删除实体使用布尔表达式删除实体,Milvus 返回已删除实体的 ID 列表。
3.5 索引管理#### 向量索引构建使用示例代码和索引参数构建向量索引,可加速向量相似性搜索。
标量索引构建从 Milvus v2.1.0 开始,可在标量字段上构建索引,以加快属性过滤。
删除索引使用示例代码删除索引。
3.6 搜索与查询#### 向量相似度搜索加载集合到内存,准备查询参数,执行向量查询,检查最相似向量,释放加载的集合。
混合搜索加载集合,执行带有属性过滤的向量搜索。
向量查询加载集合,执行基于布尔表达式的标量过滤向量查询。
3.7 相似性度量在 Milvus 中,使用相似性度量来衡量向量之间的相似性,选择合适的度量可以显著提高性能。
相似性度量类型
- 欧式距离(L2):最常用的距离度量,适用于连续数据。
- 内积(IP):比较非标准化数据或关注幅度和角度。
- 余弦相似度:使用两个向量之间的角度的余弦值来衡量相似性。
选择合适的相似性度量对于提高 Milvus 的分类和聚类性能至关重要。
(assets/image-20230530161651453.png)]")
其中,a = (a1, a2,…), an) 、b = (b1, b2,…, bn)是n维欧几里德空间中的两个点。
适用于连续性数据
内积(IP)
两个向量之间的内积定义如下:
(assets/image-20230530162501522.png)]")
其中A和B是向量。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240730/%E5%90%91%E9%87%8F%E5%8C%96%E7%9A%84%E6%9F%A5%E8%AF%A2%E5%BC%95%E6%93%8E-java-%E5%90%91%E9%87%8F%E6%95%B0%E6%8D%AE%E5%BA%93%E6%98%AF%E4%BB%80%E4%B9%88--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com