联通软研院:基于OceanBase落地检索增强生成 (RAG) 的应用实践

news2024/12/25 13:14:24

本文作者:邱永刚,联通软件研究院OceanBase研发负责人,主要负责中国联通自研关系型数据库分布式CUDB研发、支撑、运维工作。

近年来,生成式人工智能技术取得了飞速进步,很多大模型在自然语言处理及对话系统领域的运用吸引了大量关注,如 OpenAI 的 ChatGPT、阿里巴巴的通义千问以及百度的文心一言等。尽管这些大型模型具备强大的推理能力,但在实际业务场景中,它们常因难以直接整合企业特有的数据与知识而面临应用局限。在此背景下,向量数据库作为检索增强生成(RAG)架构的关键支撑,日益凸显出其不可或缺的重要性。

RAG架构通过结合预训练的大型语言模型(LLM)和企业的实时私有数据,弥补了LLM在处理企业特定数据时的不足。借助向量数据库的强大检索能力,开发人员能够在无需重新训练模型的前提下,实现基于企业数据的实时、精准生成任务。在这篇文章中,我们将分享中国联通如何通过OceanBase的向量检索能力,在实际业务中成功实现RAG,帮助内部开发人员和DBA更高效地进行数据库基础设施相关查询和管理,从而进一步提升业务响应速度和准确性。

背景与挑战:RAG在联通软研院的应用

联通软研院数据库平台服务数百到上千内部用户,涵盖了从应用开发到运维管理的各个环节。面对如此庞大和复杂的数据库应用场景,我们长期面临许多挑战:数据库种类繁多,版本差异大,生产系统的稳定性要求高,测试环境与生产环境之间的差异影响了效率,且日常数据库运维和管理的工作负荷巨大,响应速度难以提升。

具体来说,我们需要应对如下几个主要挑战:

1.   多种数据库及版本管理:联通内部存在多款数据库产品,且版本更新和维护频繁。如何在不同版本之间保持一致性并快速定位问题,成为了运维和管理中的一大难题。

2.   生产环境的高效管理与测试环境差异:生产系统的稳定性至关重要,如何在保证生产环境稳定的同时,快速应对和解决生产系统中的问题。此外,测试环境与生产环境的差异可能导致性能偏差或潜在故障,如何高效地管理并在两者之间找到平衡,提升整体系统可靠性和响应速度,是提升数据库运维敏捷性的关键。

3.   提高工作效率与敏捷性:随着业务需求的不断变化,如何在复杂多变的数据库环境中快速获取所需信息,并及时响应,成了提升数据库运维管理效率的核心问题。

为了提升运维效率和内部敏捷性,我们尝试用RAG架构解决这些实际问题,并开发了数据库智能专家“ChatDBA”。通过结合数据库领域的专业知识和联通内部的运维数据,“ChatDBA”让开发人员和DBA可以直接用自然语言查询数据库状态、排查故障或者获取建议,减少了大量的重复工作。这样的方式,不仅提升了问题解决效率,也让团队能将精力更多地集中在关键任务上,以下是我们采用的整体方案流程示意图:

1733391747

我们针对内外部的数据库通识类和特性类文档进行系统性梳理,形成文档知识库。通过文档切片和向量化模型嵌入,我们将这些文档内容转化为向量数据并存储在向量库中。这一做法使得大型语言模型(LLM)能够获得DBA领域的专业知识,大大提升了知识问答的召回率和准确性。在此基础上,我们进一步引入了RAG(检索增强生成)技术的知识问答系统。通过检索外部知识库,增强模型对特定问题的理解和回答能力,帮助生成更精准、更丰富的文本内容,从而提升了文本处理的效率和质量,最终打造了数据库智能专家“ChatDBA”, 它具备丰富的数据库知识和经验,能够为数据库使用者(应用人员)和数据库维护方(产品运维、支撑人员)提供全面的、高质量的技术咨询与解决方案服务,以降低数据库使用门槛、提升数据库运维效率。

