作者:陈铨,货拉拉大数据技术与产品部高级大数据工程师

首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 “老纪的技术唠嗑局”,会持续更新和 #数据库、#AI、#技术架构 相关的各种技术内容。欢迎感兴趣的朋友们关注!

货拉拉成立于2013年,成长于粤港澳大湾区,是从事同城跨城货运、企业版物流服务、搬家、零担、跑腿、冷运、汽车租售及车后市场服务的互联网物流商城。截至2024年,货拉拉在全球拥有1670万月活用户和168万月活司机,业务覆盖全球11个市场、400+城市,并在全球设有6个数据中心。

一、大模型应用场景的挑战

货拉拉基于自身在物流领域 AI 落地的深厚积累,已在 14+ 个业务或部门,50+ 个真实业务场景探索和落地大模型应用。在引入大模型的过程中,面临着其在垂直领域知识的缺乏、时效性不足以及数据安全隐患等挑战。为应对这些问题,采用了业界较为通用的解决方案的解决方案——检索增强生成技术(Retrieval-Augmented Generation, RAG),通过引入外部数据,让大模型的回答从原来的“闭卷”变为“开卷”。RAG 通过整合领域专有知识、私有数据以及实时数据,显著降低了答案生成的不确定性,增强了数据安全性,从而有效解决了大模型的固有问题,提升了回答的准确性和实用性。

RAG 的核心在于将强大的语言模型能力与向量数据库的能力相结合,企业在实施 RAG 方案的过程中,通常需要结合一个向量数据库。向量数据库在处理多模数据和语义检索方面具有独特的优势,具体体现在以下几个方面:

存储非结构化数据:向量数据库能够有效存储和管理多模态数据,如音频、视频、图片和文本等。这些数据通常具有规模庞大、信息密度高、处理成本高的特点。

向量化表示:通过神经网络提取数据特征,将其转换为高维空间中的坐标点。向量化表示赋予数据语义表达能力,使其适用于相似性检索。

检索非结构化数据:通过计算向量间的距离(如内积或欧氏距离),识别出最相似的向量。检索过程涉及近邻图的遍历,需要进行大量的浮点运算,以实现高效的相似性匹配。

二、向量数据库选型思考

(一)原有架构与痛点

现有的架构包含基础设施层(CPU 和 GPU 两种机型)、存储层(向量数据库、ES等)、检索层(以图索引为主,多种检索类型)、接入层与入口层。并且在国内外共有 5 个集群,单集群内存配置在 380 +GB,单表数据量最大为2000万。

痛点1:动态 schema

随着业务的快速发展,频繁的字段增删操作成为常态。目前的解决方案是通过新建表、导入现有数据并最终重建索引来实现,这一流程相对繁琐。对于某些数据量较大的表,索引重建的耗时可能长达十几个小时。此外,索引重建过程对 CPU 和内存资源消耗极大,容易引发线上业务抖动。

痛点2:混合检索

向量检索在相似语义检索和多模态数据理解方面具有显著优势,而全文检索则在精准匹配、短文本及低频词汇检索上表现优异。在企业应用中,仅依赖单一检索方式难以满足业务对检索精度的高要求。为了弥补全文检索的缺陷,引入了Elasticsearch来作为全文检索引擎,这也导致了整体架构的复杂性增加,同时提升了系统的维护难度。对于用户而言,需要在应用层实现复杂的reranking逻辑,并且得到的相似度得分难以统一,从而增加了使用成本。因此,业务希望引入一站式混合索引能力。

痛点3:运维难度大

稳定性能力弱:向量数据库本身存在不稳定性,BUG 较多;缺乏专家经验使得问题排查变得困难;监控指标有限,问题定位困难。

扩展性不足:节点的横向扩展能力较差,数据迁移依赖人工;数据分片的管理和运维过程复杂。

权限认证能力弱:现有的权限认证机制不够完善,容易引发数据泄漏和安全问题,需要自行实现权限管理,增加了开发和运维的复杂性。

