在线AI教程 / AI工具
[Amazon Bedrock] 用 Crawl4AI 为 Amazon Bedrock Knowledge Bases 准备网页内容
用 Crawl4AI 为 Amazon Bedrock Knowledge Bases 准备网页内容 在构建检索增强生成(Retrieval Augmented Generatio
用 Crawl4AI 为 Amazon Bedrock Knowledge Bases 准备网页内容
在构建检索增强生成(Retrieval Augmented Generation,RAG)应用时,回答质量取决于你摄入的数据。Amazon Bedrock Knowledge Bases 是 Amazon Bedrock 的 fully managed(全托管)RAG 能力。借助 Amazon Bedrock Managed Knowledge Base,你只要连接好数据源,Amazon Bedrock 就会代你管理摄入、存储、索引与检索。你无需预置或扩缩向量存储,嵌入和重排序默认使用服务托管的模型。
对于网页内容,请从面向托管知识库的 Amazon Bedrock Web Crawler 数据源连接器开始。你把有权爬取的种子 URL 或站点地图交给它,它就会在你设定的范围和速率限制内爬取。按计划同步会在页面变化时让知识库保持最新,连接器还能等待由 JavaScript 加载的内容。没有需要你构建、托管或运维的爬虫,所以这个连接器是大多数公开网站内容的起点。
有些数据源需要对进入知识库的内容有更多的控制。你可能只想索引每个页面的正文主区域、移除导航和其他模板化内容,或者给每份文档挂上你自己的元数据属性。针对这一类素材,你可以用 Crawl4AI(一个开源 Python 爬虫)搭建一个准备步骤,从而延伸知识库的触达范围。该步骤会为每个页面把 Markdown 和元数据 sidecar 写入 Amazon Simple Storage Service(Amazon S3),知识库再通过它的 Amazon S3 数据源把两者一起摄入。
在本文中,我们会说明如何选择合适的网页摄入路径,并为需要额外处理的内容实现自定义准备。随后你会启动向托管知识库的摄入,并校验检索质量。配套的 aws-samples 仓库以示例实现的形式提供了完整的工作流。
这是对已知网站资产的批量摄入,不是推理时的实时网页访问(例如结合 Amazon Nova 的 Web Grounding)。
方案总览
当 Amazon Bedrock Web Crawler 能够触达并索引你需要的页面时,就从它开始。它会遵守 robots.txt,并且首次完整爬取之后,每次同步只捕获新增、更新和删除的内容。
当公开素材在摄入前需要下面一项或几项控制时,请使用 Crawl4AI 准备路径:
结构化的 Markdown 准备:使用 DefaultMarkdownGenerator 配合剪枝内容过滤器,在保留标题、列表和表格的同时减少导航和其他模板化内容。由于剪枝是启发式的,请审查来自你站点的有代表性的输出。 有界、定向的抽取:只抽取由可选的 CSS 选择器命中的页面区域。用种子来源、页面/路径/主机范围、深度与页数上限以及 URL 模式来约束广度优先遍历。 自定义元数据:把来源 URL、爬取时间戳、内容类型以及你自己的属性挂到每份文档上,这样你就能据此过滤检索结果。
由于托管知识库与客户托管知识库都支持 Amazon S3 数据源,Crawl4AI 路径两种类型都能用。本文使用托管知识库,并在有差异的地方说明客户托管知识库的不同。
本文余下部分跟随配套的示例。请把它的架构和默认值当作一个起点,而不是 Amazon Bedrock Knowledge Bases 的要求。
默认情况下,示例在公有子网中运行 AWS Fargate 任务,通过互联网网关访问你所配置的网站。Crawl4AI 的职责在准备好源文档和元数据 sidecar 之后就结束了。从摄入往后,由 Amazon Bedrock Knowledge Bases 负责解析、分块、嵌入、索引和检索。下图展示了从计划任务一直到检索的 Crawl4AI 路径。

图 1:面向 Amazon Bedrock Knowledge Bases 的 Crawl4AI 到 Amazon S3 摄入路径
图中的编号步骤对应以下工作流:
Amazon EventBridge 按配置的计划启动运行在 AWS Fargate 上的 Amazon Elastic Container Service(Amazon ECS)任务。 任务爬取你所配置的公开网站,为每个页面准备好 Markdown 和元数据 sidecar。 任务把准备好的文件上传到支撑该知识库数据源的 Amazon S3 桶。 任务启动一个 Amazon Bedrock Knowledge Bases 摄入作业。 Amazon Bedrock Knowledge Bases 读取新增和变更的对象,对其进行解析,并应用你所选择的分块策略。 它创建 embedding 向量并在知识库的向量存储中建立索引;对托管知识库而言,该向量存储由 Amazon Bedrock 托管。 你的生成式 AI 应用向知识库查询相关的分块,或者索取带引用的生成回答。
任务在启动时从 AWS Systems Manager Parameter Store 读取非机密的流水线配置。
该工作流只处理公开页面,不实现已登录的会话。对于需要登录的站点,请先评估 Amazon Bedrock Web Crawler 的身份验证选项,其中包含基本认证、表单认证和 SAML 认证。要为示例加上身份验证,就需要会话处理、存放在 AWS Secrets Manager 里的凭据,以及一次安全评审。
工作流如何运作
AWS Cloud Development Kit(AWS CDK)应用在部署期间把实现打包进容器镜像。计划触发时,容器运行 scripts/container_entrypoint.py,依次执行爬取、上传和摄入。下面三个步骤解释核心逻辑。
步骤 1:爬取并抽取内容
爬取步骤执行有界爬取,并为每个成功准备好的页面写出一个 Markdown 文件和一个元数据 sidecar。下面的摘录经过简化。模块 src/crawl4ai_bedrock_kb/crawl.py 中包含完整的种子节奏控制、URL 过滤与范围约束、页数限制以及重定向检查:
async def crawl_and_prepare(config: PipelineConfig, output_dir: str) -> list[str]: written, seen = [], set() pages_crawled = 0 browser_config = BrowserConfig(headless=True, java_script_enabled=True)
async with AsyncWebCrawler(config=browser_config) as crawler: for seed in config.seed_urls: remaining = config.crawl.max_pages - pages_crawled if remaining <= 0: break
strategy = BFSDeepCrawlStrategy( max_depth=config.crawl.max_depth, max_pages=remaining, filter_chain=FilterChain([ SeedScopeFilter(seed, config.crawl.scope),
Optional include/exclude URLPatternFilter objects are added here.
]), ) run_config = CrawlerRunConfig( deep_crawl_strategy=strategy, markdown_generator=DefaultMarkdownGenerator( content_filter=PruningContentFilter() ), css_selector=config.crawl.css_selector, # Optional page region. check_robots_txt=config.crawl.check_robots_txt, mean_delay=config.crawl.request_delay_seconds, max_range=0, semaphore_count=1, )
results = await crawler.arun(url=seed, config=run_config) for result in results: if pages_crawled >= config.crawl.max_pages: break pages_crawled += 1 requested_url = result.url source_url = getattr(result, "redirected_url", None) or requested_url if not SeedScopeFilter(seed, config.crawl.scope).apply(source_url): continue # Recheck the effective destination after redirects. canonical = _canonical_url(source_url) if canonical in seen: continue seen.add(canonical) if not result.success or not result.markdown: continue
md_result = result.markdown markdown = ( getattr(md_result, "fit_markdown", None) or getattr(md_result, "raw_markdown", None) or (md_result if isinstance(md_result, str) else "") ) if not markdown: continue
The complete implementation adds title, crawl timestamps, content
type, and configured custom attributes to this metadata.
written.extend( _write_document( output_dir, _base_name(source_url), markdown, {"source_url": source_url}, ) ) return written
Amazon Bedrock Knowledge Bases 为 Amazon S3 数据源支持多种文档格式,包括纯文本、HTML、Markdown、PDF 和 DOCX。本工作流写出 Markdown,因为它能在不把全部原始 HTML 带入摄入的情况下保留标题、列表和表格。
步骤 2:上传到 Amazon S3
上传步骤把每份准备好的 Markdown 文档及其匹配的元数据 sidecar 发送到所配置的 S3 桶,放在工作流的 s3Prefix 之下。对于 page.md,sidecar 必须命名为 page.md.metadata.json,也就是完整源文件名后面追加 .metadata.json。工作流把每个 sidecar 存放在与其文档相同的 S3 位置。Amazon Bedrock 将每个元数据 sidecar 限制在 10 KB。如果某个 sidecar 会超出该上限,运行会在写入任何一个文件之前以错误终止。
sidecar 中的每个属性都采用托管知识库与客户托管知识库对 Amazon S3 数据源都能接受的类型化格式。下面这个为便于阅读而排版的简化 sidecar,展示了工作流写出的三个属性:
{ "metadataAttributes": { "source_url": { "value": {"type": "STRING", "stringValue": "https://www.example.com/services/permits"} }, "crawled_at_epoch": { "value": {"type": "NUMBER", "numberValue": 1790640000} }, "content_category": { "value": {"type": "STRING", "stringValue": "web"} } } }
流水线只上传本次爬取产出的那些路径,因此陈旧的本地文件不会被发送。
步骤 3:让 Amazon Bedrock Knowledge Bases 完成分块、嵌入与索引
内容进入 S3 之后,摄入作业会把每份文档交给数据源的摄入流水线。默认情况下,托管知识库用它的托管解析器解析每个文件,该解析器会为内容自动选择合适的解析方式。你在连接数据源时就要选定分块策略,此后无法更改,因此在创建生产数据源之前要评估这些选项。托管知识库提供以下分块策略:
默认分块使用 300 token 的固定大小分块,重叠 20%。 固定大小分块按你设定的最大 token 数与重叠百分比来切分内容。 不分块把每个文件当作一个单独的分块,适用于你已经切分好的内容。
分块边界和检索结果取决于内容与所选策略,所以要用有代表性的页面和评测问题来对比这些选项。要更换策略,请新建一个数据源。更多信息见为数据源自定义摄入。客户托管知识库还提供语义分块与层级分块,以及更多解析选项。细节见知识库的内容分块如何工作。
随后工作流启动一个摄入作业,让知识库处理这些新文档。下面是 src/crawl4ai_bedrock_kb/ingest.py 中经过简化的摘录,展示了这个调用:
def start_ingestion_job(config: PipelineConfig) -> str:
Start an Amazon Bedrock knowledge base ingestion job and return its ID.
client = boto3.client("bedrock-agent", region_name=config.region) response = client.start_ingestion_job( knowledgeBaseId=config.knowledge_base_id, dataSourceId=config.data_source_id, ) return response["ingestionJob"]["ingestionJobId"]
同样的 StartIngestionJob 和 GetIngestionJob 调用对两种知识库类型都适用,你也可以在控制台监控进度。
部署方案
在本节中,你用 AWS CDK 把工作流部署到你的 AWS 账户。两种知识库类型之间只有知识库的前置条件不同。完成后,请按照「清理」一节的步骤移除资源。
前置条件
开始之前,请确认你已经具备:
一个 AWS 账户。 下面两种知识库之一: 托管知识库,也就是本文所使用的类型,需位于已提供托管知识库的 AWS 区域。操作说明见创建托管知识库和 Amazon S3 连接器。在数据源上把 Metadata files prefix 留空,因为工作流会把每个元数据 sidecar 写到它的文档旁边。已有的客户托管知识库。要添加 Amazon S3 数据源,见为你的知识库连接 Amazon S3。工作流会为每份文档写出一个元数据 sidecar,因此请确认你的向量存储能够存储并过滤这些属性,如元数据与过滤所述。例如,Amazon OpenSearch Serverless 向量索引必须使用 faiss 引擎。Amazon Aurora 向量索引需要一个自定义元数据列,或者为每个元数据属性各建一列。使用 Amazon S3 Vectors(Amazon S3 的一项能力)时,你可以为每个向量附加最多 1 KB 的自定义元数据,所以你新增的属性要保持简短。 该知识库中状态为 AVAILABLE 的 Amazon S3 数据源。它可以是一个新建的数据源,也可以是你已经在用的数据源。它必须使用你为本工作流配置的那个 S3 桶。如果该数据源按前缀或文件模式过滤内容,那么这些过滤条件必须允许工作流在其 s3Prefix(默认 web-content/)下写出的文件。 知识库、S3 桶以及你部署的 stack 全部位于同一个区域。 爬取你所配置的公开网站的授权。 一台部署工作站,装有 Git、Python 3.10 或更高版本、Node.js、AWS Command Line Interface(AWS CLI)第 2 版、AWS CDK CLI v2,以及一个运行中的、与 Docker 兼容的容器引擎。部署指南列出了 AWS CDK CLI 的最低版本要求。 部署工作站上已配置好 AWS 凭据,并有权限为目标环境执行 bootstrap 以及部署该 CDK stack。 目标账户和区域中已完成 bootstrap 的 CDK 环境。部署步骤中包含了 bootstrap 命令。
你只需要这台工作站来构建和部署。部署完成后,计划任务会在 AWS 中运行。
部署计划任务工作流
克隆配套仓库并安装部署依赖:
git clone cd sample-crawl4ai-bedrock-knowledge-base/deploy python -m venv .venv source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1 python -m pip install -r requirements.txt
请保持 Docker 处于运行状态。先设置 AWS_DEFAULT_REGION 为你知识库所在的区域,因为 cdk deploy 使用的是你的环境或 AWS profile 中的区域,而不是 bootstrap 命令里的那个。如有必要,为目标账户和区域执行一次 bootstrap。然后用你的知识库、数据源、S3 桶以及已获授权的种子 URL 部署 stack:
export AWS_DEFAULT_REGION=REGION # Windows PowerShell: $env:AWS_DEFAULT_REGION = "REGION" cdk bootstrap aws://ACCOUNT_ID/REGION
cdk deploy \ -c knowledgeBaseId=ABCDEFGHIJ \ -c dataSourceId=KLMNOPQRST \ -c s3Bucket=amzn-s3-demo-bucket \ -c 'seedUrls=["https://www.example.com/services"]' \ -c maxDepth=1 \ -c maxPages=25
请把每一个示例值都替换成你自己的,包括 ACCOUNT_ID、REGION 以及四个必需的 context key。这些示例值在语法上是合法的,所以一条未经修改的命令会部署出一个指向不属于你的桶的 stack。你也可以在 cdk.json 中设置这些 key。
maxDepth 和 maxPages 的取值把首次爬取限制为一层链接和 25 个页面。在你审查过准备好的输出之后再调高它们。要想预览某次爬取会准备哪些页面,你也可以按 README 的说明,用 --dry-run 在本地运行流水线。stack 的名称是固定的,所以在同一账户和区域再次执行 cdk deploy 会更新这个 stack。
示例默认构建 ARM64 容器镜像。如果你 x86_64 工作站上的 Docker 无法构建 ARM64 镜像,请在 cdk deploy 命令中追加 -c cpuArchitecture=X86_64。
如果你的账户开启了 VPC Block Public Access,任务就无法从默认的公有子网访问互联网。要检查其模式,请运行 aws ec2 describe-vpc-block-public-access-options。在仅入站(ingress-only)模式下,请用 -c egressMode=nat 部署,这会添加一个按小时计费的 NAT 网关。双向模式还需要一项排除配置,部署指南中有说明。
该 stack 不会创建或修改你的知识库或数据源。
在默认的 rate(24 hours) 计划下,首次运行会在部署创建 Amazon EventBridge 规则时启动。要跟踪这次运行,请使用 TailLogsCommand 输出中的命令,cdk deploy 结束时会把它打印出来。成功的运行会记录 job_status: COMPLETE。要在计划之外启动另一次运行,请在当前运行结束后使用 RunTaskCommand 输出中的命令。要稍后列出各项输出,请运行 aws cloudformation describe-stacks --stack-name Crawl4aiBedrockKbCrawler --region REGION --query "Stacks[0].Outputs"。
部署指南涵盖了其余配置,包括爬取边界、计划、网络、容器架构、监控以及按需运行。
校验检索质量
摄入完成后,在加入生成环节之前,先用 Retrieve 测试一批有代表性的问题。托管知识库使用混合搜索。当它使用默认的托管 embedding 模型时,还会用其托管重排序器对结果做重排。你可以用 sidecar 中的元数据来收窄结果。示例的默认配置会给每个页面都加上取值为 web 的 content_category。下面的示例返回最近七天内爬取的这些页面中最多五个分块。它需要 AWS SDK for Python(Boto3)1.43.32 或更高版本,你可以用 python -m pip install "boto3>=1.43.32" 安装。请把区域和知识库 ID 换成你自己的值:
import time
import boto3
client = boto3.client("bedrock-agent-runtime", region_name="us-east-1") week_ago = int(time.time()) - 7 24 60 * 60
response = client.retrieve( knowledgeBaseId="ABCDEFGHIJ", retrievalQuery={"text": "How do I apply for a building permit?"}, retrievalConfiguration={ "managedSearchConfiguration": { "numberOfResults": 5, "filter": { "andAll": [ {"equals": {"key": "content_category", "value": "web"}}, {"greaterThan": {"key": "crawled_at_epoch", "value": week_ago}}, ] }, } }, )
for result in response["retrievalResults"]: print(result.get("metadata", {}).get("source_url"), result["content"]["text"][:200])
该示例传入的是一个整数时间戳,两种知识库类型在数字过滤中都接受它。托管知识库不支持 startsWith 和 stringContains 过滤。对于客户托管知识库,请把同样的过滤条件传给 vectorSearchConfiguration,而不是 managedSearchConfiguration。它支持的运算符取决于它的向量存储。
元数据过滤可以提升检索精度,但它不是授权边界。如果不同用户应当看到不同的页面,面向托管知识库的 Amazon S3 连接器支持由你提供访问控制列表(ACL)文件的文档级访问控制。示例不会创建 ACL 文件。
要从托管知识库生成回答,请使用智能体检索。AgenticRetrieveStream 操作会返回检索到的结果,以及一份带引用的生成回答。对于客户托管知识库,请使用 RetrieveAndGenerate。两种情况下,每个被引用的结果都包含来自其 sidecar 的 source_url 元数据,你的应用可以把它作为面向用户的来源呈现出来。
每当你改动内容准备、分块或检索设置时,都要评估检索相关性、来源页面覆盖率和引用质量。关于你可以调整的检索设置,见为托管知识库配置和自定义查询。
反复运行它
每次计划事件都会启动一个独立的 Fargate 任务。该 stack 不会阻止运行相互重叠,所以请选择一个长于预期爬取与摄入耗时的间隔。失败的运行不会被通报,因为示例没有添加重试策略、死信队列或告警。即使某些文档摄入失败,摄入作业也可能报告 COMPLETE,此时任务会以退出码 0 结束。任务会记录该作业的失败原因。在你依赖这个计划之前,请补上你需要的监控,包括针对这些失败原因的告警。
每次运行都会按配置的任务规格产生 Fargate 费用,默认规格是 2 vCPU 和 4 GB。任务在最长 30 分钟内轮询摄入作业期间会一直运行,因此一个缓慢的摄入作业会拉长计费的任务时长。如果摄入耗时超过这个上限,任务会以非零退出码结束,而摄入作业仍在继续运行。该 stack 会为集群开启 Container Insights,并为其创建的 Amazon Virtual Private Cloud(Amazon VPC)开启 flow logs。两者都会增加 Amazon CloudWatch 费用。stack 的 AWS KMS 密钥有按月收取的费用,任务的公有 IPv4 地址在任务运行期间也会计费。使用 egressMode=nat 或 privateEndpoints=true 时,NAT 网关和接口端点按小时计费,即使没有任务在运行也一样。知识库的用量单独计费。详情见 Amazon VPC 定价和 Amazon Bedrock 定价。
上传是累加的:在后续爬取中移除某个 URL 或漏掉某个页面,并不会删除它已有的 S3 对象。要移除陈旧内容,请删除所配置前缀下那份过期文档及其匹配的 sidecar,然后再次启动摄入。如果你为托管知识库数据源开启了文档删除保护(deletion protection),请检查它的阈值。当某次同步将删除的文档比例超过该百分比时,它会跳过自己的删除阶段,于是这些文档仍留在索引里。要在桶中的对象发生变化时自动启动摄入,见为 Amazon Bedrock Knowledge Bases 构建并部署自动同步方案。
负责任的 AI 方面的考量
检索到的段落会成为 foundation model(基础模型)用来生成回答的上下文。在生产环境运行本工作流之前,请落实以下控制:
Amazon Bedrock Guardrails:把 guardrail 附加到你的智能体检索或 RetrieveAndGenerate 请求上,以启用内容过滤器、禁止主题、词过滤器和敏感信息过滤器。智能体检索只支持 guardrail 的 BLOCK 动作,不支持 MASK。 上下文 grounding 检查:开启 Guardrails 的上下文 grounding 检查,为每个回答分别打分:相对于检索到的段落的 grounding 程度,以及相对于查询的相关性。guardrail 会拦截低于你所设阈值的回答。对于智能体检索,你可以用 ApplyGuardrail API 对生成的答案执行该检查。该检查支持问答和摘要,不支持对话式聊天机器人这类用例。 把爬取到的内容当作不可信输入:准备好的网页会变成模型上下文,因此公开页面上的文字可能借检索实施 prompt injection。不要只依赖 guardrails 来发现它。把种子 URL 限制在你信任的站点,并在内容进入知识库之前应用下一节所述的摄入过滤模式。 引用与人工复核:让每个生成的回答都带上引用,以便用户对照来源页面核实其中的说法。对于风险较高的用例,请保留人工审核环节。
安全与合规方面的考量
在针对生产内容运行本工作流之前,请审阅以下各项:
使用可信的公开爬取目标:种子 URL 和爬取设置属于部署配置,而 Fargate 任务允许出站访问,这样才能触达公开网站。在示例的默认网络模式下,任务运行在带公有 IP 的公有子网中。请只配置已获授权的公开站点。不要用这个示例去爬取私有或内部端点。在为其他信任模型改造本工作流之前,请先审阅出站网络和目的地控制。 尊重爬取指令:工作流默认开启 Crawl4AI 的 robots.txt 检查,并且 CDK 路径把它钉死为开启,没有可供禁用的 context key。请确认你拥有爬取目标站点的授权,并与 AWS 可接受使用政策保持一致。 速率限制:配置请求之间的延迟,避免把源网站压垮。 静态加密:该 stack 会创建一个带自动密钥轮转的 AWS Key Management Service(AWS KMS)客户管理密钥,并用它加密自己的 CloudWatch 日志组。Amazon S3 默认使用 Amazon S3 托管密钥的服务端加密(SSE-S3)来加密新对象。如果你的数据分级要求桶使用客户管理密钥,请为桶配置好该密钥,然后在 AWS Identity and Access Management(IAM)和密钥策略中都授予上传方与知识库服务角色所需的 AWS KMS 权限。该 stack 的任务角色并不包含 AWS KMS 权限。托管知识库默认使用 AWS 拥有的密钥加密其数据,也可以在创建时指定一个由你管理的客户管理密钥。对于客户托管知识库,请审阅其向量存储的加密方式。 最小权限的 IAM:CDK stack 在所配置的桶前缀上授予 Fargate 任务角色 s3:PutObject 权限。它还授予目标知识库上的 bedrock:StartIngestionJob 和 bedrock:GetIngestionJob,以及为它的单个配置参数授予 ssm:GetParameter。另有独立的角色负责 Amazon EventBridge 启动任务,以及标准的容器镜像拉取与日志投递。该流水线不会读取或列举 S3,也不会调用 InvokeModel 或 Retrieve。 容器与模板检查:容器以非 root 用户身份运行,并且 CDK 应用在每次合成(synthesis)时都会运行 cdk-nag 的 AWS Solutions 检查,抑制项按资源粒度声明。 保护部署配置:CDK 应用把非机密的流水线设置存放在一个明文的 Parameter Store String 参数中。任务定义里只放参数的名称。不要把密码、cookie、token 或其他机密放进 CDK context 或这个参数。 摄入流水线安全:参见保护 RAG 摄入流水线:过滤机制,了解在内容进入知识库之前应当应用的过滤与校验模式。
清理
为避免持续产生费用,请删除本次演练过程中创建的资源:
在仓库的 deploy/ 目录下,于同一区域运行 cdk destroy,并带上你传给 cdk deploy 的那四个相同且必需的 -c 值。应用在每条命令上都会校验它们。这会移除该 stack 的 Amazon EventBridge 规则、ECS 集群、任务定义、日志组、IAM 角色、Parameter Store 参数和安全组,如果 VPC 是由该 stack 创建的,也会一并移除。它还会把 stack 的 AWS KMS 密钥安排在 30 天等待期之后删除。它不会删除导入的 VPC、你的知识库、你的 S3 桶,或工作流上传的那些对象。CDK 也会保留其 bootstrap 资源中的容器镜像和模板。它还留下集群的 Container Insights 日志组,其名称以 /aws/ecs/containerinsights/Crawl4aiBedrockKbCrawler- 开头。 要移除已摄入的网页内容,请删除 s3://
结语
在本文中,你了解了如何把 Amazon Bedrock Knowledge Bases 扩展到那些在摄入前需要准备的、已获授权的公开网页内容。一个按计划在 AWS Fargate 上运行的任务用 Crawl4AI 做有界爬取,准备好 Markdown 及 page.md.metadata.json sidecar,把它们上传到 Amazon S3 数据源,然后启动摄入。知识库随后负责解析、分块、embedding、索引、检索,以及带引用的、有依据的回答。
对大多数公开网站,请从托管知识库中的 Amazon Bedrock Web Crawler 开始。当你需要控制每个页面的哪一部分被索引、或者哪些元数据要随之一起流转时,就使用 Crawl4AI 这条路径。要开始动手,请从配套的 sample-crawl4ai-bedrock-knowledge-base 仓库部署这个计划任务 Fargate 工作流,然后用有代表性的内容校验检索质量与引用,之后再逐步扩大规模。
了解更多
关于本文涉及的服务和模式的更多信息,请参考以下资源:
构建托管知识库 面向托管知识库的 Amazon Bedrock Web Crawler 面向托管知识库的 Amazon S3 连接器 使用智能体检索查询知识库 GitHub 上的 Crawl4AI aws-samples/amazon-bedrock-samples 中的 Knowledge Bases 示例
致谢
本产品包含 UncleCode 作为 Crawl4AI 项目的一部分开发的软件。
关于作者