选型与升级:从双库架构到一体化数据库

在项目初期,我们选择了MySQL作为关系型数据存储,并使用Milvus作为向量数据库。然而,随着数据量和需求的增长,我们很快发现了两个关键问题:首先,现有的数据库无法进行水平扩展,且无法应对更大规模的数据处理;其次,必须同时维护两种数据库系统,增加了管理和运维的复杂性。

为了解决这些问题,我们开始寻找一种能够统一支持关系型数据和向量数据的解决方案。在选型过程中,我们发现OceanBase 4.x实验室版本具备强大的向量检索与混合查询能力,这促使我们对独立向量数据库、单机数据库以及分布式数据库在向量场景下的能力进行详细评估,以下是评估结果的具体对比:

RAG 应用场景的向量数据库选型评估
向量关键特性独立向量数据库 (以Milvus为代表)具备向量能力的单机数据库 (以PostgreSQL为代表)有向量能力的分布式数据库 (以OceanBase为代表)
向量功能与性能向量查询性能高效,专为处理大规模向量数据优化一般,性能较依赖于数据库的扩展性高效,针对大规模数据的存储与查询进行优化,支持复杂查询
向量混合查询无法与传统数据库查询进行混合查询支持基本的向量查询,无法进行复杂的混合查询支持向量、标量等传统数据的混合查询,适用于复杂融合查询场景
接口灵活性主要支持SDK,不支持SQL支持SQL,并可以通过插件支持向量查询支持SQL和SDK,提供更灵活的接口选项
可扩展性与整合扩展性高,可横向扩展以处理更多向量数据依赖单机性能,扩展性有限高,支持分布式架构,能处理海量数据
整合传统数据支持无,专注于向量数据强,能同时处理关系数据和向量数据强,能够处理传统关系数据和向量数据的混合查询
运维复杂度高,需要同时管理向量数据库和其他数据库中,需额外优化性能,手动实现向量与结构化数据的混合查询,但可复用现有运维体系低,一个数据库支持TP、AP和AI工作负载,简化多个数据库带来的运维复杂性
高可用与容灾高可用能力支持容灾和高可用部署,但需独立配置支持高可用,但传统数据库的灾备能力可能较弱强,支持单机、分布式两种部署模式。支持双活、分布式容灾、故障自动恢复,适用于高业务连续性场景
备份与恢复策略定期备份,支持全量和增量备份支持全量备份与增量备份全量与增量备份、即时恢复

深入对比了独立向量数据库、单机数据库和分布式数据库三种选型路线后,我们更倾向于 OceanBase 的一体化技术路线,不但可以使运维团队简化技术栈,更重要的是OceanBase在性能、扩展性和管理便利性方面展现出明显优势。OceanBase当前版本支持超过16,000维的稠密向量处理,并提供多种向量距离计算方式(如曼哈顿距离、欧式距离、内积和余弦距离)。此外,OceanBase还支持创建HNSW向量索引、增量更新和删除操作,以及强大的Filter功能,能够基于向量、标量和半结构化数据进行混合过滤。结合OceanBase本身的分布式架构,这些特性使它成为一个高效且统一的平台,能够解决我们面临的数据库扩展性和管理复杂性问题。

1733391787

通过对OceanBase的测试验证,我们发现其向量检索能力完全符合我们的需求,尤其是在支持应用ChatDBA方面表现出色。更重要的是,OceanBase的向量检索功能具备完整的产品配套生态,进一步增强了其在实际生产环境中的可行性。以下是我们在功能测试中对比OceanBase向量检索与Milvus开源版本的一些关键差异,OceanBase展现出了明显的优势:

1.   简易运维:OceanBase向量检索功能可以直接复用OceanBase的运维管理平台(OCP),大大简化了运维工作。OCP提供了界面化的快速部署、硬件资源管理、监控告警、备份恢复等一整套完善的产品运维功能。而Milvus仅提供基础的数据库功能,不具备完善的运维支持,且存在安全隐患。

