阿里云 Milvus 轻松实现文搜图&图搜图

在开始部署之前,先来介绍一下什么是阿里云Milvus?

阿里云Milvus

Milvus是一款云原生开源向量检索引擎,基于Faiss、Annoy、HNSW等知名库构建,并进行了优化,实现了高可用、高性能、易扩展的特性,适于处理海量向量数据的实时召回。它包含了数据分区分片、持久化、增量摄取、混合查询等高级功能,同时支持time travel操作,提供了直观的API和多语言SDK,适用于推荐系统、图像检索、视频分析、自然语言处理等多个AI领域。
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。

阿里云 Milvus 轻松实现文搜图&图搜图

这里提供了一个基于阿里云 Milvus 轻松实现文搜图&图搜图 的方案部署,通过Milvus 解决多模态数据检索难题。

方案背景

高性能检索能力“断层”:
非专业向量数据库产品在应对多模态、高维度、大规模特征向量的相似性检索任务时,存在检索性能弱、索引构建慢及并发能力差等短板,难以满足智能检索场景的高性能与扩展性要求。
传统向量检索方案“性价比失衡”:
传统向量检索系统多依赖 Faiss + Redis 拼装或集成向量插件,架构耦合高、扩展困难,海量数据下同步与更新频繁,运维压力大,难撑业务快速迭代与高并发场景。
Milvus 让多模态搜索更高效:
Milvus 赋能高效多模态搜索,内置高性能、可扩展的向量检索能力,原生支持图像、文本、音频等多模态数据的一体化管理与实时检索,为智能推荐、内容理解等场景提供强力支撑。

方案介绍

本方案基于阿里云向量检索服务 Milvus 版,结合阿里云百炼模型服务的多模态语义理解能力,构建高效、灵活的搜索系统,轻松支持文搜图、图搜图、跨模态检索等典型应用。通过 Serverless AI 应用开发平台 Function AI 部署至函数计算,可将模型服务一键部署至函数计算,实现快速上线、自动扩缩容与全托管运维,显著降低部署与运营成本,助力企业聚焦核心业务创新。
方案架构图如下:
在这里插入图片描述

应用场景

既然解决方案是文搜图&图搜图方向,那么主要的应用场景就是图像相似性检索系统,支持以图搜图、视频审核、医学影像辅助诊断等;以及对海量文本进行向量存储与语义检索,应用于智能问答、法律文书匹配、舆情分析等场景,提升搜索效率与理解能力;同时也可以广泛用于电商、视频平台和内容社区,提升转化率与用户体验。
在这里插入图片描述

部署操作

下面我们可以直接点击部署方案:https://www.aliyun.com/solution/tech-solution/milvus-ai 页面的【立即部署】进入部署操作页面
在这里插入图片描述

资源准备

在开始部署前,需要先开通好需要的资源。
登录 阿里云百炼大模型服务平台 ,根据页面提示签署阿里云百炼服务协议,然后单击页面 顶部 的 【立即开通】 按钮,并按照提示进行开通。
登录 函数计算服务控制台,根据页面提示完成开通,开通后,需要完成阿里云服务授权。
如果是首次访问阿里云 Milvus 管理控制台,则需先完成相关依赖权限的授权。登录 阿里云 Milvus 管理控制台,根据页面提示完成授权。
在这里插入图片描述

获取百炼API-KEY

登录 阿里云百炼大模型服务平台 ,点击顶部的【应用】切换菜单到【API-Key】创建并复制API-KEY 备用
在这里插入图片描述

创建专有网络VPC和交换机

登录专有网络管理控制台。在左侧导航栏,单击【专有网络】。在顶部菜单栏,选择【华东1(杭州)】地域。在专有网络页面,单击【创建专有网络】。
在创建专有网络页面,配置1个专有网络和1台交换机。在配置交换机时,请确保其所在的可用区内的相关资源均处于可用状态,以保证后续操作的顺利进行。
在这里插入图片描述

创建阿里云Milvus实例

登录阿里云 Milvus 管理控制台。创建阿里云向量检索服务 Milvus 版实例。在左侧导航栏,选择 【Milvus 实例】。在顶部菜单栏,选择【华东1(杭州)】地域。在实例列表页面,单击【创建实例】,
在这里插入图片描述
在购买页面按照以下配置完成实例创建。未提及配置使用默认值即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在页面右下角,单击【立即购买】,然后进入确认订单页面,接着单击【立即开通】以完成购买。
在这里插入图片描述
到这里,阿里云 Milvus 实例创建成功。下面继续创建数据库。
在阿里云Milvus 控制台 单击 【Milvus 实例】。在Milvus 实例页面找到本次创建的目标实例,待实例状态变为运行中后,
在这里插入图片描述
单击【实例 ID/名称】,进入实例详情页面。在实例详情页面,单击安全配置页签,单击【开启公网】,在弹出的窗口中配置公网访问名单。
在这里插入图片描述
在配置完成符合要求的公网访问白名单之后,等待系统进行升级。升级成功之后,即可单击右上角【Attu Manager】按钮进入 Attu 登录页面。
在这里插入图片描述
在 Attu 登录页面,打开认证开关,输入 用户名 和 密码,单击 【连接按钮】 即可登录至 Attu 管理页面
在这里插入图片描述
在 Attu 管理页面,单击左侧的 图标,进入数据库管理页面,单击【+创建数据库】,在弹出的对话框中,输入数据库名称 test_db,单击 【创建】
在这里插入图片描述
数据库创建完成后如图
在这里插入图片描述