社区活跃度差:虽然项目仍在维护,但更新频率较低,社区贡献和开发者参与度有限,且社区功能和生态发展缓慢,无法满足业务未来的需求。

(二)选型标准与过程

基于上述痛点,我们在2024年底重新进行了一次向量数据库选型。选型的标准主要从业务诉求和运维诉求两方面来考虑,如下图所示。

在选型过程中,将10款向量数据库列入候选集,并通过多维度的详细对比,基于业务和运维痛点进行了第一轮筛选,首先,由于我司采用多云架构,因此希望数据库可以跨云部署,排除了云商数据库。其次,基于业务对于向量维度有更高的需求,排除PostgreSQL。另外从稳定性和权限管理方面考虑,排除了Weaviate。

经过初步筛选,Milvus、Elasticsearch 和 OceanBase 成为入围的候选产品。在第二轮筛选中,重点关注稳定性和运维成本:

Milvus:实时风控场景对向量数据库的稳定性要求极高。由于 Milvus 的整体架构较为复杂,确保其稳定性需要投入更多的运维成本。此外,Zilliz 的云版本和货拉拉的线上服务是跨地区部署,存在一定的稳定性隐患,因此暂时排除 Milvus。

OceanBase:在搭建 OceanBase 社区版环境后,进行了全面的向量能力测试,并与业务部门联合对线上真实场景进行了压力测试和对比。结果表明,OceanBase 在功能和性能方面均能满足业务需求。此外,OceanBase经过各大厂多年的打磨,稳定性方已经得到验证。同时,OceanBase 社区活跃度高,定期更新向量能力和性能,并提供技术支持。

Elasticsearch:Elasticsearch 在全文检索和混合检索能力上表现比较优秀,但基于公司内部团队的实际情况,最终在 Elasticsearch 和 OceanBase 之间选择了后者。

在完成选型后,面临的关键决策是选择自建还是上云。首先对这两种方案进行了详细对比,其次考虑到公司内部大量DB 都存在上云趋势,上云后能够实现很好的弹性扩缩容,同时有更可靠的SLA保障 ,且现阶段我们更关注的是业务接入,在运维上不希望投入过多的人力,最终选择在云上构建向量数据库底座。

三、向量数据库落地场景

(一)资损代码识别

资损代码识别是 OceanBase 向量检索在货拉拉的重要应用场景。由于研发质量问题或代码中的潜在漏洞,可能导致公司面临严重的财务损失。过去主要依靠人工审核来识别资损代码,效率低下且难以全面覆盖线上服务,导致资损风险无法完全规避。为解决这一问题,结合大模型能力与 OceanBase 向量检索,开发了自动化代码风险识别系统。该系统通过向量化历史案例数据并检索相似代码,利用大模型进行分析和判断资损风险,从而提高代码审查的效率和准确性,控制开发过程中的风险。

具体流程如下:首先,基于历史真实发生的资损代码场景和案例数据,通过大模型进行分类打标处理,得到数据集并经人工二次确认后,将数据灌入向量数据库。在开发者提交代码构建时,触发代码检测流程,将用户提交的代码与向量数据库中保存的资损代码进行向量相似度检索,将检索结果及相关数据提供给大模型进行资损风险判断。若判断代码存在风险,则熔断代码构建流程,防止其发布到线上平台。这一项目的实施,提高了资损代码识别的效率和准确性,为公司有效的规避潜在的资损风险。

(二)数仓 AI 答疑助手

数仓 AI 答疑项目是 OceanBase 向量检索在货拉拉的另一个重要落地场景,同时也是一个非常典型的应用场景。货拉拉的大数据数仓体量庞大,拥有几十万张Hive表,每天都有大量用户需要查询数据。然而,用户通常缺乏足够的业务背景知识,难以快速找到所需数据,只能通过数仓开发人员的帮助,这给数仓开发同学带来了巨大的工作负担。为了解决这一问题,我们将向量检索的能力应用于数仓 AI 答疑助手,提高数据查询效率,减轻了数仓开发人员的工作压力。