2.   高可用与弹性扩缩:OceanBase向量检索能力继承了OceanBase原生分布式数据库的高可用性,能够实现分布式部署、弹性扩缩容,并通过Paxos协议实现单点故障时的自动快速恢复。而Milvus只能进行单点部署,缺乏高可用性及横向扩展能力,这在生产环境中无法接受。

3.   多租户资源隔离:OceanBase向量检索支持多租户资源隔离,并配合OceanBase强大的可扩展性,能够提供安全、灵活的DBaaS服务。用户可以在现有OceanBase资源池内快速开通数据库实例,并根据业务需求灵活调整资源。相比之下,Milvus缺乏资源隔离能力,尤其在物理机部署情况下,资源管理容易出现浪费或不足且无法扩展的问题。

4.   支持 SQL:OceanBase向量检索支持标准SQL操作,开发人员可以使用DBeaver、Navicat等熟悉的客户端工具与数据库交互,这降低了数据库使用门槛,提升了开发效率。Milvus则不支持SQL,只能通过API和代码操作数据,使用体验相对较差。

5.   快速迁移:OceanBase向量库能够利用OMS数据迁移工具进行同构与异构数据迁移。我们通过OMS的功能,成功将原本存储在Milvus中的测试数据迁移到OceanBase中。而Milvus本身不支持数据迁移,跨环境迁移需要重建数据,耗时且对业务影响较大。

在性能测试阶段,我们模拟了当前实际生产环境的使用场景。此前我们使用了两套独立的数据库系统,而现在关系型数据库与向量数据库共享同一个实例。与原本需要两套数据库的部署方式相比,当前实例的规格约小了30%,但在性能上完全满足了业务需求,并且资源使用率显著降低。这意味着在成本方面,我们实现了至少30%的硬件资源节省。以下是官方发布的主流向量数据库性能对比。图中展示的VSAG曲线数据来源于OceanBase与蚂蚁集团联合研发的向量索引算法VSAG,OceanBase在性能表现上明显优于其他主流向量索引库,实现了“比快更快”的性能提升。

1733391805

成效与价值:构建现代化RAG数据底座

在完成OceanBase数据库向量检索功能和性能验证后,我们决定将现有的MySQL和Milvus数据库进行现代化升级,并进行了相应的适配改造。我们发现,OceanBase的引入工作量较小。对于原MySQL数据库几乎没有额外工作量,SQL语法完全兼容,甚至无需更换驱动包,只需要修改配置即可。对于Milvus向量数据库的升级,主要是更新数据库依赖包和调整数据库操作方式。由于OceanBase支持通过SQL操作向量数据,只要熟悉SQL语法,改造工作也非常简便。我们在大约一周的时间内完成了所有程序的适配改造,并在不到两周的时间内完成了所有验证工作。

在10月初,OceanBase发布支持向量检索的稳定版本4.3.3后,我们启动了生产环境的数据库现代化升级。借助前期充分验证和OceanBase的OMS工具,升级过程高效顺畅,顺利完成从Milvus到OceanBase的数据迁移,加快了整体进程。升级后,我们将多套数据库整合为一个统一的系统架构,硬件资源使用量减少约30%,业务性能全面满足需求。OceanBase原生的分布式架构不仅显著提升了系统稳定性,降低单点故障风险,还为未来业务增长提供可扩展能力。这次升级既简化了技术栈,减轻运维团队的压力,还为业务的长远发展打造灵活可靠、可扩展的技术基础。

写在最后

在联通软研院RAG实践中,我们通过引入OceanBase,完成了数据库智能专家“ChatDBA”底层架构的现代化升级。OceanBase在统一关系型和向量数据库的技术栈方面展现出卓越能力,一个数据库即可支持多种工作负载和数据处理需求。硬件资源使用率降低约30%,配合OCP、OMS等工具,极大简化了运维流程,提升了团队效率。

