网易首页 > 网易号 > 正文 申请入驻

基于AutoFlow快速搭建基于 TiDB 向量搜索的本地知识库问答机器人

0
分享至

导读

本文将详细介绍如何通过 PingCAP 开源项目 AutoFlow 实现快速搭建基于 TiDB 的本地知识库问答机器人。如果提前准备好 Docker、TiDB 环境,整个搭建过程估计在 10 分钟左右即可完成,无须开发任何代码。

文中使用一篇 TiDB 文档作为本地数据源作为示例,在实际情况中,您可以基于自己的企业环境用同样的方法快速构造企业内部知识库问答机器人。

AutoFlow 是 PingCAP 开源的一个基于 Graph RAG、使用 TiDB 向量存储和 LlamaIndex 构建的对话式知识库聊天助手。https://tidb.ai也是 PingCAP 基于 AutoFlow 实现的一个 TiDB AI 智能问答系统,我们可以向 tidb.ai 咨询任何有关 TiDB 的问题,比如 "TiDB 对比 MySQL 有什么优势?"

以下是 tidb.ai 的回答,从结果来说,tidb.ai 非常准确的理解了用户的问题并给出了相应的回答。它首先给出 TiDB 优势及 MySQL 限制的详细说明,然后给出一个结论性的总结,最后给出更多的参考链接。

相信通过前面的一些介绍,大家对 tidb.ai 的能力已经有了一个清楚的认识。TiDB 的使用人员很幸运,因为有了 tidb.ai,几乎任何有关 TiDB 的问题都可以在这个统一的平台得到相应的解答,一方面节省了自己人工去查找 TiDB 官方文档或 AskTUG 论坛的时间,另一方面 tidb.ai 拥有比普通大模型更专业的 TiDB 知识问答。

在技术实现上,tidb.ai 背后主要使用到 TiDB 的 Graph RAG 技术、TiDB 向量检索功能以及 LLM 大模型的使用。实际上,在 AutoFlow 出来之前,我们也可以通过 python 编程开发的方式基于 LLM+RAG+TiDB 实现一套问答系统。主要的开发流程如下:

  1. 准备私域文本数据
  2. 对文本进行切分
  3. 通过 Embedding 将文本转为向量数据
  4. 把向量数据保存到 TiDB
  5. 获得用户输入问题并进行向量化,然后从 TiDB 中进行相似度搜索
  6. 将上述片段和历史问答作为上下文,与用户问题一起传入大模型,最后输出结果

基于 python 开发这样一套问答系统,一般要结合大模型常用开发框架如 Langchain,Langchain 集成了多种文件格式或 URL 网址的导入功能。如果希望给这个系统增加 Web 界面的能力,还需要引入前端可视化工具,如 Gradio 或 Steamlit。但是如果使用开源的 AutoFlow,即使对于没有任何开发背景的同学来说,搭建一套这样的问答系统也是一件轻而易举的事情,以下我们具体演示整个搭建的过程。

环境准备

在环境准备阶段,我们主要需要准备以下几项内容:

Docker 环境

需要确保 AutoFlow 运行的机器上具备 Docker 运行环境,因为 AutoFlow 项目中的应用是基于 docker 容器环境运行的。有关 Docker 运行环境的准备工作本文不作说明,安装完成后可使用 docker run hello-world 命令验证安装成功。

AutoFlow 项目

AutoFlow 是一个开源的 github 项目,地址为https://github.com/pingcap/autoflow。下载之后需要在 AutoFlow 根目录下配置相关信息,包括 TiDB 数据库连接信息、EMBEDDING 维度等。

cat>.env<<'EOF'
ENVIRONMENT=production
#可使用python3-c"importsecrets;print(secrets.token_urlsafe(32))"生成密钥
SECRET_KEY="some_secret_key_that_is_at_least_32_characters_long"
TIDB_HOST=
TIDB_PORT=
TIDB_USER=
TIDB_PASSWORD=
TIDB_DATABASE=tidbai_test
#非TiDBserverless环境需要将TIDB_SSL设置为false
TIDB_SSL=false
EMBEDDING_DIMS=1024
EMBEDDING_MAX_TOKENS=4096
EOF

带向量功能的 TiDB 环境

TiDB 最新发布的 v8.4 版本,支持向量搜索功能(实验特性)。向量搜索是一种基于数据语义的搜索方法,可以提供更相关的搜索结果。有关 TiDB 向量搜索功能,参考https://docs.pingcap.com/zh/tidb/v8.4/vector-search-overview。

需要确保 TiDB 8.4 集群正常运行,且已经创建有 AutoFlow 配置中指定的 TIDB_DATABASE 数据库(必须为空库)。

mysql>selectversion();
+--------------------+
|version()|
+--------------------+
|8.0.11-TiDB-v8.4.0|
+--------------------+
1rowinset(0.00sec)
mysql>createdatabasetidbai_test;
QueryOK,0rowsaffected(0.52sec)

智谱 AI API Key

注册并登录智谱 AI 平台https://bigmodel.cn/,在个人中心->API kys 添加新的 API Key 并复制保存。注意,如果免费创建的用户已经超过一定的时效期限,API Key 将是无效的。

