

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用自定义指标创建“检索并生成”RAG 评测作业
<a name="knowledge-base-evaluation-create-randg-custom"></a>

要创建使用自定义指标的评测作业，您需要提供：
+ 包含供评判模型使用的详细指令的提示
+ 要用于自定义指标的评测器模型

您还可以指定一个评分量表（输出架构），供评判模型用于对生成器模型的响应进行评分。

您可以使用 AWS 管理控制台、AWS Command Line Interface（AWS CLI）或 Amazon Bedrock API 创建具有自定义指标的评测作业。按照以下说明操作来创建评测作业。有关为指标创建提示以及定义在创建期间指定的评分量表的说明和指导信息，请参阅[为自定义指标创建提示](kb-evaluation-custom-metrics-prompt-formats.md)。

当您创建具有一个或多个自定义指标的评测作业时，Amazon Bedrock 会将您的指标定义以 JSON 文件的形式存储在您指定的输出 S3 存储桶中。您可以通过导航到 `s3://S3-output-bucket-name/job-name/job-uuid/custom_metrics` 来访问这些文件。要查看自定义指标的 JSON 定义的格式，请参阅[创建 JSON 文件以创建自定义指标](model-evaluation-custom-metrics-prompt-formats.md#model-evaluation-custom-metrics-prompt-formats-json)。

要按照以下说明操作来创建作业，您还需要一个提示数据集。如果尚未创建提示数据集，请参阅[在 Amazon Bedrock 中创建用于 RAG 评测的提示数据集](knowledge-base-evaluation-prompt.md)。

有关支持的评测器模型的列表，请参阅[支持的模型](evaluation-kb.md#evaluation-kb-supported)。

------
#### [ Console ]

1. 打开 [Amazon Bedrock 控制台](https://console.aws.amazon.com/bedrock/home)。

1. 在左侧窗格中的**推理和评测**下，选择**评测**。

1. 在 **RAG 评测**窗格中，选择**创建**。

1. 通过执行以下操作来输入您的 RAG 评测详细信息：

   1. 在**评测详细信息**窗格中的**评测名称**下，输入评测作业的名称。您选择的名称在您的 AWS 区域内必须是唯一的。

   1. （可选）在**描述 - *可选***下，输入评测作业的描述。

   1. 在**评测器模型**下，选择**选择模型**，然后选择要执行评测的评测器模型。

1. 输入评测作业的推理来源。借助 Amazon Bedrock RAG 评测，您既可以评测 Amazon Bedrock 知识库的性能，又可以通过在[提示数据集](knowledge-base-evaluation-prompt.md)内提供自己的推理响应数据来评测其他 RAG 来源的性能。要选择 Amazon Bedrock 知识库，请执行以下操作：

   1. 在**推理来源**窗格中的**选择来源**下，选择 **Bedrock 知识库**。

   1. 在**选择知识库**下，使用下拉列表选择知识库。

1. 要自带推理回复数据，请执行以下操作：

   1. 在**推理来源**窗格中的**选择来源**下，选择**自带推理回复**。

   1. 对于**来源名称**，输入用于创建响应数据的 RAG 来源的名称。您输入的名称必须与[提示数据集](knowledge-base-evaluation-prompt.md)内的 `knowledgeBaseIdentifier` 参数相匹配。

1. 在**推理来源**窗格中的**评估类型**下，选择**检索和回复生成**。

1. 在**指标**窗格中选择您希望评测器模型使用的任何内置指标。

1. 要再添加一个自定义指标，请先选择要用来评测指标的评测器模型。在**自定义指标**窗格中，执行以下操作：

   1. 选择**选择模型**。

   1. 在弹出窗口中，选择要使用的模型。

   1. 选择**应用**。

1. 在**指标名称**下，输入您指标的名称。

1. 您可以通过三种方式配置指标：提供用于指定指标的 JSON 文件；编辑模板中现有的内置指标提示；或直接在控制台中输入提示以供评测器模型使用。

   要从 JSON 文件创建指标，请执行以下操作：

   1. 在**选择指标类型**下，选择**导入 JSON 文件**。

   1. 在**导入 JSON 文件**下，选择**选择文件**。

   1. 使用文件选取器，选择包含您的自定义指标定义的 JSON 文件，然后选择**打开**。要了解用于通过 JSON 文件指定自定义指标的架构，并查看一些示例文件，请参阅[创建 JSON 文件以创建自定义指标](kb-evaluation-custom-metrics-prompt-formats.md#kb-evaluation-custom-metrics-prompt-formats-json)。

   1. （可选）要创建其他指标，请选择**添加自定义指标**。您可以为单个评测作业创建最多 10 个自定义指标。

      创建完自定义指标后，请继续执行步骤 14，为评测作业配置数据集。

1. 要从内置模板创建自定义指标，请执行以下操作：

   1. 在**选择指标类型**下，选择**使用模板**。

   1. 在**选择模板**下，使用下拉列表选择现有的内置指标提示以用作自定义指标的起点。

   1. 在**说明**下，编辑您选择的提示，使其适用于您自己的使用案例。有关最佳实践以及创建自定义指标提示时所需的元素的列表，请参阅[为自定义指标创建提示](kb-evaluation-custom-metrics-prompt-formats.md)。

   1. 如果您希望评测作业输出带排名分数的结构化输出，请将**启用输出架构（推荐）**保持选中状态。虽然您的指标配置不需要包含输出架构，但我们建议您定义一个输出架构。如果您不使用架构，则您查看的结果将仅包含不带分数或数据可视化内容的解释。

   1. 在**量表类型**下，根据您的使用案例选择**数字**或**字符串**，然后在文本框中输入量表定义和描述定义。有关定义输出量表的指导和最佳实践，请参阅[指定输出架构（评分量表）](kb-evaluation-custom-metrics-prompt-formats.md#kb-evaluation-custom-metrics-prompt-formats-schema)。

   1. （可选）要创建其他指标，请选择**添加自定义指标**。您可以为单个评测作业创建最多 10 个自定义指标。

      创建完自定义指标后，请继续执行步骤 14，为评测作业配置数据集。

1. 要在控制台中从头开始创建自定义指标，请执行以下操作：

   1. 在**选择指标类型**下，选择**自定义**。

   1. 在**说明**下，直接在文本框中输入自定义指标的提示。有关最佳实践以及创建自定义指标提示时所需的元素的列表，请参阅[提示构造和最佳实践](kb-evaluation-custom-metrics-prompt-formats.md#kb-evaluation-custom-metrics-prompt-formats-create)。

   1. 如果您希望评测作业输出带排名分数的结构化输出，请将**启用输出架构（推荐）**保持选中状态。虽然您的指标配置不需要包含输出架构，但我们建议您定义一个输出架构。如果您不使用架构，则您查看的结果将仅包含不带分数或数据可视化内容的解释。

   1. 在**量表类型**下，根据您的使用案例选择**数字**或**字符串**，然后在文本框中输入量表定义和描述定义。有关定义输出量表的指导和最佳实践，请参阅[指定输出架构（评分量表）](kb-evaluation-custom-metrics-prompt-formats.md#kb-evaluation-custom-metrics-prompt-formats-schema)。

   1. （可选）要创建其他指标，请选择**添加自定义指标**。您可以为单个评测作业创建最多 10 个自定义指标。

      创建完自定义指标后，请继续执行下一个步骤，为评测作业配置数据集。

1. 通过执行以下操作来定义数据集和结果的输入位置和输出位置：

   1. 在**数据集**窗格中的**选择提示数据集**下，输入提示数据集的 Amazon S3 URI，或者选择**浏览 S3** 并选择您的文件。要查看“仅检索”评测作业所需的提示数据集格式的定义，请参阅[创建用于仅限检索 RAG 评测作业的提示数据集](knowledge-base-evaluation-prompt-retrieve.md)。

   1. 在**评估结果**下，输入 Amazon Bedrock 的 Amazon S3 位置以保存您的结果，或者选择**浏览 S3** 以选择一个位置。

1. 在 **Amazon Bedrock IAM 角色 - 权限**下，选择**创建和使用新的服务角色**，让 Amazon Bedrock 为评测作业创建新的 IAM 角色，或者选择**使用现有服务角色**来选取现有 IAM 角色。有关创建和运行评测作业所需权限的列表，请参阅[先决条件](knowledge-base-evaluation-create.md#knowledge-base-evaluation-create-prereqs)。

1. （可选）要使用您自己的 KMS 密钥来加密您的评测数据，请在 **KMSkey - *可选***下，选中**自定义加密设置（高级）**，然后选择您的 AWS KMS 密钥。默认情况下，Amazon Bedrock 使用 AWS 拥有的 KMS 密钥对您的评测作业数据进行加密。

1. 选择**创建**以完成评测作业的创建。

------
#### [ AWS CLI ]

**针对 Amazon Bedrock 知识库创建“检索并生成”评测作业**
+ 使用示例 JSON 文件运行以下 AWS CLI 命令。

  ```
  aws bedrock create-evaluation-job --cli-input-json file://my_eval_job.json
  ```

  ```
  {
      "jobName": "my_rag_eval",
      "roleArn": "arn:aws:iam::111122223333:role/service-role/Amazon-Bedrock-Custom-Metric",
      "applicationType": "RagEvaluation",
      "evaluationConfig": {
          "automated": {
              "datasetMetricConfigs": [
                  {
                      "taskType": "General",
                      "dataset": {
                          "name": "text_dataset",
                          "datasetLocation": {
                              "s3Uri": "s3://amzn-s3-demo-bucket/input/retrieval-only/retrieve-eval.jsonl"
                          }
                      },
                      "metricNames": [
                          "Builtin.ContextCoverage",
                          "Builtin.ContextRelevance",
                          "CustomMetric-Correctness-FloatRatingScale"
                      ]
                  }
              ],
              "customMetricConfig": {
                  "customMetrics": [
                      {
                          "customMetricDefinition": {
                              "name": "CustomMetric-Correctness-FloatRatingScale",
                              "instructions": "<Your complete custom metric prompt including at least one {{input variable}}>",
                              "ratingScale": [
                                  {
                                      "definition": "Not at all",
                                      "value": {
                                          "floatValue": 0
                                      }
                                  },
                                  {
                                      "definition": "Somewhat",
                                      "value": {
                                          "floatValue": 1
                                      }
                                  },
                                  {
                                      "definition": "Mostly",
                                      "value": {
                                          "floatValue": 2
                                      }
                                  }
                              ]
                          }
                      }
                  ],
                  "evaluatorModelConfig": {
                      "bedrockEvaluatorModels": [
                          {
                              "modelIdentifier": "anthropic.claude-3-haiku-20240307-v1:0"
                          }
                      ]
                  }
              },
              "evaluatorModelConfig": {
                  "bedrockEvaluatorModels": [
                      {
                          "modelIdentifier": "mistral.mistral-large-2402-v1:0"
                      }
                  ]
              }
          }
      },
      "inferenceConfig": {
          "ragConfigs": [
              {
                  "knowledgeBaseConfig": {
                      "retrieveAndGenerateConfig": {
                          "type": "KNOWLEDGE_BASE",
                          "knowledgeBaseConfiguration": {
                              "knowledgeBaseId": "<Your Knowledge Base ID>",
                              "modelArn": "mistral.mistral-large-2402-v1:0",
                              "generationConfiguration": {
                                  "promptTemplate": {
                                      "textPromptTemplate": "$search_results$ hello world template"
                                  }
                              },
                              "orchestrationConfiguration": {
                                  "queryTransformationConfiguration": {
                                      "type": "QUERY_DECOMPOSITION"
                                  }
                               }
                          }
                      }
                  }
              }
          ]
      },
      "outputDataConfig": {
          "s3Uri": "s3://amzn-s3-demo-bucket/output/"
      }
  }
  ```
**注意**  
示例 JSON 文件包含两个 `evaluatorModelConfig` 对象。`customMetricConfig` 对象中的实例指定要与自定义指标一起使用的评测器模型。另一个实例指定用于内置指标的模型。请务必正确指定这两个对象。

**使用您自己的推理响应数据执行“检索并生成”评测作业**
+ 使用示例 JSON 文件运行以下 AWS CLI 命令。

  ```
  aws bedrock create-evaluation-job --cli-input-json file://my_eval_job.json
  ```

  ```
  {
      "jobName": "my_rag_eval",
      "roleArn": "arn:aws:iam::111122223333:role/service-role/Amazon-Bedrock-Custom-Metric",
      "applicationType": "RagEvaluation",
      "evaluationConfig": {
          "automated": {
              "datasetMetricConfigs": [
                  {
                      "taskType": "General",
                      "dataset": {
                          "name": "text_dataset",
                          "datasetLocation": {
                              "s3Uri": "s3://amzn-s3-demo-bucket/input/retrieval-only/retrieve-eval.jsonl"
                          }
                      },
                      "metricNames": [
                          "Builtin.ContextCoverage",
                          "Builtin.ContextRelevance",
                          "CustomMetric-Correctness-FloatRatingScale"
                      ]
                  }
              ],
              "customMetricConfig": {
                  "customMetrics": [
                      {
                          "customMetricDefinition": {
                              "name": "CustomMetric-Correctness-FloatRatingScale",
                              "instructions": "<Your complete custom metric prompt including at least one {{input variable}}>",
                              "ratingScale": [
                                  {
                                      "definition": "Not at all",
                                      "value": {
                                          "floatValue": 0
                                      }
                                  },
                                  {
                                      "definition": "Somewhat",
                                      "value": {
                                          "floatValue": 1
                                      }
                                  },
                                  {
                                      "definition": "Mostly",
                                      "value": {
                                          "floatValue": 2
                                      }
                                  }
                              ]
                          }
                      }
                  ],
                  "evaluatorModelConfig": {
                      "bedrockEvaluatorModels": [
                          {
                              "modelIdentifier": "anthropic.claude-3-haiku-20240307-v1:0"
                          }
                      ]
                  }
              },
              "evaluatorModelConfig": {
                  "bedrockEvaluatorModels": [
                      {
                          "modelIdentifier": "mistral.mistral-large-2402-v1:0"
                      }
                  ]
              }
          }
      },
     "inferenceConfig": {
          "ragConfigs": [
              {
                  "precomputedRagSourceConfig": {
                      "retrieveAndGenerateSourceConfig": {
                          "ragSourceIdentifier": "my_rag_source"
                      }
                  }
              }
          ]
      },
      "outputDataConfig": {
          "s3Uri": "s3://amzn-s3-demo-bucket/output/"
      }
  }
  ```
**注意**  
示例 JSON 文件包含两个 `evaluatorModelConfig` 对象。`customMetricConfig` 对象中的实例指定要与自定义指标一起使用的评测器模型。另一个实例指定用于内置指标的模型。请务必正确指定这两个对象。

------