本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为结构化数据生成查询
当您将结构化数据存储连接到知识库时,知识库可以根据所查询的数据源的结构将用户提供的自然语言查询转换为 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
字段中包含查询。注意
查询必须用英文写成。
-
转换配置-指定
TEXT_TO_SQL
为。mode
在该textToSqlConfiguration
字段中,指定KNOWLEDGE_BASE
为type
。然后,指定知识库的 ARN。
响应返回一个包含queries
字段中GeneratedQuery对象的数组。该对象包含针对该sql
字段中查询的 SQL 查询。
重要注意事项
以下是使用结构化数据生成查询时的一些关键注意事项。
-
跨区域推理和结构化数据检索
结构化数据检索使用跨区域推理来选择您所在地理区域 AWS 区域 内的最佳数据来处理您的推理请求。这不会产生任何额外费用,并且通过最大限度地提高可用资源和模型可用性来改善客户体验。
交叉推理请求保存在数据最初所在的地理区域内。 AWS 区域 您的数据仍存储在源区域内,但输入提示和输出结果可能会移到该区域之外。所有数据都将通过 Amazon 的安全网络进行加密传输。
有关更多信息,请参阅 通过跨区域推理提高吞吐量。
-
生成的 SQL 查询的准确性
生成的 SQL 查询的准确性可能因上下文、表架构和用户查询的意图而异。在工作负载中使用生成的查询之前,请评估生成的查询以确保它们适合您的用例。
-
检索到的结果数
生成响应时存在以下限制。
-
使用
InvokeAgent
RetrieveAndGenerate
、和RetrieveAndGenerateStream
API 操作时,生成响应时仅使用 10 个检索到的结果。 -
使用
InvokeAgent
API 时,如果检索到的结果超过 10 行,则检索到的总行数不会传递给生成响应的代理。如果您改用RetrieveAndGenerate
API,则生成最终响应的提示中会包含总行数。
-
-
GenerateQuery
API 配额该
GenerateQuery
API 的配额为每秒 2 个请求。
向角色授予访问生成的查询的权限
对于连接到结构化数据源的知识库,如果您想对生成的查询执行一些其他操作,则必须授予执行 API 操作的权限。GenerateQuery
要允许您的 IAM 角色查询连接到结构化数据存储的知识库,请将以下策略附加到该角色:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetKB", "Effect": "Allow", "Action": [ "bedrock:GetKnowledgeBase" ], "Resource": [ "arn:
${Partition}
:bedrock:${Region}
:${Account}
:knowledge-base/${KnowledgeBaseId}
" ] }, { "Sid": "GenerateQueryAccess", "Effect": "Allow", "Action": [ "bedrock:GenerateQuery", "sqlworkbench:GetSqlRecommendations" ], "Resource": "*" }, { "Sid": "Retrieve", "Effect": "Allow", "Action": [ "bedrock:Retrieve", ] "Resource": [ "arn:${Partition}
:bedrock:${Region}
:${Account}
:knowledge-base/${KnowledgeBaseId}
" ] }, { "Sid": "RetrieveAndGenerate", "Effect": "Allow", "Action": [ "bedrock:RetrieveAndGenerate", ] "Resource": [ "*" ] } ] }
您可以删除不需要的语句,具体取决于您的用例:
-
调用
GetKB
和GenerateQuery
语句GenerateQuery才能生成 SQL 查询,这些查询将用户查询和您连接的数据源考虑在内。 -
调用Retrieve该
Retrieve
语句才能从您的结构化数据存储中检索数据。 -
调用RetrieveAndGenerate该
RetrieveAndGenerate
语句才能从您的结构化数据存储中检索数据,并根据这些数据生成响应。