立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者:厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅

背景介绍

行业

  • 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命,致力于洞悉达人变现需求和痛点,提供达人选高佣、稳变现、速响应的选品服务。

业务特征

  • 个性化推荐:利用大数据和人工智能算法,根据用户的兴趣和行为提供定制化的产品推荐。

  • 数据驱动:通过分析用户和市场趋势,优化推荐策略,提升用户满意度。

  • 精准营销:帮助商家通过精准的用户画像进行有效的产品推广。

  • 高效搜索:提供强大的搜索功能,帮助用户快速找到所需产品。

产品原有架构痛点

依赖传统搜索方案的向量检索进行相似商品推荐的痛点

  • 性能瓶颈:在处理高维向量时,性能可能不如专用的向量数据库。

  • 存储效率:高维向量的存储效率较低,占用较多磁盘空间。

  • 复杂性:需要额外配置和插件才能支持向量检索。

  • 更新成本:频繁更新向量数据可能导致索引重建,影响性能。

  • 资源消耗:内存和计算资源消耗较大,尤其在大规模数据集上。

Spark集群原架构的痛点

  • 集群稳定性:需要自行监控和维护集群,可能面临稳定性问题。

  • 性能优化:缺乏类似Fusion的加速技术,可能导致任务执行速度较慢。

  • 运维负担:需要手动管理集群,包括配置、监控和故障排除。

  • 资源利用率:资源分配不够灵活,可能导致资源浪费。

  • 费用问题:即使在空闲时也可能产生费用,导致成本增加。

  • 复杂性:需要配置和管理底层基础设施,增加了复杂性。

为了应对新的业务挑战,蝉妈妈选择与阿里云合作,利用其 Serverless Spark & Milvus,构建了符合业务场景和分析师习惯的工程解决方案。

为什么选择阿里云 Serverless Spark&Milvus

完善的周边服务:提供全面的监控和告警功能,能够实时跟踪任务状态和性能,及时发现并解决问题。

托管弹性伸缩功能:自动根据工作负载调整资源,减少手动干预。

集群稳定性:由云服务商管理,提供高稳定性和可靠性。

弹性资源管理:按需分配资源,避免资源浪费。

按需计费:仅为实际使用的资源付费,降低成本。

快速启动:无需预配置资源,能够快速启动和运行任务。

自动扩展:根据工作负载自动调整资源,提升灵活性。

性能优化:Serverless Spark通过技术如Fusion加速任务执行,提高效率,降低成本;Milvus支持并保证超大规模向量检索的性能。

技术方案设计

架构图

业务场景介绍

在Serverless Spark中,通过周期性的离线任务,从StarRocks数据库中提取商品数据。这些数据包含商品的基本信息,如商品ID、名称、描述等。接着,使用Serverless Spark的计算能力,调用机器学习模型服务,将商品标题转换为向量表示。生成的向量数据与其他商品信息结合后,批量写入阿里云Milvus向量数据库。Milvus负责高效存储和管理这些向量数据,并支持快速相似性搜索。通过构建数据接口,Milvus中的数据可以对外提供查询服务,用户可以通过该接口输入一个商品或其特征,系统将返回相似商品的列表。这种架构支持大规模、低延迟的相似商品检索,适用于推荐系统、个性化营销等应用场景。

关键服务组件

Serverless Spark

EMR Serverless Spark 是一款面向 Data+AI 的高性能 Lakehouse 产品。它为企业提供了一站式的数据平台服务,包括任务开发、调试、调度和运维等,极大地简化了数据处理和模型训练的全流程。同时,它100%兼容开源 Spark 生态,能够无缝集成到客户现有的数据平台。使用 EMR Serverless Spark,企业可以更专注于数据处理分析和模型训练调优,提高工作效率。

向量检索服务 Milvus 版

