本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生成对结构化数据的查询
在将结构化数据存储连接到知识库时,知识库会根据将查询的数据来源的结构,将用户提供的自然语言查询转换为 SQL 查询,从而对其进行查询。当您使用以下各项时:
-
Retrieve:响应返回 SQL 查询执行的结果。
-
RetrieveAndGenerate:生成的响应基于 SQL 查询执行的结果。
-
GenerateQuery:Amazon Bedrock 知识库将查询的转换与检索过程分开。您可以使用此 API 操作将查询转换为 SQL 查询。
使用 GenerateQuery API
您可以将来自 GenerateQuery API 操作的响应与后续 Retrieve 或 RetrieveAndGenerate 操作结合使用,也可以将该响应插入其他工作流中。利用 GenerateQuery,您可以考虑知识库数据来源的结构,从而高效地将查询转换为 SQL 查询。
要将自然语言查询变成 SQL 查询,请使用适用于 Amazon Bedrock 的代理运行时终端节点提交GenerateQuery请求。GenerateQuery 请求包含以下字段:
-
queryGenerationInput — 指定
TEXT为type并在text字段中包含查询。注意
必须用英文撰写查询。
-
transformationConfiguration – 将
TEXT_TO_SQL指定为mode。在textToSqlConfiguration字段中,将KNOWLEDGE_BASE指定为type。然后,指定知识库的 ARN。
响应返回一个包含queries字段中GeneratedQuery对象的数组。该对象包含针对 sql 字段中查询的 SQL 查询。
重要注意事项
以下是使用结构化数据生成查询时的一些关键注意事项。
-
跨区域推理和结构化数据检索
结构化数据检索使用跨区域推理来选择您所在地理区域AWS 区域内的最佳数据来处理您的推理请求。这不会产生任何额外费用,并且会最大限度地提高可用资源和模型的可用性,进而改善客户体验。
交叉推理请求保存在数据最初所在的地理区域内。AWS 区域您的数据仍存储在源区域内,但输入提示和输出结果可能会移至该区域之外。所有数据都将通过 Amazon 的安全网络进行加密传输。
有关更多信息,请参阅 通过跨区域推理提高吞吐量。
-
生成的 SQL 查询的准确性
生成的 SQL 查询的准确性可能因上下文、表架构和用户查询意图而异。先评测生成的查询以确保它们适合您的使用案例,之后再在工作负载中使用这些查询。
-
检索到的结果数
在生成响应时,以下限制将适用。
-
如果使用的是
InvokeAgent、RetrieveAndGenerate和RetrieveAndGenerateStreamAPI 操作,则在生成响应时,仅使用 10 个检索到的结果。 -
在使用
InvokeAgentAPI 时,如果检索到的结果超过 10 行,则检索到的行总数不会传递给用于生成响应的代理。如果您改用RetrieveAndGenerateAPI,则总行数包含在用于生成最终响应的提示中。
-
-
GenerateQueryAPI 配额该
GenerateQueryAPI 的配额为每秒 2 个请求。
向角色授予对生成的查询的访问权限
对于连接到结构化数据来源的知识库,如果您想对生成的查询执行一些其他操作,则必须授予执行 GenerateQuery API 操作的权限。要使 IAM 角色能够查询连接到结构化数据存储的知识库,请将以下策略附加到该角色:
您可以根据使用案例移除不需要的语句:
-
调用
GetKB和GenerateQuery语句GenerateQuery才能生成 SQL 查询,这些查询将用户查询和您连接的数据源考虑在内。 -
需要使用
Retrieve语句来调用 Retrieve 以从结构化数据存储中检索数据。 -
需要使用
RetrieveAndGenerate语句来调用 RetrieveAndGenerate 以从结构化数据存储中检索数据,并根据该数据生成响应。