随着生成式人工智能技术的飞速发展,越来越多的人和企业开始应用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_KEY
、LLM_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 体验之旅吧!