数据初始化

运行数据迁移以创建所需的表并创建初始管理员用户:

cdautoflow
dockercompose-fdocker-compose-cn.ymlrunbackend/bin/sh-c"alembicupgradehead"
dockercompose-fdocker-compose-cn.ymlrunbackend/bin/sh-c"pythonbootstrap.py"

当看到如上输出结果时,说明初始化这一步已经成功(注意保存好红色字体中的密码以备后面使用)。这时我们去 TiDB 数据库中查看,发现 tidbai_test 这个库中已经自动创建出了相应的表并有一些初始化数据,符合预期。

启动知识库应用

运行以下 docker compose 命令启动知识库应用程序:

cdautoflow
dockercompose-fdocker-compose-cn.ymlup-d--force-recreate

网页访问和配置知识库应用

应用启动成功后,我们可以直接通过默认的 3000 端口访问相应的界面进行下一步操作了。使用默认管理员用户 admin@example.com 以及上述应用启动打印的密码进行登录。

登录成功后,会弹出如下图所示的提示框,后面我们只要按照提示框一步步进行相应配置即可。

注意:3000 这个端口是 TiDB 数据库默认的 Grafana 端口号,如果把 AutoFlow 部署在和 Grafana 相同的节点,需要考虑端口冲突问题。

1. 配置 LLM

此步骤需要配置的内容包括:

  • 模型名称
  • 模型提供商(选择 OpenAI Like)
  • 模型型号(如 glm-4-0520)
  • 智谱 AI API KEY(见环境准备阶段)
  • 高级选项-> api_base 路径(需与 LLM 对应)
  • 是否默认 LLM(是或否)

配置完成后,点击 Create LLM 创建 LLM 关联。需要注意的是,这里提供的 API Key 必须是一个有效的 Key,如果创建 API Key 的账户本身就过时,创建 LLM 时可能就会遇到以下报错。如果只是为了测试用途,可以重新注册一个账号并取得一个新的 API Key 试用。

FailedtocreateLLM
Errorcode:429-{'error':{'code':'1113','message':'您的账户已欠费,请充值后重试。'}}

2. 配置 Embedding 模型

此步骤需要配置的内容包括:

  • embedding 名称
  • 模型提供商(选择 OpenAI Like)
  • 模型型号(如 embedding-2)
  • 智谱 AI API KEY(与上述相同)

配置完成后,点击 Create Embedding Model 创建 Embedding 模型。需要注意的是,这里的 Model 必须要与环境变量中的 EMBEDDING_DIMS 对应,否则可能会出现以下类似报错。

FailedtocreateEmbeddingModel
Currentlyweonlysupport1536dimsembedding,got1024dims.

3. 配置数据来源

这里的数据来源可以是本地文件,也可以是具体的网址。这里我们配置具体有关 TiDB 和 MySQL 兼容性的网页https://docs.pingcap.com/zh/tidb/stable/mysql-compatibility为数据来源。具体配置内容包括:

  • 数据源名称
  • 数据源描述
  • 网页 URL(可以配置一个或多个)
  • 是否 build 知识图谱 Index(是或否)

配置完成后,点击 Create Datasource 创建数据来源。当然,如果有本地文件,也可以直接导入本地文件并创建数据源。另外如果不是在初始化时配置数据源,我们也可以在后续的过程中手动添加更多的数据源,下图显示将一个本地的文档导入为数据源。

4. 查看索引创建进度

上述步骤配置完成后,应用将基于配置的数据源进行向量化并创建索引,这需要一定的时间,具体耗时跟数据源的多少以及机器的配置都有关。通过页面左侧菜单栏-> Index Progress 查看索引创建进度,绿色代表索引创建成功,蓝色代表正在创建,红色代表创建失败。下图表示 Vector Index 已经创建成功,Knowlege Graph Index 正在创建中。当两个图表都变成绿色时,代表全部创建成功。

体验智能问答

至此,我们已经完成了配置数据源并完成了向量化存储及向量索引的创建。在网页的左侧菜单栏中,我们可以点击 Datasources 查看当前数据源, LLMs 查看当前 LLM,Embedding Model 查看 Embedding 模型。

我们现在也可以开始向自己搭建的 tidb.ai 咨询有关 TiDB 的问题了,比如提问 "TiFlash 高性能列式分析引擎"。从结果可以看出,本地知识库问答机器人引用导入的文档并作出了相似回答,而假如我们删除数据源之后再提出相同的问题,它的回答是 Empty Response。下图对比充分说明了 TiDB 向量搜索在基础 LLM 大模型的增强能力。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
为什么以色列不敢轻易碰阿尔及利亚?

为什么以色列不敢轻易碰阿尔及利亚?

陆弃
2025-09-14 08:30:06
钱多有何用?儿子涉毒女儿拾荒流浪,71岁成龙晚年凄凉,无人同情

钱多有何用?儿子涉毒女儿拾荒流浪,71岁成龙晚年凄凉,无人同情

有范又有料
2025-09-09 15:22:11
横扫雨果夺冠,被追分,雨果的日本裔女友尖叫,谁注意王楚钦反应

