コンテンツにスキップ

Sample AWS IDP Pipeline

非構造化データを実用的なインサイトに変換するAI駆動IDPプロトタイプです。文書、動画、音声、画像を分析し、ハイブリッド検索(ベクトル+キーワード)、ナレッジグラフ探索、対話型AIインターフェースを提供します。AWS CDKで構築されたNxモノレポ構成で、リアルタイムワークフローステータス通知をサポートします。

Main Screen

  • インテリジェント文書処理(IDP)

  • AI駆動分析

    • Claude Sonnet 4.6 Vision ReAct Agentによるセグメント別深層分析
    • TwelveLabs Pegasus 1.2 + Amazon Nova Lite 2による動画分析
    • Claude Sonnet 4.6 / Haiku 4.5による文書要約生成
    • Nova Embedによる1024次元ベクトル埋め込み
  • ハイブリッド検索

    • LanceDBベクトル検索 + FTS(全文検索)
    • Kiwi韓国語形態素解析器によるキーワード抽出
    • Bedrock Cohere Rerank v3.5による結果再ランキング
  • ナレッジグラフ

    • Neptune DB Serverlessによるエンティティ・関係性の保存
    • LLMベースのエンティティ抽出と関係マッピング(分析時に自動構築)
    • グラフ探索による文書間の関連ページ発見
    • プロジェクトレベル・文書レベルのグラフ可視化
  • AIチャット(Agent Core)

    • Bedrock Agent Core基盤のIDP Agent
    • MCP Gatewayによるツール呼び出し(検索、グラフ、アーティファクト管理)
    • S3ベースのセッション管理で会話コンテキスト維持
    • プロジェクト別カスタムエージェントとシステムプロンプト
  • リアルタイム通知

    • WebSocket API + ElastiCache Redisによるリアルタイムステータス更新
    • DynamoDB Streamsによるワークフローイベント検出
    • ステップ進捗、アーティファクト変更、セッション状態のリアルタイム反映
  • 対応ファイル形式

    ファイルタイプ対応形式
    文書PDF, DOCX, DOC, TXT, MD
    画像PNG, JPG, JPEG, GIF, TIFF, WebP
    動画MP4, MOV, AVI, MKV, WebM
    音声MP3, WAV, FLAC, M4A
    プレゼンテーションPPTX, PPT
    スプレッドシートXLSX, XLS, CSV
    CADDXF
    ウェブ.webreq(URLクローリング)

Architecture

@idp-v2/infra(14スタック)
+-- VpcStack - VPC (10.0.0.0/16, 2 AZ, NAT Gateway)
+-- NeptuneStack - Neptune DB Serverless(ナレッジグラフ)
+-- StorageStack - S3バケット、DynamoDBテーブル、ElastiCache Redis
+-- EventStack - S3 EventBridge、SQSキュー、ファイルタイプ検出Lambda
+-- OcrStack - PaddleOCR(Lambda CPU + SageMaker GPU)
+-- BdaStack - Bedrock Data Automationコンシューマー
+-- TranscribeStack - AWS Transcribeコンシューマー
+-- WorkflowStack - Step Functionsワークフロー(Distributed Map)
+-- WebsocketStack - WebSocket API、リアルタイム通知
+-- McpStack - MCP Gateway(検索、グラフ、アーティファクトツール)
+-- WorkerStack - WebSocketメッセージ処理
+-- AgentStack - Bedrock Agent Core(IDP Agent)
+-- WebcrawlerStack - ウェブクローリングエージェント(Bedrock Agent Core)
'-- ApplicationStack - Backend(ECS Fargate)、Frontend(CloudFront)、Cognito

1. 文書アップロード&分析パイプライン

Section titled “1. 文書アップロード&分析パイプライン”

ユーザーがPresigned URLでS3に文書をアップロードすると、EventBridgeがObjectCreatedイベントを検出します。Type Detection Lambdaがファイルタイプを判別してSQSにルーティングし、前処理が並列に実行されます(OCR、BDA、Transcribe)。前処理完了後、Step Functionsワークフローがセグメント分割、AI分析、ベクトル埋め込み、ナレッジグラフ構築、文書要約を実行します。

S3 Upload (Presigned URL)
-> EventBridge (ObjectCreated)
-> Type Detection Lambda
+- OCR Queue -> PaddleOCR (Lambda/SageMaker) -- オプション
+- BDA Queue -> Bedrock Data Automation -- オプション
+- Transcribe Queue -> AWS Transcribe -- オプション
+- WebCrawler Queue -> Bedrock Agent Core -- 自動(.webreq)
'- Workflow Queue -> Step Functions
-> Step Functions Workflow
Segment Prep -> Wait for Preprocess -> Format Parser -> Build Segments
-> Distributed Map (max 30)
+- Segment Analyzer (Claude Sonnet 4.6 Vision / Pegasus 1.2 / Nova Lite 2)
'- Analysis Finalizer -> SQS -> LanceDB Writer
-> Document Summarizer (Claude Sonnet 4.6)
-> Vector Embedding (Nova 1024d) -> LanceDB
-> Graph Builder(エンティティ抽出)
-> Neptune DB(エンティティ、関係性)

