SQLBot icon indicating copy to clipboard operation
SQLBot copied to clipboard

sqlbot在使用中的一些问题与建议

Open ZhangChHao opened this issue 5 months ago • 4 comments

使用背景:尝试在项目中使用sqlbot辅助用户通过对话的方式查看感兴趣的指标。

问题1:数据库中存在上百张表,如果选择整个库中的所有表,会导致系统提示词超长且可能溢出,使用成本也会很高。 建议:能否对问题做一个预处理机制,通过预处理筛选出相关度topn的表,当前这个预处理机制可能会很复杂依赖表自身的描述信息,字段信息等因素,需要具体讨论可行的方案。

问题2:同一个数据源中,能否提供主题域的概念?比如电商场景下:一个库中有上百张表,常见的主题域可能是订单主题域、用户主题域、商品主题域......,通过划分主题域并且在主题域中配置好表与表之间的关系,在对话时,先通过问题预测主题域,获取命中主题域对应表的元数据,理论上也能减小系统提示词的长度。当前这个功能不影响现有的对话流程,如果没有主题域,退化为现有的对话逻辑。

问题3:现有的表关系管理模块,是否能够利用大模型的能力自动生成初版表关系,然后人工进行校对?

ZhangChHao avatar Oct 10 '25 02:10 ZhangChHao

感谢反馈。对于问数时数据表范围的减小,我们已经做了初步支持,但目前使用上会有一些耗时,我们还在优化中,所以没有开放出来。

另外,利用大模型来自动生成表关联关系可能不是太靠谱,有可能会造成额外的工作或者错误,所以我们暂时不考虑支持。

xuwei-fit2cloud avatar Oct 10 '25 02:10 xuwei-fit2cloud

想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?

KevinZhang19870314 avatar Oct 17 '25 08:10 KevinZhang19870314

想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?

现在的版本是库中选中的表和字段,全部作为上下文传递给大模型。上下文可能会溢出。 main分支上最新的代码,我看是加了rag的流程,通过问题进行了语义搜索,默认获取了最相关的top10,然后通过这top10获取了与之设置了关联关系的其他表结构作为补充。

ZhangChHao avatar Oct 17 '25 09:10 ZhangChHao

想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?

现在的版本是库中选中的表和字段,全部作为上下文传递给大模型。上下文可能会溢出。 main分支上最新的代码,我看是加了rag的流程,通过问题进行了语义搜索,默认获取了最相关的top10,然后通过这top10获取了与之设置了关联关系的其他表结构作为补充。

谢谢你的回答,RAG我也试过,在大量表的情况下还是不准的,有遗漏或者是拿到的相似但不相关~

KevinZhang19870314 avatar Oct 19 '25 07:10 KevinZhang19870314