(Windows平台)基于RAGFlow中agent的text2sql尝试


前言

上篇文章中,笔者在Windows平台安装了docker和RAGFlow,建立了本地知识库。本文接下来要介绍如何使用 RAGFlow 实现 Text2SQL。


一、什么是Text2SQL?

Text2SQL利用自然语言处理(NLP)技术,将用户用日常语言提出的问题(如“北京客户的总订单额是多少?”)转化为对应的SQL查询(如SELECT SUM(amount) FROM orders JOIN customers ON orders.customer_id = customers.id WHERE city = ‘北京’;)。
旨在帮助用户无需掌握SQL语法即可直接通过自然语言与数据库交互。

二、RAGFlow中对text2sql的实现方法:agent

2024年9月,RAGFlow提供了一份官方教程。接下来以此为基础,详细介绍下如何运行。

步骤1. 新建agent,并使用DB Assistant模板

在这里插入图片描述
在这里插入图片描述

步骤2. 配置知识库

首先需要访问:https://huggingface.co/datasets/InfiniFlow/text2sql/tree/main …科学上网
把三个文件下载下来。
在这里插入图片描述
接下来要利用上面三个文件,分别创建三个知识库;在导入文件后,解析之前,配置每个知识库的切片方式。
在这里插入图片描述
DB Description 知识库:该知识库包含了查询到的数据库的准确信息,包括但不限于数据库表的含义以及这些表中不同字段的意义。借助数据库中的详细描述,大型语言模型可以更准确地将用户问题转换为 SQL 语句。建议配置 DB Description 知识库解析设置如下:
在这里插入图片描述
DDL 知识库:LLM 需要准确的 DDL(数据定义语言)数据来生成 SQL 语句,例如表结构和字段信息。DDL 知识库保存正确的 DDL 数据,以便进行有效的数据库查询。解析 DDL 知识库的推荐配置如下:
在这里插入图片描述
Q->SQL 知识库:在 Text2SQL 过程中,向 LLM 提供自然语言样本及其相应的 SQL 语句对可以提高生成的 SQL 语句的质量。Q->SQL 知识库存储此类对。解析 Q->SQL 知识库的推荐配置如下:

在这里插入图片描述
进入刚刚新建好的agent,找到红框,并分别选中三个知识库。
在这里插入图片描述
在这里插入图片描述

步骤3. 配置数据库

选中红色框Execute SQL 组件中配置数据库所需的参数,填入你自己的数据库信息。如果是docker安装的RAGFlow,在主机地址那里,需要填host.docker.internal。(我试过127.0.0.1或者localhost,不行)填好后,点击右下角test,查看连接是否成功

在这里插入图片描述
在这里插入图片描述

步骤4. 接入好用的api

需要注意的是,如果你将红框选中了比较弱的模型(比如本地安装的deepseek14b等),那么你提问它会回答:ERROR。让我误以为我自己的配置有问题…
所以此处建议使用apikey,接入比较强的模型,才能回答出正确的答案。本文接入了阿里千问的MAX模型。当然,我是刚注册,可以白嫖token…
。
在这里插入图片描述

使用

单击运行按钮,可以进行对话。

单表查询

在这里插入图片描述
如上图所示,数据库中只有一张表格。提问:表格course中共有多少条数据?它能够正确回答:4

在这里插入图片描述

多表查询

在这里插入图片描述

如上图所示,数据库中有三张表格。提问:学生’谢逊’的学号是多少?无法回答。。。

在这里插入图片描述


总结

本文介绍了RAGFlow中agent的使用,尝试了单表查询和多表查询。结果表明,目前的多表查询性能弱。

### 使用 Ragflow Agent 调用 API 为了通过 Ragflow Agent 成功调用 API,需确保已正确配置 Dialogflow 环境并获取必要的认证密钥。具体操作如下: 在设置过程中,应替换 `<Your_Dialogflow_API_KEY>` 为从 Dialogflow 控制台获得的实际 API 密钥,并将 `MyBot` 替换为创建的 Dialogflow 代理名称[^1]。 当涉及到函数调用时,在聊天模型中可以利用可选参数 `tools` 来提供函数定义说明。这允许模型基于给定规格生成相应的函数参数列表。值得注意的是,尽管模型能够模拟这些调用的行为,实际执行仍由开发人员负责处理[^2]。 下面是一个 Python 示例代码片段展示如何构建请求来触发特定工具或服务的方法调用: ```python import requests def call_api_with_ragflow_agent(api_key, agent_name, tool_function): url = f"https://dialogflow.googleapis.com/v2/projects/{agent_name}/locations/global/agents:{tool_function}" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } response = requests.post(url, json={}, headers=headers) if response.status_code == 200: result = response.json() messages = result.get('messages') for message in messages: content = message['content'] func_name = message['name'] print(f"{func_name}: {content}") else: print("Error calling API:", response.text) call_api_with_ragflow_agent("<Your_Dialogflow_API_KEY>", "MyBot", "get_coolest_cities") ``` 上述脚本会向指定 URL 发送 POST 请求以激活名为 `get_coolest_cities` 的功能,并打印返回的信息。对于其他类型的查询(如天气),只需更改传递给 `call_api_with_ragflow_agent()` 函数最后一个参数即可[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值