在亚马逊 Bedrock 知识库中实现网页爬虫 机器学习博客
2026-01-27 13:38:22
在 Amazon Bedrock 知识库中实施网页爬虫
关键要点
Amazon Bedrock 是一个完全托管的服务,提供高性能的基础模型,帮助您构建生成 AI 应用。通过将网页爬虫集成到知识库,可以高效地收集和利用公共网站的数据。设置网页爬虫时,可以选择不同的同步类型来控制要包含哪些网页。本文中将介绍如何创建知识库、测试爬虫,以及监控其进程。Amazon Bedrock 是一项完全托管的服务,提供来自顶级人工智能公司的多种高性能基础模型FMs,包括 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon,并通过单一 API 提供广泛的功能,用于构建具有安全性、隐私和负责任的 AI 的生成 AI 应用。
通过 Amazon Bedrock,您可以根据各种用例实验和评估顶级基础模型。它允许您使用企业数据私下自定义这些模型,采用检索增强生成技术RAG,并构建执行任务的代理。这种Amazon Bedrock 知识库 可以将数据源聚合到信息库中,使您能够轻松构建利用 RAG 的应用。
访问最新和全面的信息对于许多 AI 应用至关重要,以确保数据的准确性和相关性。使用 Amazon Bedrock 知识库的客户希望扩展其爬取和索引公共网站的能力。通过将网页爬虫集成到知识库中,您可以高效地收集并利用这些网页数据。本文将探讨如何无缝实现这一点。

