Amazon Bedrock向けのカスタムWebクローリングでRAGの品質を向上
AWSは、Crawl4AIを使用してWebコンテンツをMarkdownとメタデータに前処理し、Amazon Bedrock Knowledge Basesに取り込むことで検索精度を高める方法を実演しています。
英語の原文から自動翻訳されました。
Amazon Web Services(AWS)は、取り込み前にWebコンテンツを前処理することで、Retrieval Augmented Generation(RAG)アプリケーションを強化する方法を詳述した技術ガイドを公開しました。2026年11月にリリースされたこのチュートリアルでは、開発者がオープンソースツールであるCrawl4AIを使用し、データをクリーンアップおよび構造化してからAmazon Bedrock Knowledge Basesに投入する方法を説明しています。このアプローチは、デフォルトのクローラーが関連情報を分離できない場合や、必要なメタデータのコンテキストが欠如しているシナリオを対象としています。
何が起きたか
効果的なRAGシステムの構築は、取り込まれるデータの品質に大きく依存します。Amazon Bedrock Knowledge Basesは、パブリックサイト向けの組み込みWebクローラーを含む、インデックス作成、ストレージ、検索を処理するマネージドサービスを提供しています。このマネージドコネクタは多くのユースケースで十分ですが、厳格な境界内で動作します。robots.txtファイルを尊重し、スケジュールされた同期を通じて変更を検出しますが、ベクトルストアに入る前のページコンテンツの解析やフィルタリング方法に対する深いカスタマイズは許可されていません。
より細かな制御を必要とする組織に対し、AWSはハイブリッドワークフローを提案しています。マネージドコネクタのみに頼る代わりに、開発者はCrawl4AIを使用した準備ステップを挿入できます。このPythonベースのクローラーは、特定のコンテンツ領域を抽出し、ナビゲーション用の定型文を削除し、カスタムのメタデータ属性を添付します。処理されたデータは、MarkdownファイルおよびJSONサイドカーとしてAmazon S3に保存され、これがナレッジベースのデータソースとなります。この方法により、高信号のコンテンツのみが埋め込みモデルに到達することが保証され、回答の関連性が改善される可能性があります。
提供されているソリューションは、リアルタイムのWebアクセスではなく、バッチ取り込みプロセスを概説しています。AWS Fargateを使用してクロールタスクをスケジュール通りに実行し、手動でのサーバー管理なしにインフラストラクチャが自動的にスケールするようにします。このワークフローは拡張性を持たせるよう設計されており、チームは独自の解析ルールとメタデータスキーマを定義しながら、チャンク化と埋め込みという重い処理にはAmazon Bedrockを活用できます。
仕組み
コアとなるメカニズムには、抽出、準備、取り込みという3つの明確な段階が含まれます。まず、Amazon EventBridgeルールがトリガーとなり、コンテナ化されたCrawl4AIスクリプトを実行するAWS Fargateタスクが起動します。クローラーは指定されたシードURLを訪問し、設定可能な深さとページ制限を持つ幅優先探索戦略を適用します。ヘッダー、フッター、広告を取り除き、記事本文、見出し、表のみを保持するために、プルーニングコンテンツフィルターを使用します。出力はクリーンなMarkdownに変換され、これは大規模言語モデルにとって、生のHTMLよりも構造上の意味論をよりよく保持します。
次に、ワークフローは各ドキュメントに対してメタデータサイドカーを生成します。このJSONファイルには、ソースURL、クロールタイムスタンプ、カスタムカテゴリなどの属性が含まれます。これらのサイドカーは、メタデータファイル名がドキュメント名と一致し、.metadata.json拡張子が付与されるという厳格な命名規則に従い、MarkdownファイルとともにAmazon S3にアップロードされます。Amazon Bedrockは取り込み中にこれらのサイドカーを読み取るため、ユーザーは日付やコンテンツタイプなどのカスタム属性に基づいて検索結果をフィルタリングできるようになります。
最後に、タスクはAmazon Bedrock Knowledge Bases内の取り込みジョブをトリガーします。サービスはMarkdownを解析し、選択されたチャンク化戦略を適用して、ベクトル埋め込みを作成します。コンテンツはすでにクリーンアップおよび構造化されているため、チャンク化プロセスは一貫性のあるセグメントを生成する可能性が高くなります。ユーザーは、具体的な検索ニーズに応じて、デフォルト、固定サイズ、またはチャンク化なしの戦略を選択できます。その後、システムはこれらのベクトルをインデックス化し、引用付きのクエリ時検索で使用可能にします。
主要な詳細
- ツール: このソリューションは、オープンソースのPythonクローラーであるCrawl4AIを使用し、Amazon S3を介してAmazon Bedrock Knowledge Basesと統合されています。
- データ形式: コンテンツはノイズを除去しつつ構造を保持するためにMarkdownに変換され、JSONメタデータサイドカーが伴います。
- インフラストラクチャ: クロールプロセスはAWS Fargate上で実行され、設定可能なスケジュールでAmazon EventBridgeによってトリガーされます。
- メタデータの制限: 各メタデータサイドカーは10 KB未満でなければなりません。この制限を超えるとアップロードが失敗します。
- チャンク化戦略: ユーザーはデータソースの設定時にデフォルト、固定サイズ、またはチャンク化なしのオプションを選択できますが、新しいソースを作成せずに後から変更することはできません。
- 認証: サンプル実装はパブリックウェブサイトのみをサポートしています。認証が必要なサイトは、追加のセキュリティレビューとセッション処理が必要です。
なぜ重要なのか
AI製品を構築するソフトウェアエンジニアにとって、有用な回答とハルシネーション(幻覚)の違いは、しばしばデータの衛生状態にあります。デフォルトのWebクローラーは、ナビゲーションメニュー、Cookieバナー、フッターリンクなどを含めたページ全体を取り込む傾向があります。このノイズはコンテンツの意味論を希薄にし、検索スコアの低下につながります。Crawl4AIのようなツールでデータを前処理することにより、チームはベクトルストアにユーザーが実際に気にする情報だけが含まれるようにすることができます。これにより、より正確な応答が得られ、コンテキストウィンドウに必要なトークン数が削減されます。
さらに、カスタムメタデータを添付できる機能は、単純な検索エンジンをフィルタリング可能なデータベースに変えます。開発者はドキュメントに有効期限、部門コード、信頼度スコアなどをタグ付けできます。クエリ時において、これらのタグにより精密なフィルタリングが可能になり、AIが現在または承認済みの情報のみを参照することが保証されます。このレベルの制御は、コンプライアンスと正確性が妥協できないエンタープライズアプリケーションにとって極めて重要です。このアプローチのモジュール性により、チームはアプリケーションロジック全体を書き直すことなく、クローラーや埋め込みモデルを交換することも可能です。
実施できること
- 現在のRAGパイプラインを評価し、ノイズの多いWebコンテンツが回答品質を損なっていないか特定してください。
- Crawl4AIとAmazon Bedrock用のaws-samplesリポジトリをクローンし、サンドボックス環境でワークフローをテストしてください。
- ターゲットウェブサイトのメインコンテンツ領域を分離するために、明確なCSSセレクターまたはプルーニングルールを定義してください。
- 公開日、著者、ドキュメントカテゴリなど、有用なフィルターを含むメタデータスキーマを設計してください。
- 代表的なサンプルを使用してAmazon Bedrockで異なるチャンク化戦略をテストし、コンテキストと精度の最適なバランスを見つけてください。
- ウェブサイトの利用規約を尊重するために、クローラー設定で厳格なURLスコーピングとレート制限を実装してください。



