向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手

news/2024/12/28 2:52:04/

随着生成式人工智能技术的飞速发展,越来越多的人和企业开始应用AI到日常的工作和生活中。但公域的AI助手其数据来自互联网上的大量公开文本,虽然具有广泛的知识,但在面对一些特定领域的专业问题时,可能会出现回答不够准确或深入的情况,需要用户自行甄别和进一步研究。因此,也有很多企业开始研究基于向量检索的能力实现检索增强生成(RAG)架构的智能助手

RAG 智能助手是什么?

RAG 可以基于特定的私有数据集构建,这些数据可以是企业知识库、内部文档、数据库、行业报告等,因此,针对特定领域的问题,它可以直接从相关的专业数据中检索出准确的信息,并结合生成式模型进行优化,提供更精准、专业的回答。

下图就是 OceanBase 基于RAG搭建的AI助手的示例:

OceanBase 在近期发布的 4.3.3 GA 版本中,在关系型数据库的基础上,新增了向量检索能力,支持向量数据类型、向量索引以及基于向量索引的搜索功能。结合 OceanBase 在海量数据分布式存储方面的优势,以及对多模数据类型和多种索引方式的支持,为 RAG 应用搭建提供了更加便捷的方式。

今天,我们就一起来看看,如何用OceanBase 的免费试用,加上大语言模型,快速的免费搭建一个RAG 智能助手。

RAG 的应用架构

在开始搭建之前,我们先了解一下基于OceanBase搭建 RAG应用的架构。

如下图所示,智能助手将文档以向量的形式批量存储在 OceanBase 数据库内。用户通过 UI 界面提问,程序使用 BGE-M3 模型将提问内容嵌入成为向量并在数据库中检索相似向量,得到相似向量对应的文档内容后,应用将它们会同用户提问一起发送给 大语言模型(LLM),LLM 会根据提供的文档生成更加准确的回答。

一起来搭建 RAG智能助手 吧

下面,我们就一起用 OceanBase的文档库做为数据源,用免费的OceanBase云数据库和大语言模型,快速搭一个RAG 助手的Demo吧。

注意操作的电脑或服务器上,要先提前安装好 python(3.9 及以上版本 )和相应 pip。

1、免费开通 OceanBase 云数据库

OceanBase 云数据库 提供 365 天的免费试用,可前往 OceanBase 官网,页面导航上有“免费试用”入口,点击进入页面后,选择“个人试用”,只需简单的几步,就可以创建一个免费的数据库实例了。注意搭建 RAG应用需要开通的是  共享实例-事务型(MySQL模式)。

实例创建后,在实例控制台创建用户、创建数据库、获取连接串,就可以通过公网连接OB Cloud数据库了。

然后在实例工作台中设置 ob_vector_memory_limit_percentage 参数,以启用向量检索功能。推荐设置值为 30

2、注册大模型LLM账号

这里我们用阿里云的通义千问模型来做,他提供了一定的免费使用额度。开通阿里云百炼的账号并开通大模型服务,然后获取 API 密钥。使用过程中请关注免费额度使用情况,超出将会产生费用。

大家也可以使用其他的大模型来搭建。选用其他 LLM 需要更新 .env 文件中的 API_KEYLLM_BASE_URL 和 LLM_MODEL

3、克隆代码仓库

为了简化 demo的搭建,官方在Github和gitee上都准备了预制的代码仓库,我们复制gitee的代码:

git clone https://gitee.com/oceanbase-devhub/ai-workshop-2024
cd ai-workshop-2024

4、安装poetry,设置变量,连接数据库

安装 Poetry,可参考命令:

python3 -m pip install poetry

配置环境变量

cp .env.example .env
如果您使用通义千问提供的 LLM 能力,则需要把 API_KEY 和 OPENAI_EMBEDDING_API_KEY 更新为您从阿里云百炼控制台获取的 API KEY 值,并将 DB_ 开头的变量更新为您的数据库连接信息,然后保存文件。
vi .env

使用官方准备好的脚本来尝试连接数据库,以确保数据库相关的环境变量设置成功

bash utils/connect_db.sh

5、将样本文档转换为向量并插入到 OceanBase 数据库

克隆 OceanBase 相关组件的开源文档仓库并处理它们,生成文档的向量数据和其他结构化数据后,将数据插入到 OceanBase 数据库。

1)从gitee上clone 文档

git clone --single-branch --branch V4.3.4 https://gitee.com/oceanbase-devhub/oceanbase-doc.git doc_repos/oceanbase-doc

2)将文档标题转换为标准 Markdown 格式

poetry run python convert_headings.py \doc_repos/oceanbase-doc/zh-CN \

3)将文档转换为向量并插入 OceanBase 数据库

官方提供了embed_docs.py 脚本,通过指定文档目录和对应的组件后,该脚本就会遍历目录中的所有 markdown 格式的文档,将长文档进行切片后使用嵌入模型转换为向量,并最终将文档切片的内容、嵌入的向量和切片的元信息(JSON 格式,包含文档标题、相对路径、组件名称、切片标题、级联标题),一同插入到 OceanBase 的同一张表中,作为预备数据待查。

