为啥扣子工作流中知识检索节点不起作用?

618 阅读3分钟

我用coze配置了一个有关中考智能问答的工作流,其中有个知识检索节点,配置了相应的知识库,但是检索时结果一直为空,跟踪了下调试过程的各个执行环节,发现其实现时会改写成sql方式去查询,改写的sql也是对的,但是似乎没有SQL执行的环节就结束了,导致最终检索结果为空,以下详细展开描述,请问掘友们有没有碰到过类似问题?是怎么解决的?另外扣子调试中间环节知识库输出的检索SQL,有什么地方可以去测试验证吗?

1)整体工作流配置如下,其中编排时引用了一个“知识检索节点”: 总体流程图.png

2)这个节点配置如下,我是把高中和职高的录取分数线作为表格知识的,一共选择了四个表格,勾选了“表格SQL查询”和“查询改写”等属性:

知识库检索节点设置2.png知识库检索节点设置1.png

3)测试该节点,输入“570分能上哪些学校”,检索结果为空: 测试结果为空.png

4)点击“查看日志”就打开调试窗口,可以看到详细调用栈(说实话工具还是挺成熟的): 知识库检索调试调用栈.png

5)可以看到coze对这个知识库检索,系统底层默认调用了两次“豆包.工具调用”这个模型,查看第一次调用环节可以看到,它是一个对用户问题进行分类的分类器,最终把我这个问题识别成类型“1”:

调试之分类节点.png调试之分类节点2.png

针对这个分类器的coze给的系统指令提示词如下:

# 角色 你是一个分类器,可以对用户的问题进行分类。 你有如下信息可以参考: 
## 技能 
- 如果用户的问题不涉及统计性质,或者是解释性问题,比如为什么、怎么办、怎么样等,则将其归类为 2 类。 
- 如果用户的问题涉及到查询、计数、排序、过滤、分组等统计性质,则将其归类为 1 类。 
- 如果用户的问题涉及比较明确的问答场景,比如是什么、有多少、在哪里等,则将其归类为 1 类。 
## 举例 
Human: 帮我查一下 xx 产品的基本信息 AI: 1 
Human: 天空为什么是蓝色的 AI: 2 
Human: 我想换一个比 xx 容量大的十字开门冰箱有推荐么 AI: 1 
Human: 帮我推荐 3 道销量最高的川菜 AI: 1 
Human: 你的年龄是多少岁 AI: 1 
## 限制 - 回答只可能是 1 或者 2,代表问题的类型。

6)查看第二次调用环节,它是负责调用“豆包.工具调用”这个模型,依据自然语言进行检索SQL的生成(NL2SQL),看了下结果还是挺准确的:

调试之改写sql节点1.png调试之sql改写节点2.png

把生成的SQL复制出来看了下,应该生成的很正确:

SELECT `高中学校名` FROM `2024年杭州中考普通高中录取分数线` WHERE `分数线` <= 570 
UNION 
SELECT `招生学校` FROM `2024年杭州中考中本一体化录取分数线` WHERE `分数线` <= 570 
UNION 
SELECT `学校名称` FROM `2024年杭州中考民办高中录取分数线` 
UNION 
SELECT `学校名称` FROM `2024年杭州中考职高+技校+中专投档线`

7)但然后就没有然后了,没有后续执行节点,然后整个检索结果也是空。

请问掘友们有没有碰到过类似问题?是怎么解决的?另外扣子调试中间环节知识库输出的检索SQL,有什么地方可以去测试验证吗?