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

随着生成式人工智能技术的飞速发展,越来越多的人和企业开始应用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_URLLLM_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:8501
  Network URL: http://172.xxx.xxx.xxx:8501
  External URL: http://xxx.xxx.xxx.xxx:8501 # 这是您可以从浏览器访问的 URL

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

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

还有更多

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

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

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


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

相关推荐
百家方案14 分钟前
「下载」智慧园区及重点区域安全防范解决方案:框架统一规划,建设集成管理平台
大数据·人工智能·安全·智慧园区·数智化园区
Ven%31 分钟前
DeepSpeed的json配置讲解:ds_config_zero3.json
人工智能·python·ubuntu·json·aigc
z千鑫33 分钟前
【AIGC】AI、大数据、机器学习、深度学习、神经网络之间的关系详解:你必须知道的5个关键点!
人工智能·深度学习·机器学习
金书世界44 分钟前
自动驾驶AVM环视算法--python版本的车轮投影模式
人工智能·机器学习·自动驾驶
eqwaak02 小时前
爬虫自动化(DrissionPage)
开发语言·人工智能·爬虫·python·自动化·pip
itwangyang5202 小时前
AIDD - 基于多层图注意力神经网络的药物-靶点相互作用预测模型研究
人工智能·深度学习·机器学习
新加坡内哥谈技术2 小时前
谷歌用Anthropic的Claude帮Gemini“打磨”性能
人工智能
程序员联盟2 小时前
用ChatGPT来提高效率:前言
人工智能·chatgpt·程序员
szxinmai主板定制专家2 小时前
【国产NI替代】基于全国产FPGA的16振动+2转速+8路IO口输入输出(24bits)256k采样率,高精度终端采集板卡
大数据·人工智能·fpga开发
呆萌的代Ma2 小时前
Windows配置cuda,并安装配置Pytorch-GPU版本
人工智能·pytorch·windows