EXERCISE 90分

ストーリー

田中VPoE
ドキュメントローディング、チャンキング、メタデータ、パイプライン — 理論はすべて学んだ。ここからは実際にNetShop社のドキュメント処理パイプラインを設計してもらう
あなた
技術文書、議事録、FAQの3種類ですね
田中VPoE
そうだ。しかも各種類でフォーマットが違う。技術文書はMarkdownとConfluence、議事録はGoogle Docs、FAQは社内Wiki。それぞれに最適なチャンキング戦略とメタデータスキーマを設計し、統合パイプラインにまとめてくれ
あなた
かなりの設計ボリュームですね
田中VPoE
実際のプロジェクトではこの設計が最も時間がかかる。「とりあえず動く」ではなく「運用で問題が出ない」レベルの設計を期待している

ミッション概要

項目内容
演習タイトルドキュメント処理パイプラインの構築
想定時間90分
成果物ドキュメント処理設計書(チャンキング戦略 + メタデータスキーマ + パイプライン設計)

前提条件

ドキュメントソースの詳細

ソース件数形式平均長更新頻度特徴
技術文書5,000件Markdown(60%)、Confluence(40%)3,000文字週次コードブロック多い、ヘッダー構造あり
議事録30,000件Google Docs1,500文字日次日時・参加者情報あり、アクションアイテム含む
FAQ3,000件社内Wiki(HTML)500文字月次Q&Aペア形式、カテゴリタグあり

Mission 1: ドキュメント種別ごとのチャンキング戦略設計

要件

3種類のドキュメントそれぞれについて、以下を設計してください。

  1. チャンキング手法の選定と理由
  2. チャンクサイズとオーバーラップの設定
  3. 特殊要素の処理方針(コードブロック、テーブル、リスト等)
  4. チャンキングの処理フロー図
解答例

技術文書のチャンキング

項目設定理由
手法構造ベース + 階層的チャンキングヘッダー構造が明確、セクション単位が意味的にまとまっている
Parentチャンクセクション単位(H2レベル)LLMに渡す際の十分なコンテキスト
Childチャンクサブセクション単位(H3レベル)、最大500トークン検索精度の向上
オーバーラップ10%(構造境界では不要)構造ベースのため最小限で十分
コードブロック独立チャンクとして抽出、言語タグをメタデータに付加コード検索の精度向上
テーブルMarkdownテーブルはテキスト化して本文に含めるテーブルの意味を保持

議事録のチャンキング

項目設定理由
手法固定長チャンキング + 議題ベース分割構造が一定でない議事録は固定長がベース
チャンクサイズ400トークン議事録は短い文が多く、小さめが適切
オーバーラップ20%発言の文脈が途切れないように
議題分割「議題」「アジェンダ」等のキーワードで分割可能なら優先意味的なまとまりを保持
アクションアイテム独立チャンクとして抽出「誰がいつまでに何をする」を検索しやすく

FAQのチャンキング

項目設定理由
手法Q&Aペア単位質問と回答は分割不可。1ペア=1チャンク
チャンクサイズ1ペアの全文(上限1000トークン)FAQは短いため丸ごと格納
オーバーラップなしペア単位なので不要
関連FAQメタデータにリンクを格納関連質問への誘導

Mission 2: メタデータスキーマ設計

要件

以下のメタデータスキーマを設計してください。

  1. 共通メタデータ(全ドキュメント種別で共通)
  2. 種別固有メタデータ(技術文書/議事録/FAQ各々)
  3. エンリッチメントメタデータ(LLM生成)
  4. 各フィールドの型、必須/任意、用途
解答例

共通メタデータ

フィールド必須用途
chunk_idstring必須チャンクの一意識別子
doc_idstring必須元ドキュメントの識別子
doc_typeenum必須”技術文書” / “議事録” / “FAQ”
sourcestring必須”confluence” / “google_docs” / “wiki”
source_urlstring必須元ドキュメントへのリンク
created_atdatetime必須作成日時
updated_atdatetime必須更新日時
authorstring任意作者名
departmentstring任意部門名
content_hashstring必須コンテンツのハッシュ(冪等性用)

技術文書固有メタデータ

フィールド必須用途
section_titlestring必須セクション見出し
breadcrumbstring必須パンくずパス
tech_stackstring[]任意関連技術(例: “Python”, “AWS”, “Docker”)
has_codeboolean必須コードブロックの有無
code_languagestring任意コードの言語
parent_chunk_idstring任意親チャンクのID(階層的チャンキング用)

議事録固有メタデータ

フィールド必須用途
meeting_datedate必須会議日
participantsstring[]任意参加者一覧
projectstring任意プロジェクト名
has_action_itemboolean必須アクションアイテムの有無
agenda_topicstring任意議題

FAQ固有メタデータ

フィールド必須用途
questionstring必須質問文
categorystring必須FAQカテゴリ
related_faqsstring[]任意関連FAQのID
view_countinteger任意閲覧数(人気度ランキング用)

エンリッチメントメタデータ(全種別共通)

フィールド生成方法用途
summarystringLLM要約検索結果プレビュー
keywordsstring[]LLM抽出キーワード検索補完
hypothetical_questionsstring[]LLM生成検索ヒット率向上

Mission 3: 統合パイプライン設計

要件

以下の統合パイプラインを設計してください。

  1. パイプラインのアーキテクチャ図(AWS構成)
  2. バッチ処理と差分更新の設計
  3. エラーハンドリング方針
  4. 監視・アラート設計
  5. コスト試算(月額)
解答例

アーキテクチャ図

[ドキュメントソース]
Confluence → Webhook → API Gateway → SQS
Notion     → ポーリング(Lambda Cron) → SQS
S3         → S3 Event → SQS

[処理パイプライン]
SQS → Step Functions
  ├── Step 1: ドキュメント取得(Lambda)
  ├── Step 2: テキスト抽出 + クリーニング(Lambda)
  ├── Step 3: チャンキング(Lambda)
  ├── Step 4: メタデータエンリッチメント(Lambda → OpenAI API)
  ├── Step 5: Embedding生成(Lambda → OpenAI API)
  └── Step 6: Qdrant Upsert(Lambda)

[監視]
CloudWatch Metrics + Logs → アラート → Slack

コスト試算(月額)

項目算出根拠月額
OpenAI Embedding API38,000件 × 平均5チャンク × $0.00002/1Kトークン約2万円
OpenAI LLM(メタデータ生成)38,000件 × $0.003/1Kトークン約5万円
AWS Lambda実行回数 × 実行時間約1万円
AWS Step Functions状態遷移数約0.5万円
Amazon SQSメッセージ数約0.1万円
合計約8.6万円

差分更新(月間変更分のみ)の場合: 約2万円/月


達成度チェック

観点達成基準
チャンキング戦略3種類のドキュメントそれぞれに適切な手法が選定され、理由が明確
メタデータスキーマ共通/種別固有/エンリッチメントが体系的に設計されている
パイプライン設計バッチ/差分更新の両方が設計され、AWSサービスが具体的に選定されている
エラーハンドリングリトライ、スキップ、アラートの方針が定義されている
コスト試算月額コストが具体的に算出されている
運用考慮監視、ログ、冪等性が設計に組み込まれている

推定所要時間: 90分