2. リアルタイム通知(WebSocket)

Section titled “2. リアルタイム通知(WebSocket)”

ワークフローの進行状態がDynamoDBに記録されると、DynamoDB Streamsが変更を検出します。VPC内部のWorkflowStream LambdaがRedisでアクティブ接続を照会し、WebSocket APIを通じてイベントをプッシュすることで、フロントエンドでリアルタイムにステータスを反映します。

DynamoDB Streams(状態変更検出)
-> WorkflowStream Lambda (VPC)
-> Redis(接続照会)
-> WebSocket API -> Frontend
+- ステップ進捗
+- アーティファクト変更
'- セッション状態更新

ユーザーの質問がAPI Gatewayを通じてBedrock Agent Coreに送信されます。IDP AgentがMCP Gatewayを通じてツールを呼び出し、Search Toolでハイブリッド検索、Graph Toolでグラフ探索を実行し、Artifact Toolで成果物を管理します。セッション履歴はS3に保存され、会話コンテキストが維持されます。

User Query
-> API Gateway REST (SigV4)
-> Bedrock Agent Core Runtime
'- IDP Agent (Claude Sonnet 4.6)
-> MCP Gateway
+- Search Tool Lambda -> LanceDB Service -> Hybrid Search (Vector + FTS)
+- Graph Tool Lambda -> Graph Service -> Neptune(グラフ探索)
+- Artifact Tool Lambda -> S3
'- Code Interpreter -> Python実行
-> S3 (Session Load/Save)

API Gateway HTTP(IAM認証)からVPC Linkを通じてPrivate ALBを経由し、ECS FargateのFastAPIに接続されます。プロジェクト/文書管理、ワークフロー照会、ハイブリッド検索、チャットセッション、カスタムエージェント、ナレッジグラフ、アーティファクト管理など、すべてのデータアクセスを担当します。

API Gateway HTTP (IAM Auth)
-> VPC Link -> Private ALB -> ECS Fargate (FastAPI)
+- DynamoDB -- プロジェクト/文書CRUD、ワークフロー状態
+- LanceDB -- ハイブリッド検索 (Vector + FTS) via Lambda invoke
+- Neptune -- ナレッジグラフ照会
+- Bedrock -- Cohere Rerank v3.5
+- S3 -- Presigned URL、セッション (DuckDB)、エージェント、アーティファクト
+- Redis -- クエリキャッシュ
+- Step Functions -- 再分析トリガー
'- Lambda -- QA Regenerator
判断理由
Step Functionsペイロード -> DynamoDB中間ストレージStep Functions 256KBペイロード制限の回避
セグメントインデックスのみワークフローに渡す3000ページ以上の文書サポート
LanceDB + S3 Express One Zoneベクトル検索に最適化された低レイテンシストレージ
Neptune DB Serverlessエンティティ関係のナレッジグラフ、アイドル時ゼロスケーリング
PaddleOCRデュアルバックエンド(Lambda + SageMaker)CPUモデルはLambda(コールドスタートなし)、GPUモデル(VL)はSageMaker
SageMaker Auto-scaling 0->1コスト最適化(アイドル時Scale-to-zero)
ElastiCache RedisWebSocket接続状態管理(DynamoDB TTLより高速)
DuckDBでS3直接クエリセッション/エージェントデータのコピーなしで照会
VPC Link + Private ALBバックエンドをインターネットに公開しない
Distributed Map(最大30並列)Lambda同時実行制限と並列性のバランス
Terminal window
# リポジトリのクローン
git clone https://github.com/aws-samples/sample-aws-idp-pipeline.git
cd sample-aws-idp-pipeline
# 依存関係のインストール
pnpm install
# 環境変数の設定
cp .env.local.example .env.local
# .env.localを編集してAWSプロファイルとリージョンを設定
Terminal window
# フロントエンド開発サーバー
pnpm nx serve @idp-v2/frontend
# エージェントのローカル実行
pnpm nx serve idp_v2.idp_agent

Quick Deploy: CloudShell + CodeBuildを使用して、単一スクリプトでパイプライン全体をデプロイできます。Quick Deploy Guideを参照してください。

miseを使用したデプロイ(推奨)