阿里云向量检索服务Milvus版是一款云原生、全托管的向量检索引擎,100%兼容开源Milvus,支持自建Milvus集群无缝迁移上云。具备易⽤性、可⽤性、安全性、低成本与⽣态优势,能提供超大规模向量数据的相似性检索服务,广泛应用于多模态检索、RAG、大模型AI等场景。

迁移后的收益

Serverless Spark

  • 性能:离线任务耗时减少40%,核心报表更早产出。

  • 稳定性:任务稳定性显著提高,失败率降低 80%。

  • 运维灵活性:根据业务需求自动调整扩充计算资源。

  • 性价比:真正的按量付费,不使用时没有资源消耗;提供多种资源包选择,进一步降低成本。

Milvus

  • 降本:与传统搜索方案相比,阿里云Milvus 实现向量检索的成本降低了 75%。

  • 提效:作为专业级向量数据库,在处理高维向量时,检索性能显著提升。

  • 业务支持:Milvus 能支持更大规模的数据读取和写入,覆盖了商品范围更广,查询响应速度更快。

后续期待

希望 Serverless Spark 能够全面兼容 Spark Launcher 这一便捷方式提交任务,支持任务无缝迁移至全托管环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android显示学习笔记本

根据博客 Android-View 绘制原理(01)-JAVA层分析_android view draw原理分析-CSDN博客 提出了我的疑问 Canvas RenderNode updateDisplayListDirty 这些东西的关系 您的理解在基本方向上是对的,但让我详细解释一下 Android 中 updateDisplayListDirty、指令集合、…

JavaWeb学习打卡-Day4-会话技术、JWT、Filter、Interceptor

会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求…

让数据优雅落地:用 serde::Deserialize 玩转结构体实体

前言 想象一下,服务器突然飞来一堆 JSON 数据,就像一群无头苍蝇冲进办公室,嗡嗡作响,横冲直撞。此刻,你的任务,就是把这群“迷路数据”安置进正确的格子里,分门别类,秩序井然,不混不乱,不漏一只。 好在 Rust 早就为我们备好瑞士军刀:serde::Deserialize。它不仅刀…

Virtio 技术解析 | 框架、设备实现与实践指南

本文为 “Virtio” 相关文章合辑。 略作重排,如有内容异常,请看原文。 Virtio 简介(一)—— 框架分析 posted 2021-04-21 10:14 Edver 1. 概述 在传统设备模拟中,虚拟机内部设备驱动完全不知自身处于虚拟化环境&a…

云计算赋能质检LIMS的价值 质检LIMS系统在云计算企业的创新应用

在云计算技术高速发展的背景下,实验室信息化管理正经历深刻变革。质检LIMS(实验室信息管理系统)作为实验室数字化转型的核心工具,通过与云计算深度融合,为企业提供了高弹性、高安全性的解决方案。本文将探讨质检LIMS在…

【win11 安装WSL2 详解一遍过!!】

共有五个步骤,按部就班的做,保准成功! 1. 打开开发者模式 设置->系统->开发者模式 2. 打开linux的win子系统 找到控制面板-程序和功能-启用或关闭Windows功能,选中“适用于Linux的Windows子系统”,“虚拟机…

Godot开发2D冒险游戏——第三节:游戏地图绘制

一、初步构建游戏地图 在游戏场景当中添加一个新的子节点:TileMapLayer 这一层称为瓦片地图层 根据提示,下一步显然是添加资源 为TileMapLayer节点添加一个TileSet 将地板添加进来,然后选择自动分割图集 自定义时要确保大小合适 让Godot自…

Django创建的应用目录详细解释以及如何操作数据库自动创建表

创建好Django项目后 如果要创建 python manage.py startapp 模块名模块 使用 我创建一个system模块后是 注意:urls是我自己建的文件 1.migrations目录 存放数据库的迁移文件,当models.py中模型定义发生变化时,通过迁移操作能同步数据库结构变化 __init__ 使该目录…

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…

STM32 串口USART

