使用自定义指标创建“检索并生成”RAG 评测作业 - Amazon Bedrock

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

使用自定义指标创建“检索并生成”RAG 评测作业

要创建使用自定义指标的评测作业,您需要提供:

  • 包含供评判模型使用的详细指令的提示

  • 要用于自定义指标的评测器模型

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

您可以使用 AWS Management Console、AWS Command Line Interface(AWS CLI)或 Amazon Bedrock API 创建具有自定义指标的评测作业。按照以下说明操作来创建评测作业。有关为指标创建提示以及定义在创建期间指定的评分量表的说明和指导信息,请参阅为自定义指标创建提示

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

要按照以下说明操作来创建作业,您还需要一个提示数据集。如果尚未创建提示数据集,请参阅在 Amazon Bedrock 中创建用于 RAG 评测的提示数据集

有关支持的评测器模型的列表,请参阅支持的模型

Console
  1. 打开 Amazon Bedrock 控制台

  2. 在左侧窗格中的推理和评测下,选择评测

  3. RAG 评测窗格中,选择创建

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

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

    2. (可选)在描述 - 可选下,输入评测作业的描述。

    3. 评测器模型下,选择选择模型,然后选择要执行评测的评测器模型。

  5. 输入评测作业的推理来源。借助 Amazon Bedrock RAG 评测,您既可以评测 Amazon Bedrock 知识库的性能,又可以通过在提示数据集内提供自己的推理响应数据来评测其他 RAG 来源的性能。要选择 Amazon Bedrock 知识库,请执行以下操作:

    1. 推理来源窗格中的选择来源下,选择 Bedrock 知识库

    2. 选择知识库下,使用下拉列表选择知识库。

  6. 要自带推理回复数据,请执行以下操作:

    1. 推理来源窗格中的选择来源下,选择自带推理回复

    2. 对于来源名称,输入用于创建响应数据的 RAG 来源的名称。您输入的名称必须与提示数据集内的 knowledgeBaseIdentifier 参数相匹配。

  7. 推理来源窗格中的评估类型下,选择检索和回复生成

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

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

    1. 选择选择模型

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

    3. 选择应用

  10. 指标名称下,输入您指标的名称。

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

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

    1. 选择指标类型下,选择导入 JSON 文件

    2. 导入 JSON 文件下,选择选择文件

    3. 使用文件选取器,选择包含您的自定义指标定义的 JSON 文件,然后选择打开。要了解用于通过 JSON 文件指定自定义指标的架构,并查看一些示例文件,请参阅创建 JSON 文件以创建自定义指标

    4. (可选)要创建其他指标,请选择添加自定义指标。您可以为单个评测作业创建最多 10 个自定义指标。

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

  12. 要从内置模板创建自定义指标,请执行以下操作:

    1. 选择指标类型下,选择使用模板

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

    3. 说明下,编辑您选择的提示,使其适用于您自己的使用案例。有关最佳实践以及创建自定义指标提示时所需的元素的列表,请参阅为自定义指标创建提示

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

    5. 量表类型下,根据您的使用案例选择数字字符串,然后在文本框中输入量表定义和描述定义。有关定义输出量表的指导和最佳实践,请参阅指定输出架构(评分量表)

    6. (可选)要创建其他指标,请选择添加自定义指标。您可以为单个评测作业创建最多 10 个自定义指标。

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

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

    1. 选择指标类型下,选择自定义

    2. 说明下,直接在文本框中输入自定义指标的提示。有关最佳实践以及创建自定义指标提示时所需的元素的列表,请参阅提示构造和最佳实践

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

    4. 量表类型下,根据您的使用案例选择数字字符串,然后在文本框中输入量表定义和描述定义。有关定义输出量表的指导和最佳实践,请参阅指定输出架构(评分量表)

    5. (可选)要创建其他指标,请选择添加自定义指标。您可以为单个评测作业创建最多 10 个自定义指标。

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

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

    1. 数据集窗格中的选择提示数据集下,输入提示数据集的 Amazon S3 URI,或者选择浏览 S3 并选择您的文件。要查看“仅检索”评测作业所需的提示数据集格式的定义,请参阅创建用于仅限检索 RAG 评测作业的提示数据集

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

  15. Amazon Bedrock IAM 角色 - 权限下,选择创建和使用新的服务角色,让 Amazon Bedrock 为评测作业创建新的 IAM 角色,或者选择使用现有服务角色来选取现有 IAM 角色。有关创建和运行评测作业所需权限的列表,请参阅先决条件

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

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

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 对象中的实例指定要与自定义指标一起使用的评测器模型。另一个实例指定用于内置指标的模型。请务必正确指定这两个对象。