我对此进行了大约一周的研究,但毫无结果,可能是因为这是一个新兴领域。我开始使用 LLM 为我的公司开发文本到 SQL 的解决方案。该模型是人类克劳德第 3 首十四行诗。我遇到了一个问题——两个表具有一对多关系。下面举个例子:
订单:
交易ID | 金额 |
---|---|
001 | 5.45 |
002 | 12.23 |
订单详情:
交易ID | 产品编号 | 数量 |
---|---|---|
001 | A001 | 12 |
001 | B001 | 12 |
001 | C001 | 3 |
002 | D001 | 4 |
现在这两个表是简化的数据模型,但它确实代表了核心问题。可以看到,一张订单在
OrderDetail
表中有多条记录。我需要两种场景:(1)使用 Transaction ID
连接两个表。 (2) 首先从 Transaction ID
表中获取不同的 OrderDetail
,然后加入 Orders
表。问题是我无法让 LLM 一致地起草正确的 SQL 查询。我能想到的最好办法是将场景(2)的请求分成两部分,要求LLM获得不同的Transaction ID
,然后在第二个请求期间,要求加入。
这对我的最终用户不起作用,假设他们中的大多数人没有 SQL 知识,并且会用自然语言提出问题。现在对于LLM来说这是否太复杂了,首先确定连接的性质,然后根据请求决定最合适的SQL?对此有什么想法吗?
通过询问AI解决了这个问题哈哈。以下是可以执行的几个步骤:
这不是一个理想的解决方案,但确实给了我正确的结果。可能可以通过使用 RAG 构建矢量数据库来升级,尽管我无法找到有关如何通过 RAG 知识库解决此问题的更多信息。