ワークフローAI自動化の例:
Google ドライブとGemini(n8n)を使用した会社文書のためのRAGチャットボット
1. ワークフローの概要
このワークフローは、専用のGoogleドライブフォルダーに保存された会社の文書に基づいて従業員の質問に答えるために設計された再取得拡張生成(RAG)チャットボットを実装しています。新しいまたは更新された文書を自動的にPineconeベクトルデータベースにインデックス化し、チャットボットが関連情報を取得してGoogleのGemini AIモデルを使用して正確で文脈に対応した回答を生成することを可能にします。
ワークフローは、論理的に2つの主要な機能ブロックに分かれています。
1.1 文書インデックス化ブロック
特定のGoogleドライブフォルダーの新規または更新されたファイルを監視し、これらの文書をダウンロードし、管理可能なチャンクに分割してその内容を処理し、Google Geminiを使用して埋め込みを生成し、これらの埋め込みをPineconeベクトルストアにインデックス化します。
1.2 チャットインタラクションブロック
チャットインターフェースを通じてユーザーからの質問を処理し、ベクトル類似検索を使用してPineconeから関連する文書チャンクを取得し、Google Geminiチャットモデルで包括的な回答を生成します。また、文脈に対応したインタラクションのための短期的な会話メモリを維持します。
2. ブロックごとの分析
2.1 文書インデックス化ブロック
概要:
このブロックは、Googleドライブに保存された会社の文書の取り込みおよびインデックス化を自動化します。ファイルの作成または更新時にトリガーされ、ファイルをダウンロードし、その内容を抽出して分割し、埋め込みを生成し、それらをPineconeベクトルデータベースに挿入します。
関与するノード:
Googleドライブファイルの作成
Googleドライブファイルの更新
Googleドライブからのファイルのダウンロード
再帰的文字テキスト分割ツール
デフォルトデータローダー
埋め込みGoogle Gemini
Pineconeベクトルストア
付箋(文書インデックス化のコメント)
ノードの詳細:
Googleドライブファイルの作成
タイプ: トリガーノード
役割: 特定のGoogleドライブフォルダーに新しく追加されたファイルを検出する
構成: 毎分ポーリングでフォルダーIDによって指定されたフォルダーをウォッチ
入力: なし(トリガー)
出力: ファイルメタデータ(ファイルIDと名前を含む)
障害モード: API レート制限、フォルダーパーミッションエラー
備考: Google Drive OAuth2認証情報が必要です
Googleドライブファイルの更新
タイプ: トリガーノード
役割: 同じGoogleドライブフォルダーでのファイル更新を検出する
構成: 毎分ポーリングで上記と同じフォルダーを監視
入力: なし(トリガー)
出力: 更新されたファイルのメタデータ
障害モード: 上記と同じ
Googleドライブからのファイルのダウンロード
タイプ: Googleドライブノード
役割: 処理のために検出されたファイルコンテンツをダウンロードする
構成: トリガーノードからのファイルIDと名前を使用してファイルバイナリをダウンロード
入力: トリガーからファイルメタデータ
出力: バイナリファイルデータ
障害モード: ファイルアクセスエラー、ダウンロードタイムアウト、大きなファイル処理問題
資格情報: Google Drive OAuth2
再帰的文字テキスト分割ツール
タイプ: テキスト分割ノード
役割: 埋め込みのために文書内容を小さなオーバーラップチャンクに分割する
構成: チャンクオーバーラップは100文字に設定され、デフォルトのチャンクサイズ(再帰的分割)
入力: デフォルトデータローダーによってバイナリからテキストに変換された文書テキスト
出力: テキストチャンクの配列
障害モード: 不適切なテキスト抽出、エンコーディング問題
デフォルトデータローダー
タイプ: ドキュメントローダーノード
役割: バイナリファイルデータを更なる処理のためのテキストドキュメントに変換する
構成: 特定のバイナリフィールドからデータをロード
入力: Googleドライブダウンロードからのバイナリファイルデータ
出力: テキストドキュメント
障害モード: サポートされていないファイルフォーマット、破損したファイル
埋め込みGoogle Gemini
タイプ: 埋め込み生成ノード
役割: Google Geminiのtext-embedding-004モデルを使用して各テキストチャンクのベクトル埋め込みを生成する
構成: モデルは「models/text-embedding-004」に設定
入力: 分割機からのテキストチャンク
出力: 埋め込みベクトル
障害モード: APIクォータ制限、ネットワークエラー、無効な入力テキスト
資格情報: Google Gemini (PaLM) APIキー
Pineconeベクトルストア
タイプ: ベクトルストアノード
役割: 「company-files」という名前のPineconeインデックスに埋め込みと関連するテキストチャンクを挿入する
構成: モードは「挿入」に設定
入力: 埋め込みとデフォルトデータローダーおよび埋め込みGoogle Geminiからの文書
出力: 挿入の確認
障害モード: Pinecone APIエラー、インデックスの誤設定、ネットワーク問題
資格情報: Pinecone APIキー
付箋(ドキュメントをベクトルストアに追加)
役割: インデックス化プロセスに関する説明的なコメントを提供する
内容: 「Googleドライブでドキュメントを更新または新規作成時にベクトルストアにドキュメントを追加」
2.2 チャットインタラクションブロック
概要:
このブロックは、チャットインターフェースを通じてユーザーからのクエリを処理し、ベクトル類似検索を使用してPineconeから関連する文書チャンクを取得し、Google Geminiチャットモデルを使用して回答を生成します。また、文脈に対応した会話を可能にするための短期メモリも維持します。
関与するノード:
チャットメッセージを受信した際
AIエージェント
ベクトルストアツール
Pineconeベクトルストア(リトリーバル)
埋め込みGoogle Gemini(リトリーバル)
Google Geminiチャットモデル(リトリーバル)
ウィンドウバッファーメモリ
付箋(会社の文書でチャット)
ノードの詳細:
チャットメッセージを受信した際
タイプ: チャットトリガーノード
役割: Webhookを介してユーザーチャットメッセージを受信する
構成: Webhook ID構成済み、追加のオプションは不要
入力: 外部チャットメッセージ
出力: ユーザーの質問テキスト
障害モード: Webhook接続問題、不正な入力
AIエージェント
タイプ: エージェントノード
役割: ツールと言語モデルを使用して質問応答プロセスを調整する
構成:
システムメッセージは、アシスタントが会社ポリシーに基づいて各質問に答える役割を定義する
「company_documents_tool」というツール(ベクトルストアツール)を使用して文書情報を取得します
入力: チャットトリガーからのユーザー質問
出力: 生成された回答
障害モード: ツール呼び出しエラー、モデル応答エラー、メモリ処理問題
バージョン: 1.7
ベクトルストアツール
タイプ: ツールノード
役割: Pineconeベクトルストアへのアクセスを提供して文書を取得する
構成: 「company_documents_tool」と名前を付け、会社の文書情報を取得するための説明を提供
入力: AIエージェントからのクエリエンベッディング
出力: 取得された関連するドキュメントチャンク
障害モード: Pineconeクエリエラー、埋め込みの不一致
Pineconeベクトルストア(リトリーバル)
タイプ: ベクトルストアノード
役割: 埋め込みに基づいて関連する文書チャンクを取得するために「company-files」という名前のPineconeインデックスをクエリする
構成: インデックス化ノードと同じPineconeインデックスを使用
入力: 埋め込みGoogle Gemini(リトリーバル)からの埋め込み
出力: ベクトルストアツール用に取得された文書
障害モード: クエリタイムアウト、インデックスの利用不可
資格情報: Pinecone APIキー
埋め込みGoogle Gemini(リトリーバル)
タイプ: 埋め込み生成ノード
役割: 同じtext-embedding-004モデルを使用してユーザーの質問の埋め込みを生成する
入力: ユーザー質問テキスト
出力: Pineconeリトリーバル用クエリエンベッディング
障害モード: API エラー、無効な入力
資格情報: Google Gemini (PaLM) APIキー
Google Geminiチャットモデル(リトリーバル)
タイプ: 言語モデルノード
役割: 取得された文書とユーザークエリに基づいて「gemini-2.0-flash-exp」チャットモデルを使用して最終的な回答を生成する
入力: AIエージェントとベクトルストアツールからの文脈と質問
出力: チャットボットの回答
障害モード: APIクォータ、応答遅延
資格情報: Google Gemini (PaLM) APIキー
ウィンドウバッファーメモリ
タイプ: メモリノード
役割: 短期的な会話メモリを維持し、文脈に対応した回答を提供する
入力: AIエージェントからの会話履歴
出力: AIエージェント用の更新されたメモリ状態
障害モード: メモリオーバーフロー、データ破損
付箋(会社の文書でチャット)
役割: チャットインタラクションブロックを説明
内容: 「会社の文書でチャット」
3. サマリーテーブル
ノード名ノードタイプ機能的役割入力ノード出力ノード付箋Googleドライブファイルの作成GoogleドライブトリガーGoogleドライブフォルダーで新しいファイルを検出するなしGoogleドライブからのファイルのダウンロードGoogleドライブファイルの更新GoogleドライブトリガーGoogleドライブフォルダーで更新されたファイルを検出するなしGoogleドライブからのファイルのダウンロードGoogleドライブからのファイルのダウンロードGoogleドライブファイルのバイナリコンテンツをダウンロードするGoogleドライブファイルの作成、更新Pineconeベクトルストア再帰的文字テキスト分割ツールテキスト分割テキストをチャンクに分割するデフォルトデータローダーデフォルトデータローダーデフォルトデータローダードキュメントローダーバイナリファイルをテキストドキュメントに変換する再帰的文字テキスト分割ツールPineconeベクトルストア埋め込みGoogle Gemini埋め込みジェネレーターテキストチャンク用に埋め込みを生成するデフォルトデータローダーPineconeベクトルストアPineconeベクトルストアベクトルストアPineconeインデックスに埋め込みを挿入する埋め込みGoogle GeminiなしGoogleドライブファイルの作成Googleドライブトリガー新しいファイルを検出するなしGoogleドライブからのファイルのダウンロードGoogleドライブファイルの更新Googleドライブトリガー更新されたファイルを検出するなしGoogleドライブからのファイルのダウンロード付箋付箋インデックス化プロセスのコメントなしなし「Googleドライブでドキュメントを更新または新規作成時にベクトルストアにドキュメントを追加」チャットメッセージ受信時チャットトリガーユーザーチャットメッセージを受信するなしAIエージェントAIエージェントエージェント質問応答を調整するチャットメッセージ受信時なしベクトルストアツールツール(ベクトルストア)関連する文書チャンクを取得するPineconeベクトルストア(リトリーバル)AIエージェントPineconeベクトルストア(リトリーバル)ベクトルストア関連するチャンクをPineconeインデックスにクエリする埋め込みGoogle Gemini(リトリーバル)ベクトルストアツール埋め込みGoogle Gemini(リトリーバル)埋め込みジェネレータークエリ用に埋め込みを生成するチャットメッセージ受信時Pineconeベクトルストア(リトリーバル)Google Geminiチャットモデル(リトリーバル)言語モデル取得された文書に基づいて回答を生成するベクトルストアツールなしウィンドウバッファーメモリメモリバッファ短期的な会話メモリを維持するAIエージェントAIエージェント付箋2付箋チャットインタラクションブロックのコメントなしなし「会社の文書とチャット」付箋1付箋セットアップ手順と前提条件なしなし5節に詳細内容を参照
4. ワークフローを最初から再現する
Googleドライブトリガーの作成
次の2つのGoogleドライブトリガーノードを追加する:
特定のGoogleドライブフォルダーをフォルダーIDで監視する
fileCreated
イベント用に構成されているもの同じフォルダーを監視する
fileUpdated
イベント用に構成されているもの
ポーリング間隔を毎分に設定します。
Google Drive OAuth2認証情報を割り当てます。
ファイルダウンロードノード
Googleドライブノードを追加して、
ダウンロード
操作を構成します。トリガーノード出力(
{{$json.id}}
)からfileId
を設定するための式を使用します。トリガーからのファイル名を
fileName
オプションに設定します。両方のGoogleドライブトリガーノードをこのノードに接続します。
Google Drive OAuth2認証情報を割り当てます。
再帰的文字テキスト分割ツール
再帰的文字テキスト分割ツールノードを追加します。
チャンク重複を100文字に設定します(デフォルトのチャンクサイズ)。
デフォルトデータローダーノードの出力をこのノードに接続します(次のステップを参照)。
デフォルトデータローダー
デフォルトデータローダーノードを追加します。
ダウンロードされたファイルを含むバイナリフィールドからデータをロードするように構成します。
ファイルダウンロードノードの出力をこのノードに接続します。
再帰的文字テキスト分割ツールノードの出力をこのノードに接続します。
埋め込みGoogle Gemini(インデックス化)
埋め込みGoogle Geminiノードを追加します。
モデルを
models/text-embedding-004
に設定します。デフォルトデータローダーの出力(テキストチャンク)をこのノードに接続します。
Google Gemini (PaLM) API認証情報を割り当てます。
Pineconeベクトルストア(挿入モード)
Pineconeベクトルストアノードを追加します。
モードを
挿入
に設定します。「company-files」という名前のPineconeインデックスを選択します。
埋め込みGoogle Geminiノードの出力をこのノードに接続します。
Pinecone API認証情報を割り当てます。
チャットトリガーノード
チャットトリガーノードを追加します。
Webhook IDを構成します(自動生成またはカスタム)。
特別なオプションは必要ありません。
AIエージェントノード
AIエージェントノードを追加します。
システムメッセージを構成して、アシスタントの役割と「company_documents_tool」というツールの使用を定義します。
チャットトリガーノードの出力をAIエージェントの入力に接続します。
ウィンドウバッファーメモリノードをAIエージェントに接続してメモリ管理を行います。
ベクトルストアツールノード
ベクトルストアツールノードを追加します。
company_documents_tool
という名前を付けます。会社の文書から情報を取得することを説明する説明を提供します。
Pineconeベクトルストア(リトリーバル)ノードの出力をこのノードに接続します。
このツールノードをAIエージェントのツール入力に接続します。
埋め込みGoogle Gemini(リトリーバル)
クエリエンベッディング生成用にもう1つの埋め込みGoogle Geminiノードを追加します。
同じモデル
models/text-embedding-004
を使用します。チャットトリガーノードの出力(ユーザーの質問)をこのノードに接続します。
Google Gemini API認証情報を割り当てます。
Pineconeベクトルストア(リトリーバルモード)
リトリーバル/クエリモードに設定されたPineconeベクトルストアノードを追加します。
同じ
company-files
インデックスを選択します。埋め込みGoogle Gemini (リトリーバル)の出力をこのノードに接続します。
Pinecone API認証情報を割り当てます。
Google Geminiチャットモデル(リトリーバル)
Google Geminiチャットモデルノードを追加します。
モデルを
models/gemini-2.0-flash-exp
に設定します。ベクトルストアツールの出力をこのノードに接続します。
Google Gemini API認証情報を割り当てます。
ウィンドウバッファーメモリ
ウィンドウバッファーメモリノードを追加します。
それをAIエージェントノードのメモリ入力と出力に接続して会話のコンテキストを維持します。
出力の接続
AIエージェントの出力をチャット応答の出力に接続します(例: Webhook応答)。
すべてのノードが論理フローに従って正しく接続されていることを確認します。
資格情報の設定
資格情報を構成して割り当てます:
Google Drive OAuth2 API
Google Gemini (PaLM) APIキー
Pinecone APIキー
フォルダーとインデックスの構成
Googleドライブトリガーノードを更新して、会社の文書用の専用フォルダーを監視します。
Pineconeベクトルストアノードを
company-files
インデックスを使用するように構成します。
5. 一般ノート&リソース
ノート内容コンテキストまたはリンクセットアップ手順には、Google Cloudプロジェクトの作成、Vertex AI APIの有効化、Google AI APIキーの取得、Pineconeアカウントとインデックスが含まれます。 ワークフローでは、Google Gemini AIモデルを使用して埋め込み(text-embedding-004
)とチャット生成(gemini-2.0-flash-exp
)が行われます。Google Gemini (PaLM) APIの資格情報が必要です。Pineconeインデックスcompany-files
をワークフローの使用前に作成して構成する必要があります。Pineconeダッシュボード: https://app.pinecone.io/会社用文書専用のGoogleドライブフォルダーは、OAuth2資格情報によってアクセス可能でなければなりません。GoogleドライブフォルダーのURL例:https://drive.google.com/drive/folders/1evDIoHePhjw_LgVFZXSZyK1sZm2GHp9W 。 AIエージェントは、チャットインタラクション中にPineconeから関連するドキュメントチャンクを取得するために「company_documents_tool」というツールを使用します。 ウィンドウバッファーメモリノードは、より自然な会話を可能にする短期メモリを提供します。