具体流程如下:首先,将库表的 Schema 信息、聊天答疑记录以及内部维护的文档进行处理,例如将库表信息处理成字段映射关系、将聊天答疑记录转化为 QA对形式等。然后,通过 Embedding 模型将这些数据转化为向量并存储到 OceanBase 向量数据库中。当用户提问时,系统首先进行意图识别,判断用户是找数场景、问口径场景还是普通知识答疑场景。接着,对用户的问题进行理解,将其复杂问题拆分成多个子问题,并进行实体识别,必要时采用多轮对话方式确定用户意图。之后进行知识召回,由于该场景对查询精度要求高,因此采用了多种检索方案,如向量检索、标量检索以及全文关键字检索。将召回的知识数据提供给重排序模型进行重排,将最相关答案提供给大模型进行总结生成,最终为用户提供准确的数据查询结果。这一项目的实施,降低用户找数门槛,减轻隐性的沟通负担,显著提高了数仓数据查询效率,降低了人力成本,提升了用户体验。

四、未来规划

随着 OceanBase 在货拉拉线上业务的稳定运行,未来将有更深入、更丰富的应用规划。

业务迁移:这一过程涉及支持一站式融合检索能力,业务改造适配,数据迁移等。

性能成本:随着用户数量的增加,性能和成本成为关注的焦点,将考虑引入标量量化索引 HNSW_SQ 或磁盘索引 IVF 等技术,同时支持表级别的 TTL 和冷热数据分层能力。

内部系统集成:将 OceanBase 集成到内部系统中,如大数据平台、监控告警系统和 DMS 数据库管理系统,以提供更丝滑的用户体验。

更多场景探索:正在在探索更多 OceanBase 的应用场景,如 OLAP、OBKV 等,希望解决在线存储的痛点。

老纪的技术唠嗑局 不仅希望能持续给大家带来有价值的技术分享,也希望能和大家一起为开源社区贡献力量。如果你对 OceanBase 开源社区认可,点亮一颗小星星 吧!你的每一个Star,都是我们努力的动力~

https://github.com/oceanbase/oceanbase