部署应用

请点击 前往部署 打开已经提供的函数计算应用模板,参考下表进行参数配置,其他参数选择默认配置,然后单击部署项目,最后在弹出面板中单击确认部署,部署预计等待 3~5 分钟
在这里插入图片描述
在这里插入图片描述
完成部署操作。

方案验证

进入项目部署详情页,按照下图找到访问地址,点击访问地址,即可打开示例应用
在这里插入图片描述
在左侧【创建数据】模块中,选择【数据导入】页签,上传提前准备好的测试数据。
在这里插入图片描述
选择【文本搜索】页签,在文本框中输入 芒果 并将查询数量改为3,随后点击【搜索】按钮进行查询
在这里插入图片描述
选择【图片搜索】页签,在上传区域上传 Lichi.jpg 并将查询数量改为3,随后点击【搜索相似商品】
在这里插入图片描述

方案总结

到这里,整个基于 阿里云 Milvus 轻松实现文搜图&图搜图 的方案部署就算完成了,整个部署过程按照解决方案的步骤逐步操作即可,操作过程中不会有太大的难度,小白新手也可以轻松部署实现。这里需要注意的是,整个部署操作过程步骤比较多,操作时需要仔细按照文档进行,不要忽略一些认为不重要的步骤。在解决方案部署完成验证后,对于不再使用的情况,可以选择释放资源以节省资源损耗和持续的扣费。
对于文搜图&图搜图的应用场景还是很广的,生活中每天都要接触的就是电商场景了。Milvus以其高效处理多模态数据(如图像、文本等)的能力,支持从海量数据中迅速找到与用户兴趣匹配的内容,让Milvus真正化身为你平台上的“AI读心术大师”。“AI读心术大师”可能有些夸张,但是针对非结构化数据检索中存在的检索性能弱、扩展能力有限等问题,阿里云 Milvus 作为专业向量数据检索引擎,专注于高效管理与检索图像、文本、音频、视频等多模态特征向量,结合百炼提供从数据嵌入到相似性搜索的全栈能力,这点是毋庸置疑的。

