擷取段落 - Amazon Kendra

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

擷取段落

您可以使用 RetrieveAPI 作為檢索增強生成(RAG)系統的檢索器。

RAG 系統使用生成人工智慧來建置問答應用程式。RAG 系統包括一個檢索器和大型語言模型(LLM)。給定一個查詢,檢索器從文檔的語料庫中識別最相關的文本塊,並將其提供給 LLM 以提供最有用的答案。然後,LLM 分析相關的文本塊或段落,並為查詢生成全面的響應。

RetrieveAPI 會查看稱為段落的文字區塊或摘錄,並傳回與查詢最相關的頂部段落。

如同 QueryAPI,RetrieveAPI 也會使用語意搜尋來搜尋相關資訊。語意搜尋會考量搜尋查詢的內容,以及索引文件中的所有可用資訊。但是,默認情況下,QueryAPI 僅返回多達 100 個令牌單詞的摘錄段落。使用 Retrieve API,您可以檢索多達 200 個令牌單詞的較長段落和多達 100 個與語義相關的段落。這不包括索引中的問題答案或常見問題解答類型回應。這些段落是文本摘錄,可以從多個文檔和同一文檔的多個部分語義中提取。如果在極端情況下,您的文件使用 Retrieve API 產生零段落,您也可以使用 Query API 及其回應類型。

您也可以使用 Retrieve API 執行以下操作:

  • 在索引層級覆寫提升

  • 根據文件欄位或屬性進行篩選

  • 根據使用者或其群組對文件的存取權進行篩選

  • 檢視已擷取之通道結果的可信度分數時段。信賴值區會提供相對排名,指出回應與查詢相關的信 Amazon Kendra 心程度。

    注意

    信心分數值區目前僅適用於英文。

您還可以在響應中包含某些字段,這些字段可能會提供有用的其他信息。

RetrieveAPI 目前不支援 Query API 支援的所有功能。不支援下列功能:使用進階查詢語法進行查詢、建議的查詢拼字校正Facting、自動完成搜尋查詢的查詢建議,以及增量學習。請注意,並非所有功能都適用於 Retrieve API。任何 future 版本的 Retrieve API 都會記錄在本指南中。

RetrieveAPI 會共用您為索引設定的查詢容量單位數量。如需單一容量單位包含的內容以及索引的預設基本容量的詳細資訊,請參閱調整容量

注意

如果您使用的是 Amazon Kendra 開發人員版,則無法新增容量;您只能在使用 Amazon Kendra 企業版時增加容量。如需開發人員和企業版所包含內容的詳細資訊,請參閱Amazon Kendra 版本

以下是使用 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"); } } }