这个时间会比较长,也可以挑选先挑选部分文档做尝试。

poetry run python embed_docs.py --doc_base doc_repos/oceanbase-doc/zh-CN/640.ob-vector-search

6、启动 RAG 智能助手的 聊天界面

执行以下命令启动聊天界面:

poetry run streamlit run --server.runOnSave false chat_ui.py

访问终端中显示的 URL 来打开聊天机器人应用界面。

  You can now view your Streamlit app in your browser.Local URL: http://localhost:8501Network URL: http://172.xxx.xxx.xxx:8501External URL: http://xxx.xxx.xxx.xxx:8501 # 这是您可以从浏览器访问的 URL

然后就可以和智能助手开始互动问答了啦! 

(注意,因为数据源是OB 的文档库,所以请提问 OceanBase 相关的问题)

还有更多

上面的演示,是一个简单的demo,可以在本机运行,大家可以更换数据源,将他变成自己的小助手,比如可以基于游戏文档搭一个游戏助手,或换成书的资料变成一个学习助手。

此外,OceanBase还在陆续上线各种 AI 场景的搭建教程,例如,配合开源的 LLM 低代码平台Dify去搭建一个应用级的RAG智能助手;或者,搭建一个 text2SQL应用,用自然语言生成对应的查询 SQL ……

可以访问 OceanBase 官网上的“AI 动手实战营”视频课程,内容正在不断上新中,可以点击关注。OceanBase AI 实战视频课


现在,立即开通OceanBase 免费试用,开启 你的 AI 体验之旅吧!


http://www.ppmy.cn/news/1558674.html

相关文章

R 和 Origin 完成细菌 OTU 表、土壤理化性质数据的微生物 Beta 多样性分析

使用 R 进行分析与可视化 1. 数据准备 假设已经有细菌 OTU 表&#xff08;以表格形式存储&#xff0c;行是样本&#xff0c;列是 OTU&#xff09;和土壤理化性质表&#xff08;行是样本&#xff0c;列是不同的理化性质指标&#xff09;。 # 读取数据 otu_table <- read.c…

MAE 随机掩码自编码器:高掩码率 + 非对称编码器-解码器架构,解决视觉数据冗余特征、计算冗余消除

MAE 随机掩码自编码器&#xff1a;高掩码率 非对称编码器-解码器架构&#xff0c;解决视觉数据冗余特征、计算冗余消除 论文大纲理解1. 确认目标2. 问题分解3. 实现步骤4. 效果展示5. 金手指 观察和假设观察现象提出假设验证过程 解法拆解1. 技术拆解2. 逻辑链分析3. 隐性方法…

SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口,通过这个接口可以直接控制虚拟示波器,并获得示波器采集的数据

SDK参考手册 1.简介 SDK 作为虚拟示波器配备的一个 Windows 标准 DLL 接口&#xff0c;通过这个接口可以直接控制虚拟示波器&#xff0c;并获得示波器采集的数据。该 SDK 支持 MDSO、MDSO-LA、HDSO、DDSO、ISDS205、 ISDS210、ISDS220 和 SDS2062 设备。 2.初始化和结束 调用In…

数字存在科学计数法后的转换方法

最近在开发中&#xff0c;发现了客户的数据使用了科学计数法&#xff0c;但是前端直接显示的话不太好看&#xff0c;因此写了转化回数字的方法 如下&#xff1a; function zhnum(x) { if (Math.abs(x) < 1.0) { var e parseInt(x.toString().split(‘e-’)[1]); if (e) { …

自然语言处理与知识图谱的融合与应用

目录 前言1. 知识图谱与自然语言处理的关系1.1 知识图谱的定义与特点1.2 自然语言处理的核心任务1.3 二者的互补性 2. NLP在知识图谱构建中的应用2.1 信息抽取2.1.1 实体识别2.1.2 关系抽取2.1.3 属性抽取 2.2 知识融合2.3 知识推理 3. NLP与知识图谱融合的实际应用3.1 智能问答…

【前沿 热点 顶会】AAAI 2025中与目标检测有关的论文

CP-DETR: Concept Prompt Guide DETR Toward Stronger Universal Object Detection&#xff08;AAAI 2025&#xff09; 最近关于通用物体检测的研究旨在将语言引入最先进的闭集检测器&#xff0c;然后通过构建大规模&#xff08;文本区域&#xff09;数据集进行训练&#xff0…

【UE5.3.2】安装metahuman插件

Unable to find plugin ‘MetaHuman’报错 Unable to find plugin MetaHuman (referenced via RPect_5_3.uproject). Install it and try again, or remove it from the required plugin list. 10>Microsoft.MakeFile.Targets(44,5): Error MSB3073 :

ElasticSearch 的核心功能

要深入理解 ElasticSearch 的核心功能&#xff0c;需要全面掌握其 全文搜索、分析、聚合 和 索引生命周期管理&#xff08;ILM&#xff09; 的设计原理和实际应用。 1. 全文搜索 ElasticSearch 的全文搜索是其核心功能之一&#xff0c;依赖于倒排索引和强大的分词、相关性评分…