

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

# 连接到 Salesforce 来为知识库摄取内容
<a name="salesforce-data-source-connector"></a>

Salesforce 是一款客户关系管理（CRM）工具，用于管理支持、销售和营销团队。您可以使用[适用于 Amazon Bedrock 的 AWS 管理控制台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 连接到 Salesforce 实例，来为 Amazon Bedrock 知识库摄取内容（请参阅 Amazon Bedrock [支持的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)）。

**注意**  
Salesforce 数据来源连接器目前为预览版，可能随时发生变化。  
Salesforce 数据来源不支持多模态数据，例如表、曲线图、图表或其他图像。

目前，只有 Amazon OpenSearch 无服务器向量存储可用于此数据来源。

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的特征](#supported-features-salesforce-connector)
+ [先决条件](#prerequisites-salesforce-connector)
+ [连接配置](#configuration-salesforce-connector)

## 支持的特征
<a name="supported-features-salesforce-connector"></a>
+ 自动检测主要文档字段
+ 包含/排除内容筛选条件
+ 对已添加、更新、删除的内容进行增量内容同步
+ OAuth 2.0 身份验证

## 先决条件
<a name="prerequisites-salesforce-connector"></a>

**在 Salesforce 中，请确保：**
+ 记下 Salesforce 实例 URL。例如，*https://company.salesforce.com/*。实例必须运行与 Salesforce 连接的应用程序。
+ 创建与 Salesforce 连接的应用程序并配置客户端凭证。然后，对于您选择的应用程序，从 OAuth 设置中复制用户密钥（客户端 ID）和使用者密钥（客户端密钥）。有关更多信息，请参阅关于[创建连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[为 OAuth 2.0 客户端凭证配置连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文档。
**注意**  
对于与 Salesforce 连接的应用程序，在“客户端凭证流”下，确保在“运行方式”字段中为客户端凭证搜索并选择用户名或别名。

**在 AWS 账户中，请确保**：
+ 将身份验证凭证存储在 [AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，并记下该密钥的 Amazon 资源名称（ARN）。按照此页面上的**连接配置**说明添加密钥中必须包含的键值对。
+ 在知识库的 AWS Identity and Access Management (IAM) 角色/权限策略中包含连接到数据来源的必要权限。有关将此数据来源添加到知识库 IAM 角色所需的权限的信息，请参阅[访问数据来源的权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果使用的是控制台，则可以前往 AWS Secrets Manager 添加密钥或在配置数据来源时使用现有密钥。您可以在控制台中创建知识库时创建具有所有必需权限的 IAM 角色。配置数据来源和其他配置后，具有所有必需权限的 IAM 角色将应用于特定知识库。  
我们建议您定期刷新或轮换您的凭证和密码。为了安全起见，请仅提供必要的访问权限级别。建议不要跨数据来源重复使用凭证和密钥。

## 连接配置
<a name="configuration-salesforce-connector"></a>

要连接到 Salesforce 实例，您必须提供必要的配置信息，以便 Amazon Bedrock 可以访问和爬取您的数据。您还必须遵循[先决条件](#prerequisites-salesforce-connector)。

本部分包含此数据来源的配置示例。

有关自动检测文档字段、包含/排除筛选条件、增量同步、密钥身份验证凭证及其工作原理的更多信息，请选择以下相应的项：

### 自动检测主要文档字段
<a name="ds-salesforce-document-fields"></a>

数据来源连接器会自动检测并爬取文档或内容的所有主要元数据字段。例如，数据来源连接器可以爬取与您的文档等效的文档正文、文档标题、文档创建或修改日期或其他可能适用于您文档的核心字段。

**重要**  
如果您的内容包含敏感信息，则 Amazon Bedrock 可能使用敏感信息进行响应。

您可以对元数据字段应用筛选运算符，以帮助您进一步提高响应的相关性。例如，文档“epoch\$1modification\$1time”或文档在 1970 年 1 月 1 日最后一次更新之后经历的秒数。您可以通过将“epoch\$1modification\$1time”设置为*大于*某个数值，筛选出最新的数据。有关可以应用于元数据字段的筛选运算符的更多信息，请参阅[元数据和筛选](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除筛选条件
<a name="ds-salesforce-inclusion-exclusion"></a>

您可以包含或排除对某些内容的爬取。例如，您可以指定一个前缀/正则表达式排除模式，以跳过对文件名中包含“private”的任何文件的爬取。您也可以指定一个前缀/正则表达式包含模式以包含某些内容实体或内容类型。如果您指定了包含和排除筛选条件，且两者都与文档匹配，则优先执行排除筛选条件，不爬取该文档。

排除或筛选掉活动名称中包含“private”的活动的正则表达式模式示例：*".\$1private.\$1"*

您可以对以下内容类型应用包含/排除筛选条件：
+ `Account`：账号/标识符
+ `Attachment`：附件文件名及其扩展名
+ `Campaign`：活动名称和相关标识符
+ `ContentVersion`：文档版本和相关标识符
+ `Partner`：合作伙伴信息字段，包括相关标识符
+ `Pricebook2`：产品/价格列表名称
+ `Case`：客户咨询/问题编号和其他信息字段，包括相关标识符（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Contact`：客户信息字段（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Contract`：合同名称和相关标识符
+ `Document`：文件名及其扩展名
+ `Idea`：想法信息字段和相关标识符
+ `Lead`：潜在新客户信息字段（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Opportunity`：待处理的销售/交易信息字段和相关标识符
+ `Product2`：商品信息字段和相关标识符
+ `Solution`：客户查询/问题的解决方案名称和相关标识符
+ `Task`：任务信息字段和相关标识符
+ `FeedItem`：聊天源帖子的标识符
+ `FeedComment`：评论所属的聊天源帖子的标识符
+ `Knowledge__kav`：知识文章标题
+ `User`：组织内的用户别名
+ `CollaborationGroup`：聊天组名称（唯一）

### 增量同步
<a name="ds-salesforce-incremental-sync"></a>

数据来源每次与知识库同步时，数据来源连接器都会爬取新增、修改和删除的内容。Amazon Bedrock 可以使用数据来源的机制来跟踪内容更改并爬取自上次同步以来更改的内容。首次将数据来源与知识库同步时，默认爬取所有内容。

要将数据来源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API 或在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

### 密钥身份验证凭证
<a name="ds-salesforce-secret-auth-credentials"></a>

（对于 OAuth 2.0 身份验证）您在 AWS Secrets Manager 中的密钥身份验证凭证应包含以下键值对：
+ `consumerKey`：*应用程序客户端 ID*
+ `consumerSecret`：*应用程序客户端密钥*
+ `authenticationUrl`：*Salesforce 实例 URL 或请求身份验证词元的 URL*

**注意**  
您在 AWS Secrets Manager 中的密钥必须使用与知识库相同的区域。

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

**将 Salesforce 实例连接到知识库**

1. 按照[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)中的步骤操作，然后选择 **Salesforce** 作为数据来源。

1. 提供数据来源的名称和可选的描述。

1. 提供 Salesforce 实例 URL。例如，*https://company.salesforce.com/*。实例必须运行与 Salesforce 连接的应用程序。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**– 在将数据转换为嵌入时，您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略**：您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. 提供身份验证信息以连接 Salesforce 实例：

   1. 要使用 OAuth 2.0 身份验证，请前往 AWS Secrets Manager 添加密钥身份验证凭证或使用您创建的密钥的现有 Amazon 资源名称（ARN）。您的密钥必须包含与 Salesforce 连接的应用程序的用户密钥（客户端 ID）、使用者密钥（客户端密钥）以及 Salesforce 实例 URL 或请求身份验证词元的 URL。有关更多信息，请参阅关于[创建连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[为 OAuth 2.0 客户端凭证配置连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文档。

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 选择使用筛选条件/正则表达式模式来包含或排除某些内容。否则，会爬取所有标准内容。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

------
#### [ API ]

以下是 Amazon Bedrock 知识库连接到 Salesforce 的配置示例。您可以使用 AWS CLI 或支持的 SDK（例如 Python）通过 API 来配置数据来源。调用 [CreateKnowledgebase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 后，您可以调用 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 来使用 `dataSourceConfiguration` 中的连接信息创建数据来源。

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Salesforce connector" \
 --description "Salesforce data source connector for Amazon Bedrock to use content in Salesforce" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://salesforce-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

salesforce-bedrock-connector-configuration.json
{
    "salesforceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://company.salesforce.com/",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Salesforce"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Campaign",
                            "inclusionFilters": [
                                ".*public.*"
                            ],
                            "exclusionFilters": [
                                ".*private.*"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SALESFORCE"
}
```

------