结合项目实践,我们意识到RAG的向量检索能力对于实现高效的知识问答系统至关重要。而OceanBase作为一体化数据库,不仅能够支持多模态数据处理和多场景融合,还在性能和稳定性上表现出色。这样的设计帮助我们显著降低系统复杂性,同时为未来更复杂的业务需求提供了更坚实的技术支持,成为构建统一、高效智能数据库解决方案的关键一步。展望未来,我们计划进一步扩大OceanBase应用范围,通过现代数据架构升级进一步简化技术栈,降低运维成本。


OceanBase 云数据库现已支持365天免费试用,并提供 RAG等应用的搭建教程,欢迎点击体验 >>

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

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

相关文章

【更新】LLM Interview

课程链接:BV1o217YeELo 文章目录 LLM基础相关1. LLMs概述2. 大语言模型尺寸3. LLMs的优势与劣势4. 常见的大模型分类5. 目前主流的LLMs开源模型体系有哪些(Prefix Decoder,Causal Decoder,Encoder-Decoder的区别是什么&#xff09…

模型 课题分离

系列文章 分享 模型,了解更多👉 模型_思维模型目录。明确自我与他人责任。 1 课题分离的应用 1.1课题分离在心理治疗中的应用案例:李晓的故事 李晓,一位28岁的软件工程师,在北京打拼。他面临着工作、家庭和感情的多重…

sqlite 自定以脚本解释器

应用程序使用 libfdt 解析设备树,获取兼容性配置 内核源码支持libfdt 标准设备树语法,不用自己再创造 非常的爽,因为设备树支持预编译 一些可以跑类 BSD 系统的设备也可以使用这样的方法,不仅仅是在linux 系统上跑 有pylibfdt 支持解析设备树,校验设备树是否是正确的…

某医院vsan部署技术手册

环境配置 服务器4900G5五台 配置信息:cpu 8368*2颗 ,内存256GB ,双口万兆网卡两个,四口千兆,RAID卡LSI9361-8i12G SAS RAID ,两块固态盘480SSD ,2*1.92TB NVME盘,5*8T盘。 万兆交换机两台H3C…

【编辑器扩展】打开持久化路径/缓存路径/DataPath/StreamingAssetsPath文件夹

代码 [MenuItem("Assets/Open Explorer/PersistentDataPath")]public static void OpenPersistentDataPath(){Application.OpenURL(Application.persistentDataPath);}[MenuItem("Assets/Open Explorer/DataPath")]public static void OpenDataPath(){Appl…

【day14】异常处理与Object类深入解析

【day13】回顾 在深入探讨异常处理与Object类之前,让我们回顾一下【day13】中的关键内容: 权限修饰符: public:最广的访问范围,任何地方都可以访问。protected:在同包和子类中可以访问。默认(无…

【NLP 17、NLP的基础——分词】

我始终相信,世间所有的安排都有它的道理;失之东隅,收之桑榆 —— 24.12.20 一、中文分词的介绍 1.为什么讲分词? ① 分词是一个被长期研究的任务,通过了解分词算法的发展,可以看到NLP的研究历程 ② 分词…

11.vector的介绍及模拟实现

1.vector的介绍 记得之前我们用C语言实现过顺序表,vector本质上也是顺序表,一个能够动态增长的数组。 vector 的底层实现机制 - 动态数组:vector 的底层实现是动态数组。它在内存中连续存储元素,就像一个可以自动调整大小的数…

# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)

↑ 上方下载文档 (大小374KB) 接口文档预览 (超过50个接口) 一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像) 二、难点/经验 详细说明 热门评论排序评论点赞列表|DTO封装经验分享|精华接口文档说明 组员都说喜欢分档对应枚举码 如果这篇文章…

android RecyclerView 垂直显示示例(java)

RecyclerView垂直列表显示示例&#xff0c;显示图片加文字。 1、RecyclerView.Adapter适配器 public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> {private Context mContext;private List<TitleBean> titleBeans;public ListAdapt…

华为云语音交互SIS的使用案例(文字转语音-详细教程)

文章目录 题记一 、语音交互服务&#xff08;Speech Interaction Service&#xff0c;简称SIS&#xff09;二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1&#xff09;…

GitCode 光引计划投稿|智能制造一体化低代码平台 Skyeye云

随着智能制造行业的快速发展&#xff0c;企业对全面、高效的管理解决方案的需求日益迫切。然而&#xff0c;传统的开发模式往往依赖于特定的硬件平台&#xff0c;且开发过程繁琐、成本高。为了打破这一瓶颈&#xff0c;Skyeye云应运而生&#xff0c;它采用先进的低代码开发模式…

网络刷卡器的功能和使用场景

网络刷卡器是一种连接互联网的设备&#xff0c;能够通过网络将读取到的各种卡片信息传输至服务器进行处理。这类刷卡器通常支持多种类型的卡片&#xff0c;如银行卡、身份证、会员卡、公交卡等&#xff0c;并运用现代信息技术确保数据的安全性和高效性&#xff0c;功能十分强大…

从零开始C++游戏开发之第七篇:游戏状态机与回合管理

在游戏开发的道路上&#xff0c;状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中&#xff0c;游戏的进行需要有条不紊地按照回合推进&#xff0c;同时管理多个游戏状态&#xff0c;如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…

有没有检测吸烟的软件 ai视频检测分析厂区抽烟报警#Python

在现代厂区管理中&#xff0c;安全与规范是重中之重&#xff0c;而吸烟行为的管控则是其中关键一环。传统的禁烟管理方式往往依赖人工巡逻&#xff0c;效率低且存在监管死角&#xff0c;难以满足当下复杂多变的厂区环境需求。此时&#xff0c;AI视频检测技术应运而生&#xff0…

CentOS7网络配置,解决不能联网、ping不通外网、主机的问题

1. 重置 关闭Centos系统 编辑->虚拟网络编辑器 还原默认设置 2. 记录基本信息 查看网关地址,并记录在小本本上 查看网段,记录下 3. 修改网卡配置 启动Centos系统 非root用户,切换root su root查看Mac地址 ifconfig 或 ip addr记录下来 修改配置文件 vim /et…

32岁前端干了8年,是继续做前端开发,还是转其它工作

前端发展有瓶颈&#xff0c;变来变去都是那一套&#xff0c;只是换了框架换了环境。换了框架后又得去学习&#xff0c;虽然很快上手&#xff0c;但是那些刚毕业的也很快上手了&#xff0c;入门门槛越来越低&#xff0c;想转行或继续卷&#xff0c;该如何破圈 这是一位网友的自述…

麒麟操作系统服务架构保姆级教程(三)ssh远程连接

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 作为一名成熟运维架构师&#xff0c;我们需要管理的服务器会达到几十台&#xff0c;上百台&#xff0c;上千台&#xff0c;甚至是上万台服务器&#xff0c;而且咱们的服务器还不一定都在一个机房&am…

Hmsc包开展群落数据联合物种分布模型分析通用流程(Pipelines)

HMSC&#xff08;Hierarchical Species Distribution Models&#xff09;是一种用于预测物种分布的统计模型。它在群落生态学中的应用广泛&#xff0c;可以帮助科学家研究物种在不同环境条件下的分布规律&#xff0c;以及预测物种在未来环境变化下的潜在分布范围。 举例来说&a…

十二月第22讲:巧用mask属性创建一个纯CSS图标库

&#xff08;Scalable Vector Graphics&#xff0c;可缩放矢量图形&#xff09;是一种基于 XML 的图像格式&#xff0c;用于定义二维图形。与传统的位图图像&#xff08;如 PNG 和 JPG&#xff09;不同&#xff0c;SVG 图像是矢量图形&#xff0c;可以在任何尺寸下保持清晰度&a…