選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

對搜尋服務的結果進行一致排名

焦點模式
對搜尋服務的結果進行一致排名 - Amazon Kendra

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

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

Amazon Kendra Intelligent Ranking 使用 Amazon Kendra的語意搜尋功能來重新排序搜尋服務的結果。其做法是考量搜尋查詢的內容,以及搜尋服務文件的所有可用資訊。 Amazon Kendra 智慧型排名可以改善簡單的關鍵字比對。

CreateRescoreExecutionPlan API 會建立用於佈建 Rescore API 的 Amazon Kendra 智慧型排名資源。Rescore API 會重新排序來自諸如 OpenSearch (自我管理) 等搜尋服務的搜尋結果。

當您呼叫 時CreateRescoreExecutionPlan,您可以設定重新排序搜尋服務結果所需的容量單位。如果您不需要超過單一單位預設值的容量單位,請勿變更預設值。僅為您的 rescore 執行計畫提供名稱。您最多可以設定 1000 個額外單位。如需單一容量單位中包含哪些內容的資訊,請參閱調整容量。佈建 Amazon Kendra Intelligent Ranking 後,會根據您設定的容量單位,按小時收費。查看免費方案和定價資訊

當您呼叫 時,系統會產生重新評分執行計畫 ID,並在回應中傳回CreateRescoreExecutionPlanRescore API 使用 重新評分執行計畫 ID,使用您設定的容量來重新排序搜尋服務的結果。您可以在搜尋服務的組態檔案中包含 rescore 執行計畫 ID。例如,如果您使用 OpenSearch (自我管理),請在 docker-compose.yml 或 opensearch.yml 檔案中包含 rescore 執行計畫 ID,請參閱智慧排名 OpenSearch (自助) 結果

當您呼叫 時,回應中也會產生 Amazon Resource Name (ARN)CreateRescoreExecutionPlan。您可以使用此 ARN 在 AWS Identity and Access Management (IAM) 中建立許可政策,以限制使用者存取特定重新評分執行計畫的特定 ARN。如需授予許可以將 Rescore API 用於特定 rescore 執行計畫 IAM 的政策範例,請參閱Amazon Kendra 適用於自我管理 OpenSearch 的 Intelligent Ranking

以下是建立容量單位設為 1 的重新評分執行計劃的範例。

