为知识库爬取网页 - Amazon Bedrock

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

为知识库爬取网页

Amazon Bedrock 提供的 Web 爬网程序可以连接并爬取您选择在 Amazon Bedrock 知识库中使用的 URL。您可以根据所选 URL 的设定范围或限制来爬取网站页面。您可以使用适用于 Amazon Bedrock 的 AWS 管理控制台CreateDataSource API 来爬取网站页面(请参阅 Amazon Bedrock 支持的软件开发工具包和 AWS CLI)。目前,只有 Amazon OpenSearch 无服务器向量存储可用于此数据来源。

注意

Web 爬网程序数据来源连接器目前为预览版,可能随时发生变化。

当选择要爬取的网站时,您必须遵守 Amazon 可接受使用政策以及所有其他 Amazon 条款。请记住,您只能使用 Web 爬网程序为您自己的网页或您有权爬取的网页编制索引,并且必须遵守 robots.txt 配置。

Web 爬网程序根据 RFC 9309 遵守 robots.txt 标准

可以爬取的网页内容项目数量有限制,每个内容项目的 MB 数量是有限的。请参阅 Quotas for knowledge bases

支持的特征

Web 爬网程序从种子 URL 开始连接并爬取 HTML 网页,遍历同一主域名和路径下的所有子链接。如果任何 HTML 页面引用了支持的文档,Web 爬网程序就会爬取这些文档,无论它们是否在同一主域名内。您可以通过更改爬网配置来修改爬取行为。请参阅 连接配置

您可以执行以下操作:

  • 选择多个要爬取的源 URL,并将 URL 的范围设置为仅爬取主机或同时包含子域。

  • 爬取源 URL 中包含的静态网页。

  • 指定自定义用户代理后缀,为自己的爬网程序设置规则。

  • 包含或排除与筛选模式匹配的某些 URL。

  • 遵守标准 robots.txt 指令,例如 Allow 和 Disallow。

  • 限制要抓取的 URL 范围,也可以选择排除符合筛选模式的 URL。

  • 限制爬取 URL 的速率和要爬取的最大页面数。

  • 在 Amazon CloudWatch 中查看爬取的 URL 的状态

先决条件

要使用 Web 爬网程序,请确保您:

  • 检查是否授权您爬取源 URL。

  • 检查源 URL 对应的 robots.txt 路径是否阻止了爬取 URL。Web 爬网程序遵守 robots.txt 标准:如果未找到该网站的 robots.txt,则默认为 disallow。Web 爬网程序根据 RFC 9309 遵守 robots.txt 标准。您还可以指定自定义用户代理标头后缀,为自己的爬网程序设置规则。有关更多信息,请参阅本页面上连接配置说明中的 Web 爬网程序 URL 访问权限。

  • 启用 CloudWatch Logs 传送功能并按照以下示例 Web 爬网程序日志操作,可查看摄取 Web 内容的数据摄取作业的状态,以及某些 URL 是否无法检索。

注意

当选择要爬取的网站时,您必须遵守 Amazon 可接受使用政策以及所有其他 Amazon 条款。请记住,您必须仅使用 Web 爬网程序为您自己的网页或您有权编制索引的网页来爬取。

连接配置

有关爬取 URL 的同步范围、包含/排除筛选条件、URL 访问权限、增量同步及其工作原理的更多信息,请选择以下相应的项:

您可以根据每个页面 URL 与种子 URL 的特定关系来限制要爬取的 URL 范围。为了加快爬取速度,您可以将 URL 限制为与种子 URL 具有相同主机和初始 URL 路径的 URL。要进行更广泛的爬取,您可以选择爬取同一主机或种子 URL 的任何子域内的 URL。

可从以下选项中进行选择。

  • 默认:将爬取限制为属于同一主机且具有相同初始 URL 路径的网页。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则只会爬取此路径和从此路径延伸的网页,例如“https://aws.amazon.com/bedrock/agents/”。例如,诸如“https://aws.amazon.com/ec2/”之类的同级网址不会被爬取。

  • 仅限主机:将爬取限制为属于同一主机的网页。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则包含“https://aws.amazon.com”的网页也会被爬取,比如“https://aws.amazon.com/ec2”。

  • 子域名:包括与种子 URL 具有相同主域名的任何网页的爬取。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则任何包含“amazon.com”(子域名)的网页都将被爬取,例如“https://www.amazon.com”。

注意

确保您没有爬取可能过多的网页。不建议在没有筛选条件或范围限制的情况下爬取大型网站,例如 wikipedia.org。爬取大型网站需要很长时间。

如果文件类型没有排除模式,则无论范围大小都会爬取支持的文件类型

Web 爬网程序支持静态网站。

您还可以限制爬取 URL 的速率以控制对爬取速度的节流。您可以设置每分钟在每个主机上爬取的最大 URL 数量。此外,您还可以设置要爬取的网页总数的最大数量(最多 25000)。请注意,如果源 URL 中的网页总数超过您设置的最大值,则您的数据来源同步/摄取作业将失败。

您可以根据自己的范围包含或排除某些 URL。如果文件类型没有排除模式,则无论范围大小都会爬取支持的文件类型。如果您指定了包含和排除筛选条件,且两者都与 URL 匹配,则优先排除筛选条件,不会爬取网页内容。

重要

有问题的正则表达式模式筛选条件会导致灾难性的回溯和瞻前顾后,因此会被拒绝。

排除以“.pdf”结尾的 URL 或 PDF 网页附件的正则表达式筛选模式示例:".*\.pdf$"

您可以使用 Web 爬网程序来爬取您有权爬取的网站的页面。