Section titled “miseを使用したデプロイ(推奨)”
Terminal window
# miseのインストール (macOS)
brew install mise
# スタック選択デプロイ(fzfで選択)
mise run deploy
# 全体ビルド
pnpm build:all
Terminal window
# CDKブートストラップ(初回のみ)
pnpm nx synth @idp-v2/infra
# 全スタックデプロイ
pnpm nx deploy @idp-v2/infra
# ホットスワップデプロイ(開発用)
pnpm nx deploy @idp-v2/infra --hotswap
# リソース削除
pnpm nx destroy @idp-v2/infra
Terminal window
# ビルド
pnpm build:all # 全体ビルド
pnpm nx build @idp-v2/infra # 単一パッケージビルド
# テスト
pnpm nx test @idp-v2/infra # テスト実行
pnpm nx test @idp-v2/infra --update # スナップショット更新
# リント
pnpm nx lint @idp-v2/infra # リント
pnpm nx lint @idp-v2/infra --configuration=fix # 自動修正
モデル用途説明
Claude Sonnet 4.6セグメント分析 / エージェントVision ReAct Agent、深層文書分析
Claude Sonnet 4.6文書要約文書全体の要約生成
Claude Haiku 4.5検索要約軽量モデル、検索結果の整理
TwelveLabs Pegasus 1.2動画視覚分析動画を直接分析してシーンを理解
Amazon Nova Lite 2動画スクリプト抽出大容量コンテキストSTTベースの動画スクリプト抽出
Nova Embed Text v2ベクトル埋め込み1024次元マルチモーダル埋め込み
Cohere Rerank v3.5検索再ランキングハイブリッド検索結果最適化
モデル用途説明
PP-OCRv5 / PP-StructureV3OCR(CPU)Lambdaコンテナ、汎用テキスト抽出
PaddleOCR-VLOCR(GPU)SageMaker g5.xlarge、Vision-Languageモデル、Auto-scaling 0->1
Bedrock Data Automation文書分析非同期文書構造分析(オプション)
AWS Transcribe音声変換音声/動画テキスト変換
ツール説明
search_documentsプロジェクト文書のハイブリッド検索(Vector + FTS + Rerank)
graph_searchナレッジグラフ探索による関連ページ発見
link_documents / unlink_documents文書間の手動関係管理
overviewプロジェクト文書の概要とサマリー
save/load/edit_markdownマークダウンアーティファクトの作成・編集
create_pdf, extract_pdf_text/tablesPDF生成とテキスト/テーブル抽出
create_docx, extract_docx_text/tablesWord文書生成とテキスト/テーブル抽出
generate_imageAI画像生成
code_interpreterPythonコード実行サンドボックス
sample-aws-idp-pipeline/
+-- packages/
| +-- agents/ # AIエージェント
| | '-- idp-agent/ # IDP Agent (Strands SDK)
| +-- backend/app/ # FastAPIバックエンド
| | +-- main.py
| | +-- config.py
| | +-- ddb/ # DynamoDBモジュール
| | +-- routers/ # APIルーター
| | '-- services/ # ビジネスロジック
| +-- common/constructs/src/ # 再利用CDKコンストラクト
| +-- frontend/src/ # React SPA
| | +-- routes/ # ページルート
| | '-- components/ # Reactコンポーネント
| +-- lambda/ # MCPツールLambda
| | +-- search-mcp/ # 検索ツール(ハイブリッド検索 + 要約)
| | '-- graph-mcp/ # グラフツール(Neptune探索)
| '-- infra/src/
| +-- stacks/ # 14 CDKスタック
| +-- functions/ # Python Lambda関数
| | +-- step-functions/ # ワークフロー関数
| | +-- container/ # コンテナLambda(LanceDB + Graphサービス)
| | +-- shared/ # 共有モジュール
| | +-- websocket/ # WebSocketハンドラー
| | '-- lancedb-writer/ # LanceDBライター
| '-- lambda-layers/ # Lambdaレイヤー
+-- docs/ # ドキュメント(Astro)
'-- README.md

インフラストラクチャ(TypeScript)

Section titled “インフラストラクチャ(TypeScript)”
  • AWS CDK 2.230.x + Nx 22.x
  • AWS Step Functions(ワークフローオーケストレーション)
  • AWS Lambda + Lambda Layers
  • API Gateway HTTP / REST / WebSocket
  • FastAPI(ECS Fargate、ARM64)
  • LanceDB + S3 Express One Zone(ベクトルストレージ)
  • Neptune DB Serverless(ナレッジグラフ)
  • DynamoDB(One Table Design)
  • Kiwi(韓国語形態素解析器)
  • DuckDB(S3直接クエリ)
  • React 19 + TanStack Router
  • Tailwind CSS
  • AWS SDK(S3アップロード)
  • Cognito OIDC認証
  • WebSocketクライアント
  • Bedrock Agent Core(Strands SDK、ReActパターン)
  • Bedrock Claude Sonnet 4.6 / Haiku 4.5
  • Bedrock Nova Embed(1024次元)
  • Bedrock Cohere Rerank v3.5
  • TwelveLabs Pegasus 1.2(動画視覚分析)
  • Amazon Nova Lite 2(動画スクリプト抽出)
  • PaddleOCR(Lambda CPU + SageMaker GPU)
  • AWS Transcribe