为你的 Amazon Bedrock 知识库搜寻网页 - Amazon Bedrock

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

为你的 Amazon Bedrock 知识库搜寻网页

Amazon Bedrock 提供的 Web Crawler 可以连接到URLs你在 Amazon Bedrock 知识库中选择使用并进行爬网。您可以根据所选URLs页面的设置范围或限制来抓取网站页面。您可以使用以下任一方法抓取网站页面 AWS 适用于 Amazon Bedrock CreateDataSourceAPI(参见 Amazon Bedrock 支持的管理控制台和 SDKs AWS CLI).

注意

Crawling Web URLs 作为您的数据源处于预览版,可能会发生变化。

在选择要抓取的网站时,您必须遵守亚马逊可接受使用政策以及所有其他亚马逊条款。请记住,您只能使用 Web Crawler 来索引自己的网页或您有权抓取的网页。

根据 9309,Web Crawler 尊重 robots.txt RFC

可以抓取的网页内容项目数量有限制,每个内容项目的 MB 数量是有限的。有关知识库,请参阅配额

支持的特征

Web Crawler 从种子开始连接和抓取HTML页面URL,遍历同一顶级主域和路径下的所有子链接。如果任何HTML页面引用了支持的文档,Web Crawler 将获取这些文档,无论它们是否位于同一个顶级主域中。您可以通过更改爬网配置来修改抓取行为-请参阅。连接配置

支持您执行以下操作:

  • 选择多个URLs进行爬行

  • 遵守标准 robots.txt 指令,比如 “允许” 和 “不允许”

  • 将范围限制URLs为抓取,也可以选择排除与过滤器URLs模式匹配的范围

  • 限制爬行速度 URLs

  • 在 Amazon 中抓取时查看URLs访问状态 CloudWatch

先决条件

要使用网络爬虫,请确保您:.

  • 检查您是否有权抓取您的来源URLs。

  • 检查与您的来源对应的 robots.txt 路径URLs是否会URLs阻止其被抓取。Web Crawler 遵守 robots.txt 的标准:disallow如果网站找不到 robots.txt,则默认为。根据 RFC9 309,Web Crawler 尊重 robots.txt。

  • 请检查您的源URL页面是否是 JavaScript 动态生成的,因为目前不支持抓取动态生成的内容。你可以通过在浏览器中输入以下内容来进行检查:view-source:https://examplesite.com/site/。 如果该body元素仅包含一个div元素和少量元素或不包含任何a href元素,则页面很可能是动态生成的。你可以在浏览器 JavaScript 中禁用,重新加载网页,观察内容是否正确呈现以及是否包含指向你感兴趣的网页的链接。

  • 启用 CloudWatch Logs Deliv ery 可以查看用于摄取网络内容的数据提取任务的状态,以及是否无法检索某些URLs内容。

注意

在选择要抓取的网站时,您必须遵守亚马逊可接受使用政策以及所有其他亚马逊条款。请记住,您只能使用 Web Crawler 来索引自己的网页或您有权抓取的网页。

连接配置

有关抓取同步范围URLs、包含/排除过滤器、URL访问权限、增量同步及其工作原理的更多信息,请选择以下选项:

您可以根据每个页面与种URLURLs子的特定关系来限制抓取范围。URLs为了更快地抓取,您可以限制URLs使用相同的主机和种子URL初始URL路径的抓取。要获得更广泛的抓取,您可以选择URLs使用同一台主机或在种子的任何子域内进行抓取。URL

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

  • 默认:将抓取限制为属于同一主机和具有相同初始URL路径的网页。例如,如果种子URL为 “https://aws.amazon.com/bedrock/”,则只有此路径和从该路径延伸的网页才会被抓取,例如 “https://aws.amazon.com/bedrock/agents/”。例如,URLs像 “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。抓取大型网站需要很长时间才能抓取。

无论范围如何,也无论@@ 文件类型是否没有排除模式,都将对支持的文件类型进行爬网。

您可以根据自己的范围包括或排除某些URLs内容。无论范围如何,也无论@@ 文件类型是否没有排除模式,都将对支持的文件类型进行爬网。如果您指定了包含和排除过滤器,并且两者都匹配 aURL,则排除过滤器优先,并且不会抓取网页内容。

重要

会导致灾难性回溯和展望未来的有问题的正则表达式模式过滤器将被拒绝。

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

您可以使用 Web Crawler 来抓取您有权抓取的网站的页面。

在选择要抓取的网站时,您必须遵守亚马逊可接受使用政策以及所有其他亚马逊条款。请记住,您只能使用 Web Crawler 来索引自己的网页或您有权抓取的网页。

根据 9309,Web Crawler 尊重 robots.txt RFC

Web Crawler 每次运行时,都会检索所有URLs可从源端访问且与范围URLs和过滤器相匹配的内容。对于首次同步所有内容后的增量同步,Amazon Bedrock 将使用新的和修改过的内容更新您的知识库,并删除不再存在的旧内容。有时,抓取工具可能无法判断内容是否已从网站上删除;在这种情况下,它会偏向于在知识库中保留旧内容。

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

重要

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

Console