目录 常见的通信方式 串行通信和并行通信 全双工,半双工和单工通信 同步通信和异步通信 通信速率 常见的通信协议 串口基础知识 电平特性 串口传输协议 STM32F103的USART资源 端口引脚 数据寄存器单元 发送接收控制单元 实现串口发送 printf…

Taro on Harmony :助力业务高效开发纯血鸿蒙应用

背景 纯血鸿蒙逐渐成为全球第三大操作系统,业界也掀起了适配鸿蒙原生的浪潮,用户迁移趋势明显,京东作为国民应用,为鸿蒙用户提供完整的购物体验至关重要。   去年 9 月,京东 AP…

gem5-gpu教程05 内存建模

memory-modeling|Details on how memory is modeled in gem5-gpu gem5-gpu’s Memory Simulation gem5-gpu在很大程度上避开了GPGPU-Sim的单独功能模拟,而是使用了gem5的执行中执行模型。因此,当执行存储/加载时,内存会被更新/读取。没有单独的功能路径。(顺便说一句,这…

【python】lambda用法(结合例子理解)

目录 lambda 是什么? 为什么叫 lambda? 语法 举例 1. 最简单的 lambda:单个数字处理 2. 用 lambda 排序一组字符串(按照长度排序) 3. 在列表里找出绝对值最小的数字 4. 给 map() 用 lambda 5. 组合使用:筛选出偶数 lambda 和 def 的对比 lambda 适合用在什么地…

【ROS2】机器人操作系统安装到Ubuntu22.04简介(手动)

主要参考: https://book.guyuehome.com/ROS2/1.系统架构/1.3_ROS2安装方法/ 官方文档:https://docs.ros.org/en/humble/Installation.html 虚拟机与ubuntu系统安装 略,见参考文档 ubutun换国内源,略 1. 设置本地语言 确保您有…

C 调用 C++:extern “C” 接口详解与实践 C/C++混合编译

C 调用 C:extern “C” 接口详解与实践 核心问题在于 C 编译器会对函数名进行“修饰”(Name Mangling)以支持函数重载等特性,而 C 编译器则不会。此外,C 语言本身没有类、对象等概念。为了解决这个问题,我…

汽车制造行业如何在数字化转型中抓住机遇?

近年来,随着新一轮科技革命和产业变革的深入推进,汽车制造行业正迎来一场前所未有的数字化转型浪潮。无论是传统车企还是新势力品牌,都在积极探索如何通过数字化技术提升竞争力、开拓新市场。那么,在这场变革中,汽车制…

k8s学习记录(五):Pod亲和性详解

一、前言 上一篇文章初步探讨了 Kubernetes 的节点亲和性,了解到它在 Pod 调度上比传统方式更灵活高效。今天我们继续讨论亲和性同时Kubernetes 的调度机制。 二、Pod亲和性 上一篇文章中我们介绍了节点亲和性,今天我们讲解一下Pod亲和性。首先我们先看…

HarmonyOS:Navigation实现导航之页面设置和路由操作

导读 设置标题栏模式设置菜单栏设置工具栏路由操作页面跳转页面返回页面替换页面删除移动页面参数获取路由拦截 子页面页面显示类型页面生命周期页面监听和查询 页面转场关闭转场自定义转场共享元素转场 跨包动态路由系统路由表自定义路由表 示例代码 Navigation组件适用于模块…

雪花算法

目录 一、什么是雪花算法 二、使用雪花算法 ​三、使用UUID 使用自增主键是数据库中常用的唯一标识,今天尝试使用mybatisplus来实现三种方式的主键ID 使用起来也很简单 用注解指定一下使用那种方式的主键 一、什么是雪花算法 一种特殊的算法可以计算得到一个唯…

HarmonyOs @hadss/hmrouter路由接入

参考文档:官方文档 在根目录oh-package.json5配置 {"dependencies": {"hadss/hmrouter": "^1.0.0-rc.11"} }加入路由编译插件 hvigor/hvigor-config.json文件 {"dependencies": {"hadss/hmrouter-plugin": &…