知识库的网页爬虫
通过在知识库中添加网页爬虫数据源,您可以基于网站数据创建面向最终用户的生成 AI 网页应用。您可以通过 AWS 管理控制台 或 API 来完成此操作。网页连接器的默认爬取行为是通过提供的种子网址开始,然后遍历同一主域TPD的所有子链接,并具有相同或更深的 URL 路径。
当前的考虑因素包括:URL 不能要求任何身份验证,它不能是其主机的 IP 地址,并且它的协议必须以 http// 或 https// 开头。此外,网页连接器会获取爬取页面中引用的非 HTML 支持文件,例如 PDF、文本文件、Markdown 文件和 CSV 文件,只要它们未明确被排除。如果提供了多个种子网址,网页连接器将爬取符合任何种子网址的 TPD 和路径的 URL。您可以最多有 10 个源网址,知识库将以此为起点进行爬取。
然而,网页连接器默认不会横跨不同域进行页面遍历。默认行为将检索支持的非 HTML 文件,以确保爬取过程保持在指定的边界内,专注于与目标数据源的相关性。
理解同步范围
设置知识库时,您可以选择不同的同步类型,以控制包含哪些网页。以下表格显示了在不同同步范围下,给定源 URL 时将被爬取的示例路径 (https//examplecom 用于示例):
同步范围类型源网址被爬取的示例域路径描述默认https//examplecom/productshttps//examplecom/products https//examplecom/products/product1 https//examplecom/products/product https//examplecom/products/discounts与源网址相同的主机和初始路径主机仅https//examplecom/sellershttps//examplecom/ https//examplecom/products https//examplecom/sellers https//examplecom/delivery与源网址相同的主机子域https//examplecomhttps//blogexamplecom https//blogexamplecom/posts/post1 https//discoveryexamplecom https//transportexamplecom源网址主域的子域您可以设置最大爬取速度的限速,以控制最大爬取速率。较高的值将缩短同步时间。然而,爬取任务将始终遵循域内的 robotstxt 文件如果存在,遵守标准的 robotstxt 指令,如“允许”、“禁止”,以及爬取速率。
您还可以通过使用包含和排除过滤器进一步细化爬取的 URL 范围。这些过滤器是应用于每个 URL 的正则表达式regex模式。如果 URL 匹配任何排除过滤器,则该 URL 将被忽略。反之,如果设置了包含过滤器,爬虫将仅处理至少与这些过滤器相匹配的 URL,且仍在范围内。例如,要排除以 pdf 结尾的 URL,您可以使用正则表达式 pdf。要仅包含包含 “products” 一词的 URL,您可以使用正则表达式 products。
解决方案概述
在接下来的部分中,我们将通过步骤创建一个带有网页爬虫的知识库并进行测试。我们还将展示如何创建一个特定嵌入模型以及使用Amazon OpenSearch 服务 向量集合作为向量数据库的知识库,并讨论如何监控您的网页爬虫。
先决条件
确保您有权限爬取您计划使用的 URL,并遵守 Amazon 可接受使用政策。同时确保这些 URL 不存在任何机器人检测功能。在知识库中,网页爬虫在爬取网页时使用用户代理 bedrockbot。
创建带有网页爬虫的知识库
完成以下步骤以在知识库中实施网页爬虫:
在 Amazon Bedrock 控制台中,在导航窗格中选择 知识库。选择 创建知识库。在 提供知识库详情 页面,设置以下配置:为知识库提供名称。在 IAM 权限 部分,选择 创建并使用新的服务角色。在 选择数据源 部分,选择 网页爬虫 作为数据源。选择 下一步。在 配置数据源 页面,设置以下配置:在 源网址 中,输入 https//wwwaboutamazoncom/news/amazonoffices。对于 同步范围,选择 仅主机。对于 包含模式,输入 https//wwwaboutamazoncom/news/amazonoffices/[](http//docsawsamazoncom/bedrock/latest/userguide/)。对于排除模式,输入 plants我们不希望有任何包含“plants”一词的帖子。对于 内容分块和解析,选择 默认。选择 下一步。在 选择嵌入模型并配置向量存储 页面,设置以下配置:在 嵌入模型 部分,选择 Titan Text Embeddings v2。对于 向量维数,输入 1024。对于 向量数据库,选择 快速创建新向量存储。选择 下一步。审核详细信息并选择 创建知识库。在前述说明中,结合 包含模式 和 仅主机 同步范围用于演示包含模式在网页爬取中的使用。通过使用默认同步范围,也能实现相同的结果。
您可以在创建知识库时使用 快速创建向量存储 选项,以创建一个Amazon OpenSearch Serverless 向量搜索集合。通过此选项,系统为您设置公有向量搜索集合和向量索引,并配置必要的字段。此外,Amazon Bedrock 知识库管理端到端的数据摄取和查询工作流。
测试知识库
让我们检查如何测试知识库的步骤,数据源为网页爬虫:
在 Amazon Bedrock 控制台中,导航到您创建的知识库。在 数据源 下,选择数据源名称并选择 同步。根据您的数据大小,可能需要几分钟到数小时进行同步。当同步任务完成后,在右侧面板中,在 测试知识库 下,选择 选择模型 并选择您选择的模型。输入以下提示之一,并观察来自模型的响应:我如何参观西雅图的 Amazon 办公室?请提供一些关于亚马逊 HQ2 的信息。亚马逊的纽约办公室是什么样的?如下面的屏幕截图所示,响应中返回的引用网页帮助您验证响应的准确性。
使用 AWS SDK 创建知识库
以下代码使用 AWS SDK for Python (Boto3) 创建一个具有特定嵌入模型和 OpenSearch 服务向量集合作为向量数据库的知识库:
pythonimport boto3
client = boto3client(bedrockagent)
response = clientcreateknowledgebase( name=workshopaossknowledgebase roleArn=yourrolearn knowledgeBaseConfiguration={ type VECTOR vectorKnowledgeBaseConfiguration { embeddingModelArn arnawsbedrockyourregionfoundationmodel/amazontitanembedtextv20 } } storageConfiguration={ type OPENSEARCHSERVERLESS opensearchServerlessConfiguration { collectionArn youropensearchcollectionarn vectorIndexName blogindex fieldMapping { vectorField documentid textField data metadataField metadata } } })
以下 Python 代码使用 Boto3 为 Amazon Bedrock 知识库创建网页爬虫数据源,指定 URL 种子、爬取限制以及包含和排除过滤器:
pythonimport boto3
client = boto3client(bedrockagent regionname=useast1)
knowledgebaseid = knowledgebaseid
response = clientcreatedatasource( knowledgeBaseId=knowledgebaseid name=example description=test description dataSourceConfiguration={ type WEB webConfiguration { sourceConfiguration { urlConfiguration { seedUrls [ {url https//examplecom/} ] } } crawlerConfiguration { crawlerLimits { rateLimit 300 } inclusionFilters [ products ] exclusionFilters [ pdf ] scope HOSTONLY } } })
监控
您可以在您的 Amazon CloudWatch 日志中跟踪正在进行的网页爬虫的状态,这将报告正在访问的 URL 以及它们是否成功被检索、跳过或失败。以下屏幕截图显示了爬取任务的 CloudWatch 日志。
清理
要清理您的资源,请完成以下步骤:
删除知识库:在 Amazon Bedrock 控制台中,选择导航窗格中的 知识库。选择您创建的知识库。注意知识库概述中的 AWS 身份和访问管理IAM服务角色名称。在 向量数据库部分 中,记下 OpenSearch Serverless 集合 ARN。选择 删除,然后输入 delete 以确认。删除向量数据库:在 OpenSearch 服务控制台中,选择导航窗格中的 集合 下的 Serverless。在搜索框中输入您保存的集合 ARN。选择该集合并选择 删除。在确认提示中输入 confirm,然后选择 删除。删除 IAM 服务角色:在 IAM 控制台中,选择导航窗格中的 角色。搜索您之前记录的角色名称。选择该角色并选择 删除。在确认提示中输入角色名称并删除该角色。结论
在本文中,我们展示了 Amazon Bedrock 知识库现在支持网页数据源,使您能够索引公共网页。此功能使您能够有效地爬取和索引网站,从而使知识库包含来自互联网的多样且相关的信息。通过利用 Amazon Bedrock 的基础设施,您可以使用最新和全面的数据增强生成 AI 应用的准确性和有效性。
免费加速器下载安装有关定价信息,请查看 Amazon Bedrock 定价。要开始使用 Amazon Bedrock 知识库,请参考 创建知识库。有关深入的技术内容,请参考 为您的 Amazon Bedrock 知识库爬取网页。想了解我们的构建者社区如何在其解决方案中使用 Amazon Bedrock,请访问我们的 communityaws 网站。