> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RAG の認可

> Auth0 FGA を使用して RAG パイプラインにきめ細かなドキュメントレベルのアクセス制御を適用し、AI agent が現在のユーザーに閲覧権限のあるデータだけを取得するようにします。

[Auth0 FGA を使用した RAG の認可](https://play.vidyard.com/TCAzaPdj4SEp9yXTbgPP1W.html)

## RAG とは？

検索拡張生成 (Retrieval-Augmented Generation、RAG) は、企業の社内ナレッジベースやドキュメントリポジトリなどの外部データソースから、関連性の高い最新の情報を大規模言語モデル (LLM) に提供する仕組みです。

適切なアクセス制御がないと、RAG パイプラインが機密情報を含むドキュメント (財務報告書、人事関連文書、戦略計画など) を取得し、本来そのデータにアクセスできないはずのユーザーに向けたレスポンスの生成に使ってしまうおそれがあります。その結果、深刻なデータ侵害やコンプライアンス違反を招きかねません。実際のアプリケーションには関係性に基づく複雑な権限が存在するため、ユーザーのロールによる単純なフィルタリングだけでは管理しきれないことが少なくありません。

## RAGの認可とは？

[Auth0 Fine-Grained Authorization (FGA) ](https://auth0.com/fine-grained-authorization)は、認可ロジックをアプリケーションコードから切り離すことで、RAGパイプラインにリレーションシップベースのアクセス制御 (ReBAC) を実装します。複雑な権限ルールをアプリケーションに直接組み込むのではなく、認可モデルを定義し、リレーションシップデータをAuth0 FGAに保存します。これにより、アプリケーションはランタイムにAuth0 FGAへ問い合わせ、アクセス可否をリアルタイムで判断できるようになります。

## 仕組み

Auth0 FGAをRAGパイプラインに統合すると、各ドキュメントはLLMに渡される前に、ユーザーの権限に基づいてチェックされます。

![RAGの認可](https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/ai/how_it_works_with_rag_diagram_light.png)

Auth0 FGAのフローは、次の手順で構成されます。

**1. 認可モデル**

まず、Auth0 FGAで認可モデルを定義します。このモデルでは、
オブジェクトの種類 (例：`document`) 、ユーザーとオブジェクトの間に
成り立ちうる関係 (例：`owner`、`editor`、`viewer`) 、
そしてアクセスを制御するルールを指定します。

**2. 関係の保存**

権限はAuth0 FGAに「タプル」として保存します。タプルは中核となるデータ
要素で、`(user,
                relation, object)`の形式で特定の関係を表します。たとえば、「`user:anne`は
`document:2024-financials`の`viewer`である」といった関係です。

**3. 取得とフィルタリング**

ユーザーがAI agentにクエリを送信すると、バックエンドはまずベクトルデータベースから
関連するドキュメントを取得し、続いてAuth0 FGAを呼び出して権限を
チェックします。この呼び出しでは、「このユーザーはこれらのドキュメントを
閲覧できるか」を問い合わせます。当社のAIフレームワークSDKはこの処理を抽象化しているため、
リトリーバーツールにフィルターを組み込むだけで簡単に実装できます。

**4. 安全な取得**

Auth0 FGAは、ユーザーにドキュメントへのアクセスが認可されているかどうかを判断します。
アプリケーションのバックエンドはその結果を使ってベクトルデータベースからの
検索結果をフィルタリングし、認可されたドキュメントのみをLLMに送信します。

## はじめに

AI agentでAuth0 FGAを使い始めるには、以下のリソースを参照してください。

### クイックスタート

> **[RAGの認可](/ai/docs/ja-jp/get-started/authorization-for-rag)**

> **[Auth0 FGAを始める](https://docs.fga.dev/getting-started)**

### サンプルアプリ

> **[Assistant0: Next.js + Vercel AI SDK](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-vercel-ai)**

> **[Assistant0: Next.js + LangGraph](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-langchain)**

> **[Assistant0: FastAPI + LangGraph](https://github.com/auth0-samples/auth0-assistant0/tree/main/py-langchain)**

> **[Assistant0: Next.js + LlamaIndex](https://github.com/auth0-samples/auth0-assistant0/tree/main/ts-llamaindex)**

> **[Assistant0: FastAPI + LlamaIndex](https://github.com/auth0-samples/auth0-assistant0/tree/main/py-llamaindex)**

> **[SmartHR Assistant: Next.js + LangChain](https://github.com/auth0-samples/auth0-ai-smart-hr-assistant)**

> **[AIサンプル：各種フレームワーク](https://github.com/auth0-samples/auth0-ai-samples/tree/main/authorization-for-rag)**

> **[Auth0 AI SDK TypeScriptサンプル](https://github.com/auth0/auth0-ai-js/tree/main/examples/authorization-for-rag)**

> **[Auth0 AI SDK Pythonサンプル](https://github.com/auth0/auth0-ai-python/tree/main/examples/authorization-for-rag)**

### さらに詳しく

> **[Auth0 FGA ドキュメント](https://docs.fga.dev/)**

> **[OpenFGA ドキュメント](https://openfga.dev/)**
