sqlbot在使用中的一些问题与建议
使用背景:尝试在项目中使用sqlbot辅助用户通过对话的方式查看感兴趣的指标。
问题1:数据库中存在上百张表,如果选择整个库中的所有表,会导致系统提示词超长且可能溢出,使用成本也会很高。 建议:能否对问题做一个预处理机制,通过预处理筛选出相关度topn的表,当前这个预处理机制可能会很复杂依赖表自身的描述信息,字段信息等因素,需要具体讨论可行的方案。
问题2:同一个数据源中,能否提供主题域的概念?比如电商场景下:一个库中有上百张表,常见的主题域可能是订单主题域、用户主题域、商品主题域......,通过划分主题域并且在主题域中配置好表与表之间的关系,在对话时,先通过问题预测主题域,获取命中主题域对应表的元数据,理论上也能减小系统提示词的长度。当前这个功能不影响现有的对话流程,如果没有主题域,退化为现有的对话逻辑。
问题3:现有的表关系管理模块,是否能够利用大模型的能力自动生成初版表关系,然后人工进行校对?
感谢反馈。对于问数时数据表范围的减小,我们已经做了初步支持,但目前使用上会有一些耗时,我们还在优化中,所以没有开放出来。
另外,利用大模型来自动生成表关联关系可能不是太靠谱,有可能会造成额外的工作或者错误,所以我们暂时不考虑支持。
想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?
想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?
现在的版本是库中选中的表和字段,全部作为上下文传递给大模型。上下文可能会溢出。 main分支上最新的代码,我看是加了rag的流程,通过问题进行了语义搜索,默认获取了最相关的top10,然后通过这top10获取了与之设置了关联关系的其他表结构作为补充。
想请问下,一种场景,在上百张表或者几张几百个字段的大表的情况下,这个时候问数的时候,sqlbot是如何选取表和字段的?也就是说如何找到准确的表和字段,使得生成的sql准确?
现在的版本是库中选中的表和字段,全部作为上下文传递给大模型。上下文可能会溢出。 main分支上最新的代码,我看是加了rag的流程,通过问题进行了语义搜索,默认获取了最相关的top10,然后通过这top10获取了与之设置了关联关系的其他表结构作为补充。
谢谢你的回答,RAG我也试过,在大量表的情况下还是不准的,有遗漏或者是拿到的相似但不相关~