本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
擷取段落
您可以使用 RetrieveAPI 作為檢索增強生成(RAG)系統的檢索器。
RAG 系統使用生成人工智慧來建置問答應用程式。RAG 系統包括一個檢索器和大型語言模型(LLM)。給定一個查詢,檢索器從文檔的語料庫中識別最相關的文本塊,並將其提供給 LLM 以提供最有用的答案。然後,LLM 分析相關的文本塊或段落,並為查詢生成全面的響應。
Retrieve
API 會查看稱為段落的文字區塊或摘錄,並傳回與查詢最相關的頂部段落。
如同 QueryAPI,Retrieve
API 也會使用語意搜尋來搜尋相關資訊。語意搜尋會考量搜尋查詢的內容,以及索引文件中的所有可用資訊。但是,默認情況下,Query
API 僅返回多達 100 個令牌單詞的摘錄段落。使用 Retrieve
API,您可以檢索多達 200 個令牌單詞的較長段落和多達 100 個與語義相關的段落。這不包括索引中的問題答案或常見問題解答類型回應。這些段落是文本摘錄,可以從多個文檔和同一文檔的多個部分語義中提取。如果在極端情況下,您的文件使用 Retrieve
API 產生零段落,您也可以使用 Query
API 及其回應類型。
您也可以使用 Retrieve
API 執行以下操作:
您還可以在響應中包含某些字段,這些字段可能會提供有用的其他信息。
Retrieve
API 目前不支援 Query
API 支援的所有功能。不支援下列功能:使用進階查詢語法進行查詢、建議的查詢拼字校正、Facting、自動完成搜尋查詢的查詢建議,以及增量學習。請注意,並非所有功能都適用於 Retrieve
API。任何 future 版本的 Retrieve
API 都會記錄在本指南中。
Retrieve
API 會共用您為索引設定的查詢容量單位數量。如需單一容量單位包含的內容以及索引的預設基本容量的詳細資訊,請參閱調整容量。
如果您使用的是 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");
}
}
}