1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita AI Summit 登壇レポート

1
Last updated at Posted at 2026-03-23

Qiita AI Summit 登壇レポート:PoCで終わらせない、エンタープライズRAGの「権限管理」と「泥臭い実装」の全貌

2026年1月29日に開催された Qiita AI Summit にて、登壇の機会をいただきました。

Qiita AI Summit — AI時代が訪れた今、開発組織のあり方を考える

スライドで伝えきれなかった部分も含めて、記事として残しておきます。

はじめに:なぜこのテーマで話したか

今回のサミットのテーマは「AI時代が訪れた今、開発組織のあり方を考える」でした。

各社のAI活用事例や開発プロセスの変化が語られる場で、私が選んだテーマは少し毛色が違いました。「AI時代の開発組織」を語るなら、PoCを本番に持っていく力があるかどうかが核心だと思っていて、そのテーマで話しました。

「ChatGPTを使ってみた」「開発速度が上がった」という話ではなく、エンタープライズ向けのRAGシステムを実際に作る中で直面した、セキュリティ設計・権限管理・コスト爆発というリアルな壁の話をしました。

企業のAI活用が進まない現状

ChatGPTやCopilotの登場で、個人レベルのAI活用は急速に広まりました。でも企業全体の利益に資するAI活用となると、話は全然違います。

【よくある失敗パターン】

  • PoCで止まる:実証実験は成功しても、本番環境に持っていけない
  • 業務に定着しない:一部の部署で導入したが、気づいたら使われなくなる
  • 全社展開できない:特定のユースケースからスケールできない

理由はシンプルで、企業には「セキュリティ要件」「権限管理」「コスト」という、個人利用では気にしなくていいレイヤーが存在するからです。

我々が開発している IntegratorX は、まさにこの課題に正面から取り組むRAG基盤です。

では具体的に、何がしんどかったのか。ここからは実際にぶつかった壁を順に話していきます。

技術Deep Dive① 権限管理との戦い

最初のアプローチ:SpiceDB

権限管理の設計で最初に検討したのが SpiceDB です。GoogleのZanzibarにインスパイアされたOSSで、ReBACベースの柔軟な権限モデルが強みです。

これだけ聞くと最高に見えます。でも要件を細かく分析した結果、オーバースペックだという結論に至りました

なぜシンプルな設計を選んだか

RAGの特性を踏まえると、必要な権限チェックはそこまで複雑ではありませんでした

  • 参照が主目的なので「見られるか・見られないか」が分かれば十分
  • 編集・削除などの副作用ある操作は、接続先(Salesforce・Google Drive等)の認証に任せる
  • 接続先の権限をそのまま踏襲するなら、シンプルなリレーションを貼るだけで要件を満たせる

🔑 「最先端・最柔軟」が正解とは限らない。今の要件に合ったシンプルさを選ぶほうが、開発速度・保守性・チームの理解度すべてにおいて優れていることが多い。

技術Deep Dive② Salesforceの「項目レベルセキュリティ」という壁

権限管理の方針が固まったと思ったら、次の壁が現れました。Salesforceの項目レベルセキュリティです。

問題の本質:行は見せていい、でも列は隠したい

フィールド 一般社員 管理職のみ
名前
年齢
給与

RLSより細かいカラム単位の権限制御です。これがRAGと組み合わさると厄介な問題が起きます。

Salesforceのデータをベクトル化する際、「給与」カラムの情報も一緒にEmbeddingに含まれてしまいます。

最初に考えた解決策(そして失敗)

「ヒットしたIDをもとに、ユーザー権限で再取得すればいいのでは?」

ベクトル検索 → オブジェクトIDを取得 → ユーザー権限で再取得 → 安全なデータを返す

一見うまくいきそうです。でも、もっと深刻な問題に気づきました。

推論攻撃(Inference Attack)のリスク

「検索にヒットした」という事実だけで、情報が漏れる。

給与カラムを見られない一般社員が「高給与の社員を教えて」と質問したとします。中身は返ってこなくても、「そういうデータが存在する」「どのレコードが該当するか」という事実が漏れてしまいます。

根本的な問題は、ベクトル化の時点で権限外の情報がEmbeddingに含まれていることでした。検索の後ではなく、インデックスを作る段階から設計し直す必要がありました。

「コスト度外視の力技」で乗り越える

出した答えは、ユーザー別インデックスです。

各ユーザーが「見られる項目だけ」で構成されたインデックスを個別に作成する
ユーザー インデックス内容
一般社員A 名前・年齢のみ
管理職B 名前・年齢・給与すべて

Embedding段階から機密情報が混入しないため、推論攻撃のリスクを根本から排除できます。

1,000人ユーザーいれば1,000個のインデックス。コストは正直しんどいです。でも限られた期間でセキュリティ要件を確実に満たすには、これしかなかった

次の一手:権限ハッシュ化アプローチ(検討中)

見られるカラムの組み合わせ → 正規化 → ハッシュ値を生成 → 同ハッシュ = 同インデックス共有
  • 現状:1,000ユーザー → 1,000インデックス
  • ハッシュ化後:10〜50インデックス程度に削減できる可能性

権限変更時の影響やインデックス更新の複雑さは残りますが、コストとセキュリティのバランスを取る上で最も有望なアプローチだと考えています。

その他の「現実の壁」

600TBのデータとコスト爆発

ある企業では、蓄積データが 600TB に達していました。全部ベクトル化するとEmbeddingのAPIコストだけで莫大な金額になります。さらに:

  • 全部インデックスしてから「精度が出なかった」と判明するリスク
  • ロジック変更のたびに再処理コストが発生
  • エンジニアが失敗を恐れて試行錯誤できなくなる

必要なデータだけを選別してインデックスできる仕組みが不可欠です。

検索精度の低下

古いファイル・重複ファイル・テストデータが検索結果に混入し、精度が落ちます。選択的インデックスでノイズを排除することが重要です。

また、Salesforceのオブジェクト間の参照関係をグラフRAGで持つことで、権限管理の最適化と検索精度向上を同時に狙えると考えています。

データ品質の問題

AIモデルの精度はデータの質に直結します。「レシート画像として集めたはずが、関係ない画像が混在していた」——そういうことは珍しくありません。データ整備の段階から自動化できれば、PoCの速度と精度を大きく改善できます。

まとめ

PoCを本番に持っていく力があるかどうか——それが「AI時代の開発組織のあり方」の核心だと私は思っています。

PoCで喜んでいる場合ではない。本番で動かすまでの泥臭い道を歩き切れる組織だけが、AIの恩恵を企業全体に届けられる。

今回の登壇を通じて改めて感じたのは、エンタープライズRAGには「正解がない問いに対して、制約の中でベストを選び続ける力」が求められるということです。SpiceDBを捨てたのも、ユーザー別インデックスという力技を選んだのも、完璧だったからではなく、その時点で最もまともな選択肢だったからです。

IntegratorXはまだ発展途上で、権限ハッシュ化やグラフRAGなど試したいことは山積みです。今後もこうした「本番でぶつかった話」を発信していくので、同じ課題感を持つ方と議論できたら嬉しいです。

登壇資料

おわりに

登壇機会を用意してくださったQiita運営の皆さん、会場・オンラインで聞いてくださった皆さん、ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?