langchain 实现text_to_sql操作

那天在咖啡店里,我看着电脑屏幕上跳跃的代码,突然觉得这就像在玩文字游戏。
例如,有一篇关于“如何在图书馆查找书籍”的文章,我想使用 SQL 查询来查找有关这本书的信息。
首先,我必须将这篇文章分解成文字,就像拼图一样。
例如,“图书馆”、“书名”和“作者”等关键字就像拼图中的重要部分。

所以我们要猜测作者想做什么,想查书、借书还是还书?就像猜谜语一样,你必须根据上下文来推断。
如果一位作者说“我正在寻找一本关于历史的书”,那么我知道他想要找到那本书。

接下来,我必须将这些单词和句子转换为 SQL 语法,就像将拼图拼凑成图片一样。
例如,“bookname”对应SQL中的“bookname列”,“author”对应“author列”,那么我使用“LIKE”语句来匹配书名。

我使用LangChain工具,它就像拥有了一个智能助手。
它帮助我管理数据库连接并为我提供模板,以便我可以更快地将这张图片放在一起。

最后,我必须检查一下图片是否真的很好以及我是否真的可以找到这本书。
我输入不同的关键字,看看SQL查询能否正确找到对应的信息。
如果没有,我必须返回并编辑谜题并优化我的代码。

这个过程就像玩一个复杂的游戏,需要耐心、技巧和一点运气。
等等,我突然想到,如果有一天这个游戏能变得更简单就好了。
或许,未来真的会有那么一天。

LLM在中文Text2SQL的实践

上周,一位客户问我他们使用 Text2 SQL 的情况如何,以及如何使用 LLM 转换中文 SQL。
我当时就一头雾水……仔细想了想,发现你的总结还算全面,但是我们需要谈谈实际操作中的酸甜苦辣。

我们来谈谈语义理解。
我2 02 3 年在上海做一个项目,用户问“上周销量超过1 000的品牌”。
结果,LLM将其简单地解释为“前一周销量超过1 000件的品牌”。
相差了三天!后来发现该模型仍然需要依靠手动添加规则来识别中文时间词,仅靠信号是不够的。

我们来谈谈提示。
我遇到的最大的陷阱是我认为例子越多越好。
结果我加了一堆乱七八糟的句子,模型最终变得更加混乱。
后来改成了问答形式,比如先给出一些简单的例子,然后再给出较难的例子,以提高效果。
ChatGLM 信号确实很强,但也不是万能的。
你要了解它的哪些静脉是容易错配的。

还有微调。
我用了我公司去年的销售数据做了一些微调。
我以为这样可以省去麻烦,但我发现数据必须像食物和食物一样干净地进行预处理。
就连“万件”这个单位也需要转换成数字。
该模型自己学习了这些口语表达,例如“卖得很好的品牌”,但根本无法识别它们。
最后,你还是要手动去掉提示中的所有“喜欢”和“就说”。

子任务解析方法还是比较靠谱的。
今年帮杭州一家电商公司的时候,我先对中文分词,然后提取字段,最后准备SQL。
这种逐步教授模型的方法比直接教授模型更可靠。
不过这个工作很累,一直调整参数,直到我秃了……
不过话说回来,这个技术确实很厉害。
我亲眼看到一个不懂SQL的操作员,用GROUP BY将LLM转SQL的提示调整为要求“找到最近涨价最高的品类”。
几年前,他雇了一名实习生三天三夜来做这件事。
但要说它是完美的,那还远远不够。
最后的测试中,漏了一个“和”字,模型就崩溃了。
这是不可接受的。

无论如何,你可以找到答案。
这个东西现在需要手动调节,光靠参数是不行的。
我还在考虑如何让时态更准确......

texttosql每次生成的sql不一样,建议至少什么模型?

您好,我最近遇到了 Text-to SQL 生成的不正确 SQL 语句的问题。
一些专家表示,使用大型语言模型进行推理可能是一个好主意。

首先,大规模推理模型非常强大。
您可以很好地理解自然语言的含义并创建满足您需求的 SQL 查询。
就像一个人懂你的想法,知道你想问什么,并帮你把你的话翻译成数据库能理解的语言。

其次,准确度也可以提高。
了解用户意图并最小化生成的 SQL 与预期结果之间的差距。
以这种方式生成的 SQL 语句更加可靠。

我还想提一下更多措施。

1 .重试机制:如果最初生成的 SQL 不正确,您可以让查询多尝试几次,直到找到最合适的。
2 . SQL验证和修改:必须检查生成的SQL的语法和逻辑。
如果有任何问题,请修复它们,以便您的数据库可以正常运行。

我将简要讨论大型语言模型 (LLM) 在文本到 SQL 中的应用。


理解自然语言问题:LLM 提供对用户提出的问题的深入理解,包括关键字、上下文和逻辑关系。

设置关联:根据您的问题,您可以匹配数据库模式,甚至确定需要查询哪些表、字段和条件。

SQL 查询生成:最后,LLM 可以生成标准化的 SQL 查询以提供正确的结果。

一般来说,大规模推理模型在Text-to-SQL操作方面具有优势。
至少对我来说,这提高了生成的 SQL 语句的准确性和稳定性。
无论如何,这取决于你。
我认为这个方法值得一试。
我还在想这个。
如果你还有什么想法,可以私聊我。