OceanBase向量检索在货拉拉的探索和实践的更多相关文章

  1. 3D还原货拉拉女孩身亡真相,这一环值得反思!

    货拉拉女孩跳车身亡的消息,让人惋惜又震惊.司机多次偏离原始路线,女孩最终选择跳车,结果不幸身亡. 货拉拉女孩跳车真相被3D还原 有人质疑平台监管不力,造成如此惨剧,有人吐槽企业压榨员工,司机绕路是不得 ...

  2. [python] 向量检索库Faiss使用指北

    Faiss是一个由facebook开发以用于高效相似性搜索和密集向量聚类的库.它能够在任意大小的向量集中进行搜索.它还包含用于评估和参数调整的支持代码.Faiss是用C++编写的,带有Python的完 ...

  3. 从C10K到C10M高性能网络的探索与实践

    在高性能网络的场景下,C10K是一个具有里程碑意义的场景,15年前它给互联网领域带来了非常大的挑战.发展至今,我们已经进入C10M的场景进行网络性能优化. 这期间有怎样的发展和趋势?环绕着各类指标分别 ...

  4. NSIS:应用软件自动升级功能的探索与实践

    原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...

  5. FFM及DeepFFM模型在推荐系统的探索及实践

    12月20日至23日,全球人工智能与机器学习技术大会 AiCon 2018 在北京国际会议中心盛大举行,新浪微博AI Lab 的资深算法专家 张俊林@张俊林say 主持了大会的 搜索推荐与算法专题,并 ...

  6. FPGA加速:面向数据中心和云服务的探索和实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由columneditor 发表于云+社区专栏 作者介绍:章恒--腾讯云FPGA专家,目前在腾讯架构平台部负责FPGA云的研发工作,探索 ...

  7. zz深度学习在美团配送 ETA 预估中的探索与实践

    深度学习在美团配送 ETA 预估中的探索与实践 比前一版本有改进:   基泽 周越 显杰 阅读数:32952019 年 4 月 20 日   1. 背景 ETA(Estimated Time of A ...

  8. 深度学习在高德ETA应用的探索与实践

    1.导读 驾车导航是数字地图的核心用户场景,用户在进行导航规划时,高德地图会提供给用户3条路线选择,由用户根据自身情况来决定按照哪条路线行驶. 同时各路线的ETA(estimated time of ...

  9. 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践

    ​导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高 ...

  10. 网络Devops探索与实践 流程管理分析师

    https://mp.weixin.qq.com/s/OKLiDi78uB8ZkPG2kUVxvA 网络Devops探索与实践 王镇 鹅厂网事 2020-09-23  9月16日举办的2020 ODC ...

随机推荐

  1. ingress配置https报错certificate.lua:259: call(): failed to set DER private key: d2i_PrivateKey_bio() failed, context: ssl_certificate_by_lua*

    困扰我2天的报错问题:certificate.lua:259: call(): failed to set DER private key: d2i_PrivateKey_bio() failed, ...

  2. 阅读IDEA生成的equals方法--java进阶day05

    1.IDEA生成的equals方法 虽然我们之前写了equals方法,但IDEA中可以快速生成equals方法,因此,我们要能看懂IDEA生成的equals方法 1.if(this==o) 2.if( ...

  3. 【SpringCloud】SpringCloud Stream消息驱动

    SpringCloud Stream消息驱动 消息驱动概述 是什么 什么是SpringCloudStream 官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架. 应用程序通 ...

  4. Microsoft.NETCore.App 版本不一致导致的运行失败

    场景重现 今天新建了一个 ASP.NET Core 的项目, 通过 Web Deploy 顺利发布到IIS上后, 但访问时出现如下异常: 异常原因 通过手动执行dotnet命令发现运行框架版本不一致? ...

  5. 智能驾驶致死、AI聊天自杀,安全成最大的奢侈

    提供AI咨询+AI项目陪跑服务,有需要回复1 前几天<高层论坛:实现汽车产业高质量发展>才刚召开,因为汽车行业卷得不行,现在大家都想在智能驾驶上发力,其中有句话令我影响深刻: 对智能驾驶来 ...

  6. eolinker流程用例步骤之脚本代码[Javascript]:读取多组数据,循环执行同一操作

    特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 场景(一)描述: 在未知有多少会员卡的前提下,对会员卡进 ...

  7. web自动化:Javascript操作页面元素

    某些特殊情况下,使用selenium的api无法操作页面元素,可以通过js来完成 一.Js定位 js操作中的webelement通过console控制台来进行js定位: WebElement webe ...

  8. 移动开发框架,Hammer.js 移动设备触摸手势js库

    原文:https://www.cnblogs.com/zhwl/p/3525238.html hammer.js是一个多点触摸手势库,能够为网页加入Tap.Double Tap.Swipe.Hold. ...

  9. 倍增 & Tarjan 求解LCA

    什么是LCA? 假设我们有一棵树: 1 / \ 2 3 / \ / 4 5 6 对于 \(2\) 和 \(6\) 的LCA,就是最近公共祖先,即为距离 \(2\) 和 \(6\) 最近的两个节点公有的 ...

  10. 小模型工具调用能力激活:以Qwen2.5 0.5B为例的Prompt工程实践

    在之前的分析中,我们深入探讨了cline prompt的设计理念(Cline技术分析:prompt如何驱动大模型对本地文件实现自主变更),揭示了其在激发语言模型能力方面的潜力.现在,我们将这些理论付诸 ...