LLMs and SQL
https://blog.langchain.dev/llms-and-sql/
LLM生成SQL很容易
解决的问题是如果让LLM生成的SQL,是valid并且结果正确的
模拟人是如何写SQL的,本身人也是要上下文的,
那么问题就是需要什么上下文,并且如何组织
比较直觉的是,给出schema和几条真实数据的example
当然,langchain会自动生成这种context,
但是有时候,需要去hand-crafted,比如limit3的数据不具备代表性,需要更多的数据,或者limit3的数据有隐私问题需要处理
然后LLM生成的sql,怎么保证语法上是正确的,
这里会用一个工具query_checker_sql_db,去检查,如果语法有错,
可以把报错结果和原始查询发过LLM,让模型自己去纠正
We send the original query with the traceback log to the LLM and ask it to make it right
文中后面说了,两种可能的优化
一种是few-shots,给几个例子
二是,分解成subquerys,尽量把复杂查询分解成子查询,降低复杂度