Upgrade to Pro — share decks privately, control downloads, hide ads and more …

制限付きRAGを試してみた

Avatar for xthixsl_ml xthixsl_ml
May 28, 2026
28

 制限付きRAGを試してみた

Avatar for xthixsl_ml

xthixsl_ml

May 28, 2026

More Decks by xthixsl_ml

Transcript

  1. ©Fusic Co., Ltd. 0 制限付きRAGを試してみた 2026.05.28 佐藤 礼央奈 X: @xthixsl_ml

    ~ Amazon S3 Vectors×Amazon Bedrock Knowledge Bases× Amazon Cognito ~ JAWS-UG AI/ML #38
  2. ©Fusic Co., Ltd. 1 はじめに 自己紹介 佐藤 礼央奈 R E

    O N A S AT O 株式会社Fusic エンジニア 東京の大学を卒業。在学中にエンジニアとして3社で約2年半の長期イン ターンを経験。機械学習や生成AIの研究開発に携わる中で、MLモデルの 本番運用に興味を持ちMLOpsに関心を深める。生成AIも取り入れた開発 や、AWSパートナー企業での経験から、同領域に強みを持つFusicに魅力 を感じ、2025年に新卒入社。
  3. ©Fusic Co., Ltd. 2 1. 今回やりたかったこと 2. 全体構成 3. なぜ単一KB

    + metadata filter か 4. 実装の4ステップ 5. 検証パターン 6. 検証結果 7. まとめ
  4. ©Fusic Co., Ltd. 4 1. 今回やりたかったこと RAGを社内で運用するとき、誰でも全文書を検索できると困る ① financeグループのユーザーは financeドメインの文書だけ検

    索できる ② financeとit両方に所属するユー ザーは 両方のドメインを検索できる ③ どの許可グループにも所属しな い ユーザーは403を返す S3 Vectors + Bedrock Knowledge Bases + Cognito で実現する というユースケース
  5. ©Fusic Co., Ltd. 5 1. 今回やりたかったこと RAGを社内で運用するとき、誰でも全文書を検索できると困る ① financeグループのユーザーは financeドメインの文書だけ検

    索できる ② financeとit両方に所属するユー ザーは 両方のドメインを検索できる ③ どの許可グループにも所属しな い ユーザーは403を返す S3 Vectors + Bedrock Knowledge Bases + Cognito で実現する というユースケース https://zenn.dev/fusic/articles/b772000259b74d
  6. ©Fusic Co., Ltd. 7 2. 全体構成 ポイント: Cognito group →

    RetrievalFilter を Lambda が生成 Cognito group: ["finance", "it"] → filter: {"in": {"key": "domain", "value": ["finance", "it"]}} → ユーザー側にAWS credentialや bedrock:Retrieve 権限は渡さない (Lambdaで認可)
  7. ©Fusic Co., Ltd. 9 3. なぜ単一KB + metadata filter か

    選択肢A: KB分割 ドメインごとにKBを分ける ◦ メリット 物理的に分離 権限境界が明確 △ デメリット ドメイン数だけKBが増える multi検索は結果マージが必要 選択肢B: 単一KB + filter metadata.domain でfilter ◦ メリット 構成シンプル (KB 1つ) in filterで自然にunion検索 retrieval段階で絞り込み metadataで論理分離 (物理分離はしない) 今回採用 選択肢C: acl.json 別ファイルで権限管理 ◦ メリット ユーザー単位・文書単位の 細かい制御が可能 △ デメリット RetrievalFilterに直接使えない 検索後除外だと範囲外チャンク が 一度返る → finance/it のような「ドメイン単位」で分けたい今回のケースに最適。retrievalの段階で絞れる。
  8. ©Fusic Co., Ltd. 11 4. 実装の4ステップ STEP 1 S3 Vectors

    と KB を 作る • Terraform で S3 Vectors を作成 • Bedrock KB を S3_VECTORS で作 成 • 大きい meta は non- filterable 化 STEP 2 S3 に文書と metadata を置く • *.metadata.json を sidecar 配置 • domain は includeForEmbedding =false • RAG-Evaluation- Dataset-JA 31件 STEP 3 Lambda で RetrievalFilter 生成 • Cognito claims から groups 抽出 • 許可 group がなけれ ば 403 • in filter を組み立てて KB に渡す STEP 4 API Gateway で JWT 検証 • Cognito User Pool を issuer にJWT Authorizer をHTTP APIに設定 • ユーザーに直接 IAM 権限を渡さない
  9. ©Fusic Co., Ltd. 13 5. 検証パターン ユーザー 所属グループ 検索できる domain

    期待挙動 ① finance_user finance finance 金融文書のみ参照 ② manufacturing_user manufacturing manufacturing 製造文書のみ参照 finance, it finance, it 両方を検索 ④ no_group_user なし — Bedrock手前で403 ③ multi_group_user
  10. ©Fusic Co., Ltd. 15 6. 検証結果①: finance_user ✓ 範囲内: financeの質問

    ✗ 範囲外: manufacturingの質問 質問 2023事務年度の金融行政方針について教えてくださ い applied_filter {"in":{"key":"domain","value":["finance"]}} citations s3://.../corpus/finance/d45a82c097ef_*.pdf → 金融行政方針の4つの柱を回答 ✓ 質問x applied_filter {"in":{"key":"domain","value":["finance"]}} citations [ ] (0件) → 「情報なし」と回答、citationsゼロ ✓ JAS規格の活用効果について教えてください 回答 金融行政方針は4つの柱で構成: Ⅰ. 経済や国民生活の安定を支え、その後の成長へと 繋ぐ Ⅱ. 社会課題解決と経済成長を両立させる金融システ ムの構築 Ⅲ. 金融システムの安定・信頼を確保する Ⅳ. 金融行政を絶えず進化・深化させる 回答 提供された検索結果には、JAS規格(日本農林規格) の活用効果に関する情報は含まれていません。 検索結果は主に暗号資産・デジタル資産に関する規制 動向や金融規制に関する内容となっており、 JAS規格についての記載は見当たりません。
  11. ©Fusic Co., Ltd. 16 6. 検証結果① 6. 検証結果②: manufacturing_user ✓

    範囲内: manufacturingの質問 質問 JAS規格の活用効果について教えてください applied_filter {"in":{"key":"domain","value":["manufacturing"]}} citations s3://.../corpus/manufacturing/cf003e4fe3cc_index-11.pdf → JAS規格の活用効果を回答 ✓ 回答 JAS規格・認証の活用効果として、以下のような点が挙げられます: ・消費者・取引先への品質保証 ・販売・単価へのプラス効果 ・技術の維持・向上 ・輸出への活用(有機JASの場合)
  12. ©Fusic Co., Ltd. 17 6. 検証結果①②: Retrieve APIで直接確認 クエリ: 「2023事務年度の金融行政方針」

    — 同じ質問で filter のみ切り替え filter: finance {"in":{"key":"domain","value":["finance"]}} 検索結果 (top hits) 0.970 finance d45a82c097ef_230829_main.pdf 0.961 finance d45a82c097ef_230829_main.pdf 0.961 finance d45a82c097ef_230829_main.pdf → finance ドメインのみ、score 0.95+ filter: manufacturing (同じクエリ) 検索結果 (top hits) 0.592 manufacturing DM_Industry_Vision_3.0 .pdf 0.580 manufacturing keshouhin-standard.pdf 0.573 manufacturing 110329-1a.pdf → finaceは除外、manufacturingのみ {"in":{"key":"domain","value":["manufacturing"]}}
  13. ©Fusic Co., Ltd. 18 7. 検証結果② 6. 検証結果③④: multi_user /

    no_group_user ✓ multi_user (finance + it) の union 検索 ✗ no_group_user は Bedrock 手前で 403 質問 IT分野のセキュリティ動向について教えてください applied_filter {"in":{"key":"domain","value":["finance","it"]}} citations domain=it の3件 (report / point / skillup_guideline) → in operator で両ドメインを 1回で横断 ✓ 同じAPIを no_group_user で実行 許可グループに所属していないユーザーで同一エンドポイン トを呼び出す status 403 body {"error":"no allowed domain group on caller"} → Bedrock 手前で 403 で拒否 ✓ 回答 IT分野のセキュリティ動向について、以下のような主要なト ピックが挙げられます: ・能動的サイバー防御(Active Cyber Defense) ・IoT機器のセキュリティ ・情報通信ネットワークの安全性・信頼性の確保 ・IPA「情報セキュリティ10大脅威2025」 ・AIとセキュリティ Lambda の挙動 検索対象domainを作れないユーザーは、 そもそもKnowledge Baseに問い合わせません。
  14. ©Fusic Co., Ltd. 20 まとめ 単一 KB + metadata filter

    で domain 単位の検索範囲制御が可能 複数グループに所属するユーザーは、所属する全ドメインの文書を1回のクエリで検索でき る 認可境界は Lambda 側で閉じ、未所属ユーザーはBedrockを呼ぶ前に403エラーを返す Point.01 Point.02 Point.03
  15. ©Fusic Co., Ltd. 21 Thank You We are Hiring! https://recruit.fusic.co.jp/

    ご清聴いただきありがとうございました