以下步骤为您的 Amazon Bedrock 知识库配置网络爬虫。您可以在控制台中将 Web Crawler 配置为知识库创建步骤的一部分。

  1. 登录 AWS Management Console 使用具有 Amazon Bedrock 权限的IAM角色,然后打开 Amazon Bedrock 控制台,网址为。https://console.aws.amazon.com/bedrock/

  2. 在左侧导航窗格中,选择知识库

  3. 知识库部分,选择创建知识库

  4. 提供知识库详细信息。

    1. 提供知识库名称和可选描述。

    2. 提供 AWS Identity and Access Management 角色,用于获得创建知识库所需的必要访问权限。

      注意

      这些区域有: IAM 作为创建知识库的控制台步骤的一部分,可以为您创建具有所有所需权限的角色。完成创建知识库的步骤后, IAM 具有所有必需权限的角色将应用于您的特定知识库。

    3. 创建要分配给知识库的任何标签。

    转到下一节以配置您的数据源。

  5. 选择 Web Crawler 作为您的数据源并提供配置详细信息。

    (可选)更改默认数据源名称并输入描述

  6. 提供URLs您要抓取URLs的来源。URLs通过选择 “添加来源”,您最多可以再添加 9 个URLs。提供来源URL即表示您确认自己有权抓取其域名。

  7. 检查高级设置。您可以选择更改默认的选定设置。

    对于 KMS key 设置,您可以选择自定义密钥或使用默认提供的数据加密密钥。

    在将数据转换为嵌入式数据时, Amazon Bedrock 使用密钥加密您的临时数据 AWS 默认情况下拥有并管理。你可以使用自己的KMS密钥。有关更多信息,请参阅 加密数据提取期间的临时数据存储

    对于数据删除策略设置,您可以选择以下任一选项:

    • 删除:删除知识库或数据源资源后,从数据源中删除所有转换为矢量嵌入的数据。请注意,矢量存储本身不会被删除,只会删除数据。如果出现以下情况,则忽略此标志 AWS 帐户已删除。

    • 保留:在删除知识库或数据源资源后,保留数据源中转换为矢量嵌入的所有数据。请注意,如果您删除知识库或数据源资源,则矢量存储本身不会被删除。

  8. 为搜寻来源URLs的范围选择一个选项。

    • 默认:将抓取限制为属于同一主机和具有相同初始URL路径的网页。例如,如果种子URL为 “https://aws.amazon.com/bedrock/”,则只有此路径和从该路径延伸的网页才会被抓取,例如 “https://aws.amazon.com/bedrock/agents/”。例如,URLs像 “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。抓取大型网站需要很长时间才能抓取。

    无论范围如何,也无论@@ 文件类型是否没有排除模式,都将对支持的文件类型进行爬网。

  9. 输入爬行速度的最大限制。URLs每台主机每分钟摄取 1 URLs 到 300 个。较高的爬行速度会增加负荷,但花费的时间更少。

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

  11. 选择默认或自定义的分块和解析配置。

    1. 如果您选择自定义设置,请选择以下分块选项之一:

      • 固定大小的分块:内容分成您设置的近似标记大小的文本块。您可以设置区块中不得超过的最大令牌数量以及连续区块之间的重叠百分比。

      • 默认分块:内容拆分为最多 300 个标记的文本块。如果单个文档或内容包含的标记少于 300 个,则不会进一步拆分该文档。

      • 分层分块:将内容组织成父子区块的嵌套结构。您可以设置最大父区块令牌大小和最大子区块令牌大小。您还可以设置连续父区块和连续子区块之间重叠标记的绝对数量。

      • 语义分块:将内容组织成语义相似的文本块或句子组。您可以设置要组合在一起的目标/当前句子周围的最大句子数(缓冲区大小)。您还可以设置断点百分位数阈值,用于将文本分成有意义的块。语义分块使用基础模型。查看 Amazon Bedrock有关基础模型成本信息的定价。

      • 不分块:每个文档都被视为单个文本块。您可能需要通过将文档拆分成单独的文件来对其进行预处理。

      注意

      创建数据源后,您无法更改分块策略。

    2. 你可以选择使用 Amazon Bedrock的基础模型,用于解析文档以解析比标准文本更多的内容。例如,您可以解析文档中的表格数据,同时保持其结构不变。查看 Amazon Bedrock有关基础模型成本信息的定价。

    3. 你可以选择使用 AWS Lambda 函数用于自定义您的分块策略以及如何处理和提取您的文档元数据属性/字段。提供 Amazon S3 Lambda 函数输入和输出的存储桶位置。

    转到下一节来配置您的矢量存储。

  12. 选择用于将数据转换为矢量嵌入的模型。

    创建矢量存储库,允许 Amazon Bedrock 存储、更新和管理嵌入内容。您可以快速创建新的矢量存储库,也可以从已创建的支持的矢量存储中进行选择。如果您创建新的矢量存储,则会为您设置包含必填字段的 Amazon OpenSearch Serverless 矢量搜索集合和索引。如果从支持的矢量存储中进行选择,则必须映射矢量字段名称和元数据字段名称。

    转到下一部分,查看您的知识库配置。

  13. 查看知识库的详细信息。在继续创建知识库之前,您可以编辑任何部分。

    注意

    创建知识库所需的时间取决于您的特定配置。知识库创建完成后,知识库的状态将更改为 “已就绪” 或 “可用”。

    知识库准备就绪并可供使用后,您可以首次同步数据源,也可以在任何时候同步您的数据源,以使内容保持最新状态。在控制台中选择您的知识库,然后在数据源概述部分中选择同步

CLI

以下是您的 Amazon Bedrock 知识库的 Web 爬网程序配置示例。

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