跳到正文
AWS Machine Learning Blog· Daxeshkumar Patel·· 5 小时前AI 评分22

用 Crawl4AI 为 Amazon Bedrock Knowledge Bases 准备网页内容

Prepare web content for Amazon Bedrock Knowledge Bases with Crawl4AI

AI 导读

AWS 介绍如何用开源 Python 爬虫 Crawl4AI 为 Amazon Bedrock Knowledge Bases 做自定义网页内容准备:抓取后向 Amazon S3 写入 Markdown 与 metadata sidecar,再由 S3 数据源完成摄取。该路径适用于需要结构化 Markdown、CSS 选择器限定抽取或自定义元数据的站点,元数据 sidecar 上限 10 KB。

深度导读
在构建 RAG 应用时,回答质量取决于摄取的数据。Amazon Bedrock Knowledge Bases 是 Amazon Bedrock 的全托管 RAG 能力,用户连接数据源后,摄取、存储、索引与检索均由服务管理,无需自行部署或扩展向量库。对于公开网页内容,官方建议先使用 Amazon Bedrock Web Crawler 数据源连接器:提供获授权的种子 URL 或站点地图,连接器在设定的范围与速率限制内抓取,支持定时同步,并能等待 JavaScript 加载的内容。 但有些来源需要更精细的控制,例如只索引页面主体区域、去除导航等样板内容,或为每个文档附加自定义元数据属性。这类场景可以在摄取前增加一个基于开源 Python 爬虫 Crawl4AI 的准备步骤:为每个页面写出 Markdown 文件和元数据 sidecar 到 Amazon S3,再由知识库通过 S3 数据源摄取两者。文章强调这属于对已知站点的批量摄取,而非推理时的实时网页访问。 方案架构上,Amazon EventBridge 按计划触发 AWS Fargate 上的 Amazon ECS 任务,任务抓取配置的公开网站并生成 Markdown 与 sidecar,上传至支撑知识库数据源的 S3 桶,随后启动 Amazon Bedrock Knowledge Bases 摄取作业,由服务完成解析、分块、嵌入与索引。任务启动时从 AWS Systems Manager Parameter Store 读取非敏感配置。该工作流只处理公开页面,不实现认证会话;需要登录的站点应先评估 Web Crawler 的 basic、form-based 和 SAML 认证选项。 实现细节方面,AWS CDK 应用在部署时将实现打包为容器镜像,调度触发后运行 scripts/container_entrypoint.py,依次执行抓取、上传和摄取。抓取步骤使用 DefaultMarkdownGenerator 配合剪枝内容过滤器减少样板内容,同时保留标题、列表和表格;由于剪枝是启发式的,建议人工检查代表性输出。遍历可按种子来源、页面/路径/主机范围、深度与页数上限以及 URL 模式进行约束,并在重定向后重新校验目标地址。 上传步骤将文档与同名 sidecar 放在同一 S3 位置,例如 page.md 对应 page.md.metadata.json。Amazon Bedrock 限制每个元数据 sidecar 不超过 10 KB,超限时运行会在写入任何文件前报错停止。sidecar 中的属性采用带类型的格式,示例包含 source_url、crawled_at_epoch 和 content_category。摄取阶段,托管知识库默认使用托管解析器,分块策略在连接数据源时选定且之后不可更改,可选默认分块(300 token、20% 重叠)、固定大小分块和无分块;客户托管知识库还提供语义分块与层次分块。两种知识库类型均支持 StartIngestionJob 与 GetIngestionJob 调用。

来源:AWS Machine Learning Blog · aws.amazon.com