向量检索+大语言模型,免费搭建基于专属知识库的 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 体验之旅吧!

相关推荐
爱疯生活17 分钟前
车e估牵头正式启动乘用车金融价值评估师编制
大数据·人工智能·金融
JXL186039 分钟前
机器学习概念(面试题库)
人工智能·机器学习
星期天要睡觉39 分钟前
机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践
人工智能·深度学习·机器学习·数据挖掘
岁月静好202543 分钟前
BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain
人工智能·机器学习
说私域1 小时前
基于开源 AI 大模型 AI 智能名片 S2B2C 商城小程序视角下的企业组织能力建设与破圈升级
人工智能·小程序
2401_858869801 小时前
K近邻算法(knn)
人工智能
aneasystone本尊1 小时前
学习 Coze Studio 的知识库入库逻辑(续)
人工智能
renhongxia11 小时前
大模型微调RAG、LORA、强化学习
人工智能·深度学习·算法·语言模型
张较瘦_1 小时前
[论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
论文阅读·人工智能·github
Cloud Traveler1 小时前
从 0 到 1 开发校园二手交易系统:飞算 JavaAI 全流程实战
人工智能·java开发·飞算javaai炫技赛