

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

# 高级知识库设置
<a name="advanced-knowledge-base-settings"></a>

高级知识库设置（例如知识库筛选和带有基于角色的访问控制的 RAG）可用于该解决方案。知识库筛选可以应用于任一知识库，而带有基于角色的访问控制的 RAG 专门适用于 Amazon Kendra。

## 知识库筛选
<a name="knowledge-base-filtering"></a>

该解决方案允许您在向导[知识库步骤的 “高级 [RAG 配置” 部分部署用例时指定 Amazon Kendra 属性筛选](https://docs.aws.amazon.com/kendra/latest/APIReference/API_AttributeFilter.html)器或 Bedrock 知识库检索筛选器](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。这些筛选器定义了如何查询知识库中的数据源，例如搜索策略、要查询的底层文档的语言等。

在这两种情况下，都使用 JSON 对象根据每个服务文档（如上面的链接）中指定的格式指定过滤器设置。

 *示例 1：Kendra AttributeFilter* 

```
{
 "EqualsTo": {
 "Key": "_language_code",
 "Value": {
 "StringValue": "es"
 }
 }
}
```

 *示例 2：基岩 RetrievalFilter* 

```
{
 "equals": {
 "key": "language",
 "value": "es"
 }
}
```

## 使用 Amazon Kendra 实现基于角色的访问控制的 RAG
<a name="rag-rbac-with-kendra"></a>

 [基于角色的访问控制 (RBAC)](https://docs.aws.amazon.com/kendra/latest/dg/create-index-access-control.html) 允许控制哪些用户或群组可以访问您的 Amazon Kendra 索引中的某些文档或在搜索结果中查看某些文档。要使用 AWS 上的生成式 AI 应用程序生成器 (GAAB) 用例为您的 Amazon Kendra 索引 ID 配置 RBAC，请按照以下步骤操作：

 **1。配置亚马逊 Kendra 索引** 

1. 确保您已创建一个 Amazon Kendra 索引，并向其中添加了至少一个数据源。

1. 根据用户组为数据源配置访问控制。对于 S3 数据源，请按照[文档中的说明使用在](https://docs.aws.amazon.com/kendra/latest/dg/s3-acl.html) Amazon Cognito 用户池中创建的相同组名来设置访问控制列表 (ACLs)。这样可以确保用户只能根据其群组成员资格访问他们有权查看的文档和搜索结果。

**注意**  
**在您创建的 Kendra 索引的 “**用户访问控制**” 下，将**基于令牌的用户访问**控制保留为 “否”。** 当您在步骤 2 中启用**基于角色的访问控制**时，AWS 上的生成式 AI 应用程序生成器会从用户身份验证令牌中提取相应的声明并创建属性筛选器。

 **2。使用 GAAB 部署向导部署 RAG 用例** 

1. 按照 GAAB 部署向导中的屏幕向导说明进行操作，直到进入向导的步骤 4 来配置 RAG。

1. 在部署向导的 **“选择知识库**” 步骤中，选择 **Amazon Kendra** 作为知识库类型。

1. 指定您是否已有 Amazon Kendra 索引，或者是否要创建新的索引。如果您已有索引，请提供您的 Amazon Kendra 索引的 ID，该索引已根据用户组配置了访问控制列表 (ACLs)。

1. 启用 “**基于角色的访问控制**” 选项。此选项可确保根据用户的角色和群组权限筛选从 Amazon Kendra 索引返回的搜索结果。

1. 查看并部署用例。

 **3。配置 Amazon Cognito** 

1. 找到您的 GAAB 部署所使用的 Amazon Cognito 用户池。此 Amazon Cognito 用户池通常由主部署控制面板 CloudFormation 堆栈创建。

1. 在 Amazon Cognito 用户池中创建新用户。创建用户时，选择 “发送电子邮件邀请” 选项，这样用户就可以通过电子邮件收到临时登录凭证。这样，新用户就可以注册并访问GAAB应用程序。

1. 在 Amazon Cognito 用户池中创建用户组。确保群组名称与您的 Amazon Kendra 索引中配置的群组完全匹配。 ACLs这对于启用 RBAC 至关重要，因为用户的群组成员资格将决定他们可以访问的搜索结果。

1. 根据用户的角色和访问权限将用户分配到相应的群组。必须将用户添加到 Amazon Kendra 索引 ACL 所需的群组以及在 GAAB 部署期间创建的特定用例群组。这可确保用户拥有访问特定用例和相关搜索结果的必要权限。

通过执行这些步骤，您将为 GAAB 部署配置基于角色的访问控制 (RBAC)，确保用户只能根据分配的用户组和权限访问他们获得授权的信息和功能并与之交互。

**注意**  
截至目前，只有 Amazon Kendra 支持 RBAC 在 AWS 上的生成人工智能应用程序生成器中创建知识库。对于 Amazon Bedrock 知识库，不支持 RBAC，但您可以使用元数据筛选器来实现某种程度的筛选。有关更多信息，请参阅 [Amazon Bedrock 用户指南](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。