如何指导LLM确定join是一对多还是多对多

问题描述 投票:0回答:1

我对此进行了大约一周的研究,但毫无结果,可能是因为这是一个新兴领域。我开始使用 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?对此有什么想法吗?

artificial-intelligence large-language-model
1个回答
0
投票

通过询问AI解决了这个问题哈哈。以下是可以执行的几个步骤:

  1. 在 schema 中添加表描述、列描述,帮助 LLM 理解每一列
  2. 描述数据模型,每个表的主外键,以及是一对多还是多对多关系
  3. 在提示中提供查询需求,例如要求模型构建子查询,然后使用子查询进行连接。

这不是一个理想的解决方案,但确实给了我正确的结果。可能可以通过使用 RAG 构建矢量数据库来升级,尽管我无法找到有关如何通过 RAG 知识库解决此问题的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.