当选择要爬取的网站时,您必须遵守 Amazon 可接受使用政策以及所有其他 Amazon 条款。请记住,您必须仅使用 Web 爬网程序为您自己的网页或您有权编制索引的网页来爬取。

Web 爬网程序根据 RFC 9309 遵守 robots.txt 标准

您可以将某些用户代理机器人指定为“允许”或“不允许”用户代理爬取您的源 URL。您可以修改网站的 robots.txt 文件来控制 Web 爬网程序如何爬取您的源 URL。爬网程序将首先在 robots.txt 文件中查找 bedrockbot 规则,然后查找通用 bedrockbot-UUID 规则。

您还可以添加 User-Agent 后缀,该后缀可用于在机器人保护系统中将您的爬网程序列入允许列表。请注意,无需将此后缀添加到 robots.txt 文件中来确保没有人可以仿冒用户代理字符串。例如,要让 Web 爬网程序能够爬取所有网站内容并禁止其他任何机器人爬取,请使用以下指令:

User-agent: bedrockbot-UUID # Amazon Bedrock Web Crawler Allow: / # allow access to all pages User-agent: * # any (other) robot Disallow: / # disallow access to any pages

每次运行 Web 爬网程序时,都会检索从符合范围与筛选条件的源 URL 可以访问的所有 URL 的内容。对于首次同步所有内容后的增量同步,Amazon Bedrock 会使用新内容和修改过的内容更新知识库,并删除不再存在的旧内容。有时,爬网程序可能无法分辨网站内容是否已被删除;在这种情况下,它会偏向于将旧内容保留在知识库中。

要将数据来源与知识库同步,请使用 StartIngestionJob API 或在控制台中选择知识库,然后在数据来源概述部分中选择同步

重要

您从数据来源同步的所有数据都可供有检索数据的 bedrock:Retrieve 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息,请参阅知识库权限

Console
将 Web 爬网程序数据来源连接到知识库
  1. 按照在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库中的步骤操作,然后选择 Web 爬网程序作为数据来源。

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

  3. 提供要爬取的 URL 的来源 URL。选择添加源 URL,最多可添加 9 个其他 URL。提供源 URL 即表示您确认自己有权爬取其域。

  4. 高级设置部分,您可以选择进行以下配置:

    • 用于临时数据存储的 KMS 密钥。– 在将数据转换为嵌入时,您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息,请参阅 加密数据提取期间的临时数据存储

    • 数据删除策略 – 您可以删除数据来源的向量嵌入(这些向量嵌入默认存储在向量存储中),也可以选择保留向量存储数据。

  5. (可选)为 bedrock-UUID 提供用户代理后缀,用于在爬网程序或机器人访问 Web 服务器时对其进行标识。

  6. 同步范围部分中,进行以下配置:

    1. 选择用于爬取您的源 URL 的网站域范围

      • 默认:将爬取限制为属于同一主机且具有相同初始 URL 路径的网页。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则只会爬取此路径和从此路径延伸的网页,例如“https://aws.amazon.com/bedrock/agents/”。例如,诸如“https://aws.amazon.com/ec2/”之类的同级网址不会被爬取。

      • 仅限主机:将爬取限制为属于同一主机的网页。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则包含“https://aws.amazon.com”的网页也会被爬取,比如“https://aws.amazon.com/ec2”。

      • 子域名:包括与种子 URL 具有相同主域名的任何网页的爬取。例如,如果种子 URL 为“https://aws.amazon.com/bedrock/”,则任何包含“amazon.com”(子域名)的网页都将被爬取,例如“https://www.amazon.com”。

      注意

      确保您没有爬取可能过多的网页。不建议在没有筛选条件或范围限制的情况下爬取大型网站,例如 wikipedia.org。爬取大型网站需要很长时间。

      如果文件类型没有排除模式,则无论范围大小都会爬取支持的文件类型

    2. 输入爬取速度上限。每台主机每分钟推送 1 到 300 个 URL。较高的爬取速度会增加负载,但耗时较短。

    3. 输入 1 到 25000 之间的数据来源同步的最大页数。限制从您的源 URL 中爬取的最大网页数量。如果网页超过此数量,则数据来源同步将失败,并且不会摄取任何网页。

    4. 对于 URL Regex 模式(可选),您可以通过在框中输入正则表达式模式来添加包含模式排除模式。通过选择添加新模式,您最多可以添加 25 种包含和 25 种排除筛选模式。包含和排除模式将根据您的范围进行爬取。如果存在冲突,则优先使用排除模式。

  7. (可选)在内容解析和分块部分,您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息,请参阅以下资源:

  8. 继续选择嵌入模型和向量存储。要查看剩余步骤,请在连接数据来源后返回在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库,然后继续执行该步骤。

API

要使用 Web 爬网程序将知识库连接到数据来源,请使用 Amazon Bedrock 代理构建时端点发送 CreateDataSource 请求,在 DataSourceConfigurationtype 字段中指定 WEB,并包括 webConfiguration 字段。以下是您的 Amazon Bedrock 知识库的 Web 爬网程序配置示例。

{ "webConfiguration": { "sourceConfiguration": { "urlConfiguration": { "seedUrls": [{ "url": "https://www.examplesite.com" }] } }, "crawlerConfiguration": { "crawlerLimits": { "rateLimit": 50, "maxPages": 100 }, "scope": "HOST_ONLY", "inclusionFilters": [ "https://www\.examplesite\.com/.*\.html" ], "exclusionFilters": [ "https://www\.examplesite\.com/contact-us\.html" ], "userAgent": "CustomUserAgent" } }, "type": "WEB" }

要了解可以通过添加可选的 vectorIngestionConfiguration 字段来应用于摄取的定制设置,请参阅自定义数据来源的摄取