

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

# 擷取段落
<a name="searching-retrieve"></a>

您可以使用 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_Retrieve.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Retrieve.html) API 做為擷取器，以擷取擴增產生 (RAG) 系統。

RAG 系統使用生成式人工智慧來建置問題回答應用程式。RAG 系統包含擷取器和大型語言模型 (LLM)。鑑於查詢，擷取器會從文件組合中識別最相關的文字區塊，並將其饋送至 LLM，以提供最有用的答案。然後，LLM 會分析相關的文字區塊或段落，並產生查詢的完整回應。

`Retrieve` API 會查看稱為*段落*的文字或摘錄區塊，並傳回與查詢最相關的前文。

如同 [https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html](https://docs.aws.amazon.com/kendra/latest/APIReference/API_Query.html) API，`Retrieve`API 也會搜尋相關資訊。擷取 API 的資訊擷取會考慮查詢的內容，以及索引文件中所有可用的資訊。不過，根據預設，`Query`API 只會傳回最多 100 個字符單字的摘錄段落。使用 `Retrieve` API，您可以擷取最多 200 個字符字和最多 100 個語義相關段落的較長段落。這不包括來自您索引的問答或常見問答集類型回應。這些段落也稱為區塊，是文字摘錄，可以從同一份文件的多個文件和多個部分以語義方式擷取。Kendra 的 GenAI Enterprise Edition 索引提供高準確度的擷取結果，使用向量和關鍵字索引的混合搜尋，以及深度學習模型的排名。

您也可以使用 `Retrieve` API 執行下列動作：
+ 在索引層級覆寫提升
+ 根據文件欄位或屬性進行篩選
+ 根據使用者或其群組對文件的存取進行篩選
+ 檢視擷取段落結果的可信度分數儲存貯體。可信度儲存貯體提供相對排名，指出 Amazon Kendra 回應與查詢相關的可信度。
**注意**  
可信度分數儲存貯體目前僅適用於英文。

您也可以在回應中包含某些欄位，這些欄位可能會提供有用的額外資訊。

`Retrieve` API 目前不支援下列功能：使用[進階查詢語法](https://docs.aws.amazon.com/kendra/latest/dg/searching-example.html#searching-index-query-syntax)進行查詢、建議的查詢[拼字修正](https://docs.aws.amazon.com/kendra/latest/dg/query-spell-check.html)、[面向](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-facets)、自動完成搜尋查詢的[查詢建議](https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions.html)，以及[增量學習](https://docs.aws.amazon.com/kendra/latest/dg/submitting-feedback.html)。任何擷取 API 查詢都不會出現在分析儀表板中。

`Retrieve` API 會共用您為索引設定的[查詢容量單位](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CapacityUnitsConfiguration.html)數量。如需單一容量單位中包含的內容和索引的預設基本容量的詳細資訊，請參閱[調整容量](https://docs.aws.amazon.com/kendra/latest/dg/adjusting-capacity.html)。

**注意**  
如果您使用 Amazon Kendra 開發人員版本，則無法新增容量；您只能在使用 Amazon Kendra Enterprise Edition 時新增容量。如需開發人員和企業版本中包含內容的詳細資訊，請參閱[Amazon Kendra 版本](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html#kendra-editions)。

以下是使用 `Retrieve` API 從 索引中的文件擷取前 100 個最相關段落的範例 "how does amazon kendra work?"

------
#### [ Python ]

```
import boto3
import pprint

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"
# Provide the query text
query = "how does amazon kendra work?"
# You can retrieve up to 100 relevant passages
# You can paginate 100 passages across 10 pages, for example
page_size = 10
page_number = 10

result = kendra.retrieve(
        IndexId = index_id,
        QueryText = query,
        PageSize = page_size,
        PageNumber = page_number)

print("\nRetrieved passage results for query: " + query + "\n")        

for retrieve_result in result["ResultItems"]:

    print("-------------------")
    print("Title: " + str(retrieve_result["DocumentTitle"]))
    print("URI: " + str(retrieve_result["DocumentURI"]))
    print("Passage content: " + str(retrieve_result["Content"]))
    print("------------------\n\n")
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.RetrieveRequest;
import software.amazon.awssdk.services.kendra.model.RetrieveResult;
import software.amazon.awssdk.services.kendra.model.RetrieveResultItem;

public class RetrievePassageExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();
        
        String indxId = "index-id";
        String query = "how does amazon kendra work?";
        Integer pgSize = 10;
        Integer pgNumber = 10;

        RetrieveRequest retrieveRequest = retrieveRequest
            .builder()
            .indexId(indxId)
            .queryText(query)
            .pageSize(pgSize)
            .pageNumber(pgNumber)
            .build();

        RetrieveResult retrieveResult = kendra.retrieve(retrieveRequest);

        System.out.println(String.format("\nRetrieved passage results for query: %s", query));
        for(RetrieveResultItem item: retrieveResult.resultItems()) {
            System.out.println("----------------------");
            System.out.println(String.format("Title: %s", documentTitle));
            System.out.println(String.format("URI: %s", documentURI));
            System.out.println(String.format("Passage content: %s", content));
            System.out.println("-----------------------\n");
        }
    }
}
```

------