CLI
aws kendra-ranking create-rescore-execution-plan \ --name MyRescoreExecutionPlan \ --capacity-units '{"RescoreCapacityUnits":1}' Response: { "Id": "<rescore execution plan ID>", "Arn": "arn:aws:kendra-ranking:<region>:<account-id>:rescore-execution-plan/<rescore-execution-plan-id>" }
Python
import boto3 from botocore.exceptions import ClientError import pprint import time kendra_ranking = boto3.client("kendra-ranking") print("Create a rescore execution plan.") # Provide a name for the rescore execution plan name = "MyRescoreExecutionPlan" # Set your required additional capacity units # Don't set capacity units if you don't require more than 1 unit given by default capacity_units = 1 try: rescore_execution_plan_response = kendra_ranking.create_rescore_execution_plan( Name = name, CapacityUnits = {"RescoreCapacityUnits":capacity_units} ) pprint.pprint(rescore_execution_plan_response) rescore_execution_plan_id = rescore_execution_plan_response["Id"] print("Wait for Amazon Kendra to create the rescore execution plan.") while True: # Get the details of the rescore execution plan, such as the status rescore_execution_plan_description = kendra_ranking.describe_rescore_execution_plan( Id = rescore_execution_plan_id ) # When status is not CREATING quit. status = rescore_execution_plan_description["Status"] print(" Creating rescore execution plan. Status: "+status) time.sleep(60) if status != "CREATING": break except ClientError as e: print("%s" % e) print("Program ends.")
Java
import java.util.concurrent.TimeUnit; import software.amazon.awssdk.services.kendraranking.KendraRankingClient; import software.amazon.awssdk.services.kendraranking.model.CapacityUnitsConfiguration; import software.amazon.awssdk.services.kendraranking.model.CreateRescoreExecutionPlanRequest; import software.amazon.awssdk.services.kendraranking.model.CreateRescoreExecutionPlanResponse; import software.amazon.awssdk.services.kendraranking.model.DescribeRescoreExecutionPlanRequest; import software.amazon.awssdk.services.kendraranking.model.DescribeRescoreExecutionPlanResponse; import software.amazon.awssdk.services.kendraranking.model.RescoreExecutionPlanStatus; public class CreateRescoreExecutionPlanExample { public static void main(String[] args) throws InterruptedException { String rescoreExecutionPlanName = "MyRescoreExecutionPlan"; int capacityUnits = 1; KendraRankingClient kendraRankingClient = KendraRankingClient.builder().build(); System.out.println(String.format("Creating a rescore execution plan named %s", rescoreExecutionPlanName)); CreateRescoreExecutionPlanResponse createResponse = kendraRankingClient.createRescoreExecutionPlan( CreateRescoreExecutionPlanRequest.builder() .name(rescoreExecutionPlanName) .capacityUnits( CapacityUnitsConfiguration.builder() .rescoreCapacityUnits(capacityUnits) .build() ) .build() ); String rescoreExecutionPlanId = createResponse.id(); System.out.println(String.format("Waiting for rescore execution plan with id %s to finish creating.", rescoreExecutionPlanId)); while (true) { DescribeRescoreExecutionPlanResponse describeResponse = kendraRankingClient.describeRescoreExecutionPlan( DescribeRescoreExecutionPlanRequest.builder() .id(rescoreExecutionPlanId) .build() ); RescoreExecutionPlanStatus rescoreExecutionPlanStatus = describeResponse.status(); if (rescoreExecutionPlanStatus != RescoreExecutionPlanStatus.CREATING) { break; } TimeUnit.SECONDS.sleep(60); } System.out.println("Rescore execution plan creation is complete."); } }
aws kendra-ranking create-rescore-execution-plan \ --name MyRescoreExecutionPlan \ --capacity-units '{"RescoreCapacityUnits":1}' Response: { "Id": "<rescore execution plan ID>", "Arn": "arn:aws:kendra-ranking:<region>:<account-id>:rescore-execution-plan/<rescore-execution-plan-id>" }

以下是更新 rescore 執行計劃以將容量單位設定為 2 的範例。

CLI
aws kendra-ranking update-rescore-execution-plan \ --id <rescore execution plan ID> \ --capacity-units '{"RescoreCapacityUnits":2}'
Python
import boto3 from botocore.exceptions import ClientError import pprint import time kendra_ranking = boto3.client("kendra-ranking") print("Update a rescore execution plan.") # Provide the ID of the rescore execution plan id = <rescore execution plan ID> # Re-set your required additional capacity units capacity_units = 2 try: kendra_ranking.update_rescore_execution_plan( Id = id, CapacityUnits = {"RescoreCapacityUnits":capacity_units} ) print("Wait for Amazon Kendra to update the rescore execution plan.") while True: # Get the details of the rescore execution plan, such as the status rescore_execution_plan_description = kendra_ranking.describe_rescore_execution_plan( Id = id ) # When status is not UPDATING quit. status = rescore_execution_plan_description["Status"] print(" Updating rescore execution plan. Status: "+status) time.sleep(60) if status != "UPDATING": break except ClientError as e: print("%s" % e) print("Program ends.")
Java
import java.util.concurrent.TimeUnit; import software.amazon.awssdk.services.kendraranking.KendraRankingClient; import software.amazon.awssdk.services.kendraranking.model.CapacityUnitsConfiguration; import software.amazon.awssdk.services.kendraranking.model.DescribeRescoreExecutionPlanRequest; import software.amazon.awssdk.services.kendraranking.model.DescribeRescoreExecutionPlanResponse; import software.amazon.awssdk.services.kendraranking.model.RescoreExecutionPlanStatus; import software.amazon.awssdk.services.kendraranking.model.UpdateRescoreExecutionPlanRequest; import software.amazon.awssdk.services.kendraranking.model.UpdateRescoreExecutionPlanResponse; public class UpdateRescoreExecutionPlanExample { public static void main(String[] args) throws InterruptedException { String rescoreExecutionPlanId = <rescore execution plan ID>; int newCapacityUnits = 2; KendraRankingClient kendraRankingClient = KendraRankingClient.builder().build(); System.out.println(String.format("Updating a rescore execution plan named %s", rescoreExecutionPlanId)); UpdateRescoreExecutionPlanResponse updateResponse = kendraRankingClient.updateRescoreExecutionPlan( UpdateRescoreExecutionPlanRequest.builder() .id(rescoreExecutionPlanId) .capacityUnits( CapacityUnitsConfiguration.builder() .rescoreCapacityUnits(newCapacityUnits) .build() ) .build() ); System.out.println(String.format("Waiting for rescore execution plan with id %s to finish updating.", rescoreExecutionPlanId)); while (true) { DescribeRescoreExecutionPlanResponse describeResponse = kendraRankingClient.describeRescoreExecutionPlan( DescribeRescoreExecutionPlanRequest.builder() .id(rescoreExecutionPlanId) .build() ); RescoreExecutionPlanStatus rescoreExecutionPlanStatus = describeResponse.status(); if (rescoreExecutionPlanStatus != RescoreExecutionPlanStatus.UPDATING) { break; } TimeUnit.SECONDS.sleep(60); } System.out.println("Rescore execution plan update is complete."); } }
aws kendra-ranking update-rescore-execution-plan \ --id <rescore execution plan ID> \ --capacity-units '{"RescoreCapacityUnits":2}'

