训练建议
主要因素
系统输出准确性的主要决定因素是训练数据的质量。最重要的训练数据是已知的正确问题到SQL对的。这是一个风格化的图表,展示了预期的内容:
原因是系统使用了一个检索增强层来生成SQL查询。该层是在一个问题和SQL对参考语料库上训练的。已知正确的问题和SQL对越多,系统的准确性就越高。
问题到SQL对包含了丰富的嵌入信息,系统可以利用这些信息来理解问题的上下文。当用户倾向于提出具有很多歧义的问题时,这一点尤其重要。已知的正确SQL实际上编码了大量信息:
当有新问题出现时,即使是非常小的LLMs也可以采用示例正确答案,并对SQL进行轻微修改以适应新问题。已知的正确SQL与新问题越接近,系统的准确性就越高。在上面的例子中,如果用户问“按销售额计算的前5名客户是谁?”,几乎任何LLM都能准确回答这个问题。
始终在Jupyter笔记本中开始
初次使用系统时,我们通常建议在Jupyter中使用,这样您可以最大限度地控制您输入的训练数据,并可以执行批量操作,如提取数据库模式等。
提示 / 建议
当你刚开始使用并运行时,尝试在提问时给出一些关于你偏好的“提示”。例如,如果你在询问关于特定表的问题,你可能希望在问题中包含表名。这将帮助系统理解你的问题背景并提供更准确的答案。
SQL语句
SELECT * FROM my_table
是一个不好的SQL语句示例,用于训练系统。它太泛泛了,没有提供足够的上下文让系统理解表的结构。如果你使用SQL语句进行训练,最好使用包含列名的语句。例如,SELECT id, name, email FROM my_table
是一个更好的SQL语句示例,用于训练系统。