

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 產生結構化資料的查詢
<a name="knowledge-base-generate-query"></a>

當您將結構化資料存放區連線至知識庫時，您的知識庫可以根據要查詢的資料來源結構，將使用者提供的自然語言查詢轉換為 SQL 查詢來查詢它。如果使用：
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)：回應會傳回 SQL 查詢執行的結果。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)：產生的回應是根據 SQL 查詢執行的結果。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)：Amazon Bedrock 知識庫會將查詢的轉換與擷取程序分離。您可以使用此 API 操作，將查詢轉換為 SQL。

## 使用 `GenerateQuery` API
<a name="knowledge-base-generate-query-api"></a>

您可以使用來自 `GenerateQuery` API 操作的回應搭配後續 `Retrieve` 或 `RetrieveAndGenerate` 動作，或將其插入其他工作流程。`GenerateQuery` 可讓您考慮知識庫資料來源的結構，有效率地將查詢轉換為 SQL 查詢。

若要將自然語言查詢轉換為 SQL 查詢，請使用 [Amazon Bedrock 代理程式執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)提交 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) 請求。`GenerateQuery` 資源包含下列欄位：
+ queryGenerationInput – 指定 `TEXT` 作為 `type`，並在 `text` 欄位中包含查詢。
**注意**  
查詢必須以英文撰寫。
+ transformationConfiguration – 指定 `TEXT_TO_SQL` 作為 `mode`。在 `textToSqlConfiguration` 欄位中，指定 `KNOWLEDGE_BASE` 作為 `type`。然後，指定知識庫的 ARN。

回應會傳回 `queries` 欄位中包含 [GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html) 物件的陣列。物件包含 `sql` 欄位中查詢的 SQL 查詢。

## 關鍵考量
<a name="knowledge-base-generate-query-considerations"></a>

以下是使用結構化資料產生查詢時的一些重要考量。
+ 

**跨區域推論和結構化資料擷取**  
結構化資料擷取使用跨區域推論，在您的地理位置AWS 區域中選取最佳 ，以處理您的推論請求。這不會產生任何額外費用，並透過最大化可用資源和模型可用性來改善客戶體驗。

  跨推論請求會保留在 內AWS 區域，而該 是資料最初所在地理位置的一部分。您的資料會保留在來源區域內，但輸入提示和輸出結果可能會移動到此區域之外。所有資料都會透過 Amazon 的安全網路進行加密傳輸。

  如需詳細資訊，請參閱[透過跨區域推論增加輸送量](cross-region-inference.md)。
+ 

**產生的 SQL 查詢的準確性**  
產生的 SQL 查詢的準確性可能會因內容、資料表結構描述和使用者查詢的意圖而有所不同。評估產生的查詢，以確保它們符合您的使用案例，然後再在您的工作負載中使用它們。
+ 

**擷取結果的數量**  
產生回應時，適用下列限制。
  + 使用 `InvokeAgent`、`RetrieveAndGenerate` 和 `RetrieveAndGenerateStream` API 操作時，產生回應時只會使用 10 個擷取的結果。
  + 使用 `InvokeAgent` API 時，如果擷取結果的資料列超過 10 個，則不會將擷取的資料列總數傳遞給代理程式來產生回應。如果您改用 `RetrieveAndGenerate` API，則產生最終回應的提示中會包含資料列總數。
+ 

**`GenerateQuery` API 配額**  
`GenerateQuery` API 的配額為每秒 2 個請求。

## 授予角色許可以存取產生的查詢
<a name="knowledge-base-structured-permissions"></a>

對於轉換為結構化資料來源的知識庫，如果您想要對產生的查詢執行一些額外的操作，則必須授予執行 `GenerateQuery` API 動作的許可。若要允許 IAM 角色查詢連線至結構化資料存放區的知識庫，請將下列政策連接至角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您可以移除不需要的陳述式，視您的使用案例而定：
+ 需要 `GetKB` 和 `GenerateQuery` 陳述式來呼叫 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)，以產生 SQL 查詢，並將使用者查詢和連線的資料來源納入考量。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 需要 `Retrieve` 陳述式，才能從結構化資料存放區擷取資料。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 需要 `RetrieveAndGenerate` 陳述式，才能從結構化資料存放區擷取資料，並根據資料產生回應。