以下是使用 Rescore API 的範例。

CLI
aws kendra-ranking rescore \ --rescore-execution-plan-id <rescore execution plan ID> \ --search-query "intelligent systems" \ --documents "[{\"Id\": \"DocId1\",\"Title\": \"Smart systems\", \"Body\": \"intelligent systems in everyday life\",\"OriginalScore\": 2.0}, {\"Id\": \"DocId2\",\"Title\": \"Smarter systems\", \"Body\": \"living with intelligent systems\",\"OriginalScore\": 1.0}]"
Python
import boto3 from botocore.exceptions import ClientError import pprint kendra_ranking = boto3.client("kendra-ranking") print("Use the Rescore API.") # Provide the ID of the rescore execution plan id = <rescore execution plan ID> # The search query from the search service query = "intelligent systems" # The list of documents for Intelligent Ranking to rescore document_list = [ {"Id": "DocId1", "Title": "Smart systems", "Body": "intelligent systems in everyday life", "OriginalScore": 2.0}, {"Id": "DocId2", "Title": "Smarter systems", "Body": "living with intelligent systems", "OriginalScore": 1.0} ] try: rescore_response = kendra_ranking.rescore( rescore_execution_plan_id = id, search_query = query, documents = document_list ) print(rescore_response["RescoreId"]) print(rescore_resposne["ResultItems"]) except ClientError as e: print("%s" % e) print("Program ends.")
Java
import java.util.ArrayList; import java.util.List; import software.amazon.awssdk.services.kendraranking.KendraRankingClient; import software.amazon.awssdk.services.kendraranking.model.RescoreRequest; import software.amazon.awssdk.services.kendraranking.model.RescoreResponse; import software.amazon.awssdk.services.kendraranking.model.Document; public class RescoreExample { public static void main(String[] args) { String rescoreExecutionPlanId = <rescore execution plan ID>; String query = "intelligent systems"; List<Document> documentList = new ArrayList<>(); documentList.add( Document.builder() .id("DocId1") .originalScore(2.0F) .body("intelligent systems in everyday life") .title("Smart systems") .build() ); documentList.add( Document.builder() .id("DocId2") .originalScore(1.0F) .body("living with intelligent systems") .title("Smarter systems") .build() ); KendraRankingClient kendraRankingClient = KendraRankingClient.builder().build(); RescoreResponse rescoreResponse = kendraRankingClient.rescore( RescoreRequest.builder() .rescoreExecutionPlanId(rescoreExecutionPlanId) .searchQuery(query) .documents(documentList) .build() ); System.out.println(rescoreResponse.rescoreId()); System.out.println(rescoreResponse.resultItems()); } }
aws kendra-ranking rescore \ --rescore-execution-plan-id <rescore execution plan ID> \ --search-query "intelligent systems" \ --documents "[{\"Id\": \"DocId1\",\"Title\": \"Smart systems\", \"Body\": \"intelligent systems in everyday life\",\"OriginalScore\": 2.0}, {\"Id\": \"DocId2\",\"Title\": \"Smarter systems\", \"Body\": \"living with intelligent systems\",\"OriginalScore\": 1.0}]"
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。