<think> 我们正在讨论Milvus向量数据库在像()任务中的评估方法。由于用户的问题聚焦于如何评估Milvus任务中的结果,我们需要考虑信息检索和像检索中常用的评估指标。 通常,评估一个检索系统的效果,可以使用以下指标: 1. 准确率(Precision)和召回率(Recall) 2. F1分数(F1-Score) 3. 平均精度均值(mAP, mean Average Precision) 4. 首位命中率(Top-1 Accuracy) 5. 前k个命中率(Top-k Accuracy) 6. 归一化折损累积增益(NDCG, Normalized Discounted Cumulative Gain) 在场景中,我们通常有一个查询本(text query),然后系统返回一组相关的像。评估时需要有一个标注好的数据集,即每个查询本对应一组相关的像(ground truth)。 具体到Milvus,因为它是一个向量数据库,我们通过将本和像都表示为向量,然后使用向量相似度索(如余弦相似度)来检索。因此,评估方法与其他向量检索系统的评估方法是通用的。 步骤: 1. 准备数据集:包括查询本集合、像集合,以及每个查询本对应的相关像列表(即标注信息)。 2. 将查询本通过本编码器(如BERT)转换为向量,像通过像编码器(如ResNet)转换为向量,并存入Milvus中(像向量存入,同时建立索引)。 3. 对于每个查询本,用Milvus进行相似度索,得到前k个最相似的像(top-k results)。 4. 根据标注信息,计算评估指标。 下面我们详细说明几个关键指标的计算方法: 1. **准确率(Precision)**:在返回的前k个结果中,相关像所占的比例。 公式:$$ Precision@k = \frac{\text{前k个结果中相关的像数量}}{k} $$ 2. **召回率(Recall)**:在返回的前k个结果中,相关像占整个标注的相关像总数的比例。 公式:$$ Recall@k = \frac{\text{前k个结果中相关的像数量}}{\text{该查询对应的所有相关像总数}} $$ 3. **F1分数(F1-Score)**:准确率和召回率的调和平均数。 公式:$$ F1@k = 2 \times \frac{Precision@k \times Recall@k}{Precision@k + Recall@k} $$ 4. **平均精度(Average Precision, AP)**:对每个查询,计算不同召回率水平下的准确率的平均值。具体来说,我们计算前k个结果中,每次遇到一个相关像时的准确率,然后求平均。最后,对所有查询的平均精度再求平均得到mAP。 公式:对于一个查询,$$ AP = \frac{\sum_{k=1}^{n} (Precision@k \times rel_k)}{\text{相关像总数}} $$,其中$rel_k$表示第k个位置是否相关(相关为1,否则为0),n为返回的结果总数(通常我们取一个固定的k,比如k=10或20)。然后对所有查询的AP求平均得到mAP。 5. **首位命中率(Top-1 Accuracy)**:返回的第一个结果就是相关的像的比例(只考虑第一个结果)。 6. **归一化折损累积增益(NDCG)**:考虑了结果列表中相关像的位置和排序顺序。相关像排得越靠前,得分越高。 在实际评估中,我们通常使用多个指标综合评估。其中,mAP是像检索领域最常用的指标。 另外,Milvus本身提供了一些性能指标(如查询延迟、吞吐量)用于评估系统性能,但用户问题关注的是索结果的质量(即效果评估),因此我们主要关注上述效果指标。 实施建议: - 使用标准数据集进行测试,例如Flickr30k、MS-COCO等,这些数据集已经提供了本描述和对应像的关联标注。 - 使用标准的本编码器和像编码器,如CLIP模型(它可以将本和像映射到同一个向量空间),这样可以直接用本向量去像向量。 总结:评估Milvus任务的表现,主要是准备标注数据集,进行向量检索,然后计算准确率、召回率、mAP等指标。 以下是生成的相关问题: §§相关问题§§ 1. 在Milvus中如何设置索引参数以优化的准确率? 2. 除了mAP,还有哪些指标适合评估任务? 3. 如何利用Milvus进行大规模系统的性能评估(包括效果和效率)? 4. 能否举例说明在Milvus中计算任务mAP的具体步骤? </think> ### Milvus 向量匹配结果的评估方法 评估 Milvus像()任务的效果主要涉及以下核心指标和方法: #### 1. **基础检索指标** - **召回率(Recall@K)** 衡量系统在返回的前 K 个结果中包含相关像的比例: $$ \text{Recall@K} = \frac{\text{相关像出现在前 K 结果中的次数}}{\text{总相关像数}} $$ 例如 K=10 时召回率越高,说明漏检越少[^1]。 - **准确率(Precision@K)** 评估前 K 个结果中相关像的比例: $$ \text{Precision@K} = \frac{\text{前 K 结果中相关像数}}{K} $$ - **平均精度均值(mAP)** 综合指标,考虑相关像的排序位置: $$ \text{AP} = \sum_{k=1}^{K} (P@k \times \text{rel}(k)) \times \frac{1}{\text{相关像总数}} $$ 其中 $\text{rel}(k)=1$ 表示第 k 位结果相关。对所有查询的 AP 取平均得 mAP。 #### 2. **排序质量指标** - **NDCG(归一化折损累积增益)** 评估结果列表的排序质量,考虑相关性的分级(如强相关/弱相关): $$ \text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}} $$ DCG(折损累积增益)的计算: $$ \text{DCG@K} = \sum_{i=1}^{K} \frac{2^{\text{rel}_i} - 1}{\log_2(i+1)} $$ #### 3. **鲁棒性指标** - **Mean Reciprocal Rank(MRR)** 衡量首个相关结果出现的位置: $$ \text{MRR} = \frac{1}{N} \sum_{i=1}^{N} \frac{1}{\text{rank}_i} $$ $\text{rank}_i$ 表示第 i 个查询的首个相关结果排名。 #### 4. **评估流程** 1. **数据准备** - 构建标注数据集(如 COCO 或 Flickr30K),包含配对标签。 - 使用本编码器(如 BERT)和像编码器(如 ResNet)生成向量。 2. **Milvus 操作** ```python # 伪代码示例:Milvus 评估 from pymilvus import connections, Collection connections.connect() collection = Collection("image_text_db") # 包含像向量的集合 # 本查询向量化 text_vector = text_encoder.encode("一只橘猫在沙发上") # 检索 top-K 相似像 results = collection.search( data=[text_vector], anns_field="image_vector", param={"metric_type": "IP", "params": {"nprobe": 10}}, limit=20 ) ``` 3. **结果评估** - 对比返回的像 ID 与标注数据中的相关像 ID。 - 计算 Recall@K、mAP 等指标(可用 PyRetrieval 等工具自动计算)。 #### 5. **优化方向** - **向量对齐**:使用 CLIP 等跨模态模型统一本/像向量空间。 - **混合检索**:结合 Milvus 的标量过滤(如时间、类别)提升精度。 - **参数调优**:调整 `nprobe`(索广度)或索引类型(如 HNSW)。 > **案例**:在 COCO 数据集上,优化后的 Milvus 系统可实现 mAP@20 > 0.85(使用 CLIP 向量)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

csdn565973850

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

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

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

打赏作者

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

抵扣说明:

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

余额充值