横扫雨果夺冠,被追分,雨果的日本裔女友尖叫,谁注意王楚钦反应

东球弟
2025-09-14 20:40:52
刚设保护区,黄岩岛就爆发冲突,大批军机拦截,董军接到美方电话

刚设保护区,黄岩岛就爆发冲突,大批军机拦截,董军接到美方电话

漫步独行侠
2025-09-13 23:35:05
“辞职看世界”的女老师,10年后现状曝光:黯然回乡,老公已分手

“辞职看世界”的女老师,10年后现状曝光:黯然回乡,老公已分手

梦录的西方史话
2025-09-08 17:40:03
买人可打高分,卖人却无比艰难?阿森纳怎么保证赛季财政均衡

买人可打高分,卖人却无比艰难?阿森纳怎么保证赛季财政均衡

里芃芃体育
2025-09-15 05:00:06
中国外长在斯洛文尼亚表态引发广泛关注,多国媒体转引

中国外长在斯洛文尼亚表态引发广泛关注,多国媒体转引

环球网资讯
2025-09-15 07:02:41
跨设区市!泰州已落地

跨设区市!泰州已落地

元爸体育
2025-09-14 20:03:33
70岁演员任达华追星成功,和王楚钦合照上了,王楚钦又帅又可爱

70岁演员任达华追星成功,和王楚钦合照上了,王楚钦又帅又可爱

甜柠聊史
2025-09-14 23:56:11
人民日报评论:预制菜国标来了,最高罚10万,预制菜还有明天吗?

人民日报评论:预制菜国标来了,最高罚10万,预制菜还有明天吗?

科普100克克
2025-09-15 01:12:26
一家五口自杀后续:4封遗书爆死因,一个月被骗上千万,熟人做局

一家五口自杀后续:4封遗书爆死因,一个月被骗上千万,熟人做局

一月爱八月
2025-09-10 16:07:58
“早晚刷牙”是错的?医生叮嘱:过了60岁,最好改掉4个刷牙习惯

“早晚刷牙”是错的?医生叮嘱:过了60岁,最好改掉4个刷牙习惯

荷兰豆爱健康
2025-09-02 12:44:24
深圳楼市太燃了,深圳楼市蛇口待售二手房从1590套变成2092套

深圳楼市太燃了,深圳楼市蛇口待售二手房从1590套变成2092套

有事问彭叔
2025-09-13 16:56:59
北京等地9月现冰雹是否罕见?中央气象台专家回应

北京等地9月现冰雹是否罕见?中央气象台专家回应

新京报
2025-09-14 19:11:07
不五连胜不理发!曼联一球迷发起挑战,近一年从平头变蓬蓬头

不五连胜不理发!曼联一球迷发起挑战,近一年从平头变蓬蓬头

直播吧
2025-09-14 15:40:11
学编程的小学生天塌了?蓝桥杯跌出教育部竞赛白名单

学编程的小学生天塌了?蓝桥杯跌出教育部竞赛白名单

壹零社
2025-09-12 16:49:05
81岁刘兰芳现状曝光:住北京破旧楼房商演不敢停,俩儿子都已去世

81岁刘兰芳现状曝光:住北京破旧楼房商演不敢停,俩儿子都已去世

小兰聊历史
2025-09-12 16:54:27
美国国会挑战川普团伙,乌克兰对俄发动大规模无人机袭击

美国国会挑战川普团伙,乌克兰对俄发动大规模无人机袭击

近距离
2025-09-12 20:47:16
越闹越大!贾国龙回应争议犯了三个严重错误,声誉无法挽回

越闹越大!贾国龙回应争议犯了三个严重错误,声誉无法挽回

千言娱乐记
2025-09-13 18:57:38
“越来越难买了”,进口药大举撤离中国医院,国产药真不管用吗?

“越来越难买了”,进口药大举撤离中国医院,国产药真不管用吗?

燕梳楼频道
2025-09-12 18:41:06
2025-09-15 07:48:49
PingCAP
PingCAP
分布式数据库TiDB背后团队
553文章数 627关注度
往期回顾 全部

科技要闻

AI眼镜能否成为下一代人机互动的超级入口?

头条要闻

NASA叫嚣美国"一定会在中国之前登月" 前局长当众拆台

头条要闻

NASA叫嚣美国"一定会在中国之前登月" 前局长当众拆台

体育要闻

利物浦1-0绝杀十人伯恩利 萨拉赫95分钟点射

娱乐要闻

花泽香菜官宣离婚 结束与老公5年婚姻

财经要闻

西贝贾国龙,“错”得离谱

汽车要闻

混动狂潮 835马力V12 阿斯顿·马丁的最后浪漫

态度原创

房产
旅游
亲子
健康
艺术

房产要闻

「世界冠军×人居升阶」白鹅潭CLD封面,实力馥见人生新高度!

旅游要闻

热闻|清明假期将至,热门目的地有哪些?

亲子要闻

张檬家宝贝Dylan首亮相小区,5个月被吓哭,胆小模样引全网心疼

内分泌科专家破解身高八大谣言

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

无障碍浏览 进入关怀版