产品AWS Machine Learning·原文 2026年11月3日

AWS介绍用Crawl4AI为Bedrock知识库预处理网页内容

AWS机器学习博客发布教程:当Amazon Bedrock Web Crawler不够用时,可用开源爬虫Crawl4AI抓取网页、生成Markdown与元数据sidecar写入S3,再由Bedrock知识库摄取。作者称该方案用于已知网页属性的批处理,而非推理时的实时网页访问。

AI解读:博客给出的选择标准是:先用托管知识库自带的Amazon Bedrock Web Crawler,它遵守robots.txt、支持定时同步并等待JavaScript加载内容;需要只抽取页面正文、去除导航等样板内容、或给每份文档附加自定义元数据时,才改用Crawl4AI预处理路径。

Crawl4AI路径的边界在作者描述中较明确:它只负责抓取与准备文档,产出Markdown和元数据sidecar上传到S3,之后由Bedrock知识库完成解析、分块、嵌入、索引与检索;方案声明只处理公开页面,不实现登录会话。

分块策略在创建数据源时选定且之后不能修改,托管知识库提供默认分块(300 token、20% 重叠)、固定大小分块和不分块三种;要更换策略需新建数据源,因此作者建议先用代表性页面和评估问题比较效果。

元数据过滤能缩小检索范围,但博客明确它不是授权边界;若不同用户应看到不同页面,需依赖托管知识库S3连接器的文档级ACL文件,而该示例并未生成ACL文件。

AWS机器学习博客于近日发布一篇教程,介绍如何将开源Python爬虫Crawl4AI用作Amazon Bedrock Knowledge Bases的网页内容预处理层。文章由Daxeshkumar Patel撰写,称该方案面向需要更多控制的公开网页内容:只索引页面正文区域、剥离导航和样板内容,或为每份文档附加自定义元数据属性。

按文章描述,Crawl4AI步骤把每个页面的Markdown和元数据sidecar写入Amazon S3,知识库再通过S3数据源摄取这两类文件。文章同时给出配套的aws-samples仓库,并称托管知识库与客户自管知识库都支持S3数据源,因此该路径对两者均可用;示例采用托管知识库。

托管爬虫与Crawl4AI路径的分工

文章建议先使用Amazon Bedrock Web Crawler,由用户提供有权抓取的种子URL或站点地图,连接器在设定的范围和速率限制内抓取,定时同步只捕获新增、更新和删除的内容,并可等待JavaScript加载的内容。

当公开素材需要在摄取前做额外处理时,文章列出Crawl4AI路径适用的三类情况:用DefaultMarkdownGenerator配合剪枝内容过滤器减少样板内容并保留标题、列表和表格;用可选CSS选择器只抽取匹配的页面区域,并按种子来源、页面/路径/主机范围、深度、页数上限和URL模式约束广度优先遍历;以及附加来源URL、抓取时间戳、内容类型和自定义属性供检索过滤。文章提醒剪枝是启发式的,应审查站点的代表性输出。

流程、格式与限制

文章的架构图对应如下顺序:Amazon EventBridge按计划启动AWS Fargate上的Amazon ECS任务,任务抓取配置的公开网站并生成Markdown与sidecar,上传到支撑知识库数据源的S3桶,然后启动Bedrock知识库摄取作业,由知识库解析、按选定策略分块、生成嵌入并在其管理的向量存储中建立索引,应用再查询相关分块或带引用的生成结果。

sidecar命名需为完整源文件名加 .metadata.json,并与文档放在同一S3位置;文章称Bedrock对每个元数据sidecar限制为 10 KB,若超出,运行会在写入两个文件前报错停止。示例默认给每个页面写入content_category为web。

文章说明分块策略在连接数据源时选择、之后不能更改,托管知识库提供默认分块(固定 300 token、20% 重叠)、固定大小分块和不分块;客户自管知识库还提供语义分块、层次分块及更多解析选项。要更换策略需创建新的数据源。

部署条件与验证方式

部署部分要求:一个AWS账户;托管知识库需位于支持托管知识库的区域,数据源的元数据文件前缀留空,因为sidecar与文档同放;客户自管知识库则需确认向量存储能存储和过滤这些属性,例如OpenSearch Serverless向量索引须使用faiss引擎,Aurora向量索引需要自定义元数据列,S3 Vectors每个向量最多附加 1 KB自定义元数据。知识库、S3桶和部署栈须在同一区域。

部署工作站需具备Git、Python 3.10以上、Node.js、AWS CLI v2、AWS CDK CLI v2和运行中的Docker兼容容器引擎,并需在目标账户和区域完成CDK bootstrap。示例命令使用maxDepth=1、maxPages=25 限制首次抓取,文章建议审查输出后再提高。

默认计划为每 24 小时一次,部署创建EventBridge规则后首次运行即启动;成功运行日志显示job_status: COMPLETE。文章还提到,若账户启用VPC Block Public Access,默认公有子网中的任务无法访问互联网,仅入站模式需以 -c egressMode=nat部署并产生NAT网关小时费用,双向模式还需额外排除配置。

检索验证与元数据过滤的适用范围

摄取后,文章建议先用Retrieve接口测试代表性问题,再加生成环节。托管知识库使用混合搜索,采用默认托管嵌入模型时还会用托管重排序器对结果重排;示例通过sidecar中的content_category和crawled_at_epoch过滤,返回最近七天内抓取、类别为web的最多五个分块,并称该数字时间戳过滤对两类知识库均有效。

文章同时划出两项边界:元数据过滤可提升检索精度,但不是授权边界;托管知识库不支持startsWith和stringContains过滤,客户自管知识库的过滤需放在vectorSearchConfiguration中,支持的运算符取决于其向量存储。若需要按用户区分可见页面,托管知识库的S3连接器支持由用户提供的ACL文件做文档级访问控制,而该示例不生成ACL文件。

对于需要登录的站点,文章称示例不实现认证会话,建议先评估Bedrock Web Crawler的basic、form-based和SAML认证选项;若扩展示例以支持认证,需要会话处理、在AWS Secrets Manager中存放凭据并进行安全审查。

信息来源

更多

新闻专题
外观