PORTFOLIO

LINE × Dify RAG 社内PDF多言語検索ボット

LINEで質問するだけで、Google Drive内の社内PDFからRAG検索し、入力言語に合わせた回答を自動生成するチャットボット。Dify Cloud + GPT-4oによるセマンティック検索基盤。7言語自動検出対応。

CATEGORY
業務自動化
TECH STACK
Dify Cloud Express.js Google Drive API GPT-4o LINE Messaging API Next.js 15 TypeScript

プロジェクトの背景

社内PDFが散在し必要な情報を探すのに時間がかかる、多言語環境で言語の壁が情報アクセスの障害になっているという課題を解決するシステム。LINEで質問するだけで、Google Drive内のPDFからRAG検索し、入力言語に合わせた回答を自動生成する。日本語PDFに対して英語で質問しても英語で回答が返る。

課題解決プロセス

01
課題 CHALLENGE
社内PDFが複数のフォルダやドライブに散在し、必要な情報を手動で各ファイルを開いて確認する必要があった。キーワード検索では文脈を理解した回答ができず的確な情報にたどり着けなかった。また外国人スタッフが日本語PDFを理解するには翻訳ツールが必要で、言語の壁がリアルタイムな情報共有を阻害していた。さらに社内情報の漏洩防止のためのアクセス制御と運用管理機能も求められた。
02
アプローチ APPROACH
Dify CloudのRAGパイプラインでPDFをチャンク分割・ベクトル化し、セマンティック検索で質問の意図を理解。GPT-4oで社内データのみを根拠とした回答を生成(ハルシネーション抑制)。Unicode正規表現で7言語を自動検出し、検出言語で回答を生成。LINEユーザーIDによるホワイトリスト認証+承認ワークフローでセキュアなアクセス制御を実現。SQLiteベースのレート制限でMVP段階のインフラコストをゼロに。
03
成果 OUTCOME
LINE × Dify × Google Driveの3サービスを統合し、RAG検索チャットボットを構築。7言語の自動検出・多言語回答で言語の壁を解消。Google Drive自動同期でPDFの追加・更新を自動反映。ホワイトリスト+承認ワークフローでセキュアなアクセス制御。Material UIベースの管理画面5画面を構築。SQLiteベースのレート制限・会話履歴管理でMVP段階のインフラコストをゼロに。

ポイント

  • Dify RAGによるセマンティック検索: PDFをチャンク分割・ベクトル化し、キーワードではなく意味で検索。社内データのみを根拠とした回答でハルシネーションを抑制。参照元PDFリンクを付与し原典確認を容易に
  • Unicode正規表現による7言語自動検出: ひらがな/カタカナ→日本語、ハングル→韓国語、CJK→中国語、キリル→ロシア語等をUnicode範囲で判定。外部翻訳API不要、LLMのネイティブな多言語能力を活用
  • ホワイトリスト+承認ワークフロー: 未登録ユーザーのアクセスをrejected_accessテーブルに自動記録。管理画面から承認/却下を選択。CSV一括インポートにも対応
  • SQLiteベースのレート制限: 外部ライブラリ不要でWebhook 20回/分、ログイン 5回/分を実装。2分以上前のレコードを自動クリーンアップ。サーバー再起動後も状態維持
  • 3段階エラー分類: レート制限超過・Difyサービスエラー・その他を分類し、ユーザーに常に意味のあるフィードバックを提供。フォールバック連絡先を設定画面から管理可能

プロジェクト概要

社内PDFが散在し必要な情報を探すのに時間がかかる、多言語環境で言語の壁が情報アクセスの障害になっているという課題を解決するシステム。LINEで質問するだけでGoogle Drive内のPDFからRAG検索し、入力言語に合わせた回答を自動生成します。日本語PDFに対して英語で質問しても英語で回答が返ります。

主要機能

  • LINE Bot対話: テキスト質問を送信するとRAG検索結果をテキスト+該当PDFリンクで返答。直近3往復の会話履歴を保持し文脈を理解した回答
  • 多言語対応(7言語): Unicode正規表現で入力言語を自動検出(日/英/中/韓/タイ/アラビア/ロシア)。検出した言語で回答を生成
  • RAG検索(Dify): PDF文書のチャンク分割・ベクトル化・セマンティック検索。社内データのみを根拠とした回答生成(ハルシネーション抑制)
  • Google Drive連携: Google Drive APIによるPDFの自動取得。差分検知による更新ファイルの自動再取込
  • ホワイトリスト認証: LINEユーザーIDによるアクセス制御。未登録ユーザーは拒否メッセージを返却し、管理画面から承認ワークフローで対応
  • 管理画面(5画面): ダッシュボード・ホワイトリスト管理・会話履歴閲覧・PDF管理・設定
  • レート制限: SQLiteベースのレート制限(Webhook: 20回/分、ログイン: 5回/分)。外部ライブラリ不要

処理フロー

  1. ユーザーがLINEでテキスト送信
  2. LINE Webhook受信・署名検証
  3. ホワイトリスト確認(未登録なら拒否+管理画面にログ)
  4. レート制限チェック(20回/分)・言語検出(7言語)
  5. 会話履歴取得(直近3往復)→ Dify Chat API呼び出し
  6. Difyが内部でRAG検索 → GPT-4oで回答生成
  7. 回答テキスト + 参照PDFリンクをLINEに返信

システム構成

Express.jsのWebhookサーバー(LINE Bot + 管理API)、Next.js 16の管理画面(MUI v9)、Dify CloudのRAGパイプライン、Google Drive APIの4コンポーネントで構成。SQLite(WALモード)で会話履歴・ホワイトリスト・レート制限を管理。

Backend

  • Express.js 5 + TypeScript
  • LINE Bot SDK(署名検証)
  • Dify Chat / Knowledge API
  • Google Drive API
  • SQLite(WALモード)

Frontend(管理画面)

  • Next.js 16(App Router)
  • React 19
  • MUI v9(Material UI)
  • Tailwind CSS v4
  • JWT認証

技術選定の理由

  • Dify Cloud: RAGパイプラインを自前構築せず、マネージドサービスで高速にMVPを構築。本番はSelf-hosted(AWS)に移行可能
  • GPT-4o: 多言語理解と回答生成の品質が最も高い。Dify経由で利用するためAPI連携の実装コストが低い
  • Express.js: LINE Webhookの受信にはリアルタイムHTTPサーバーが最適。Next.js API Routesではコールドスタートでタイムアウトのリスク
  • LINE Messaging API: 日本企業で最も普及しているメッセージングプラットフォーム。ユーザーに新規アプリ導入を求めない
  • Google Drive API: 多くの企業で既にファイル共有基盤として利用されている。サービスアカウントでサーバーサイド連携が容易

COMPANY

会社概要

WORKS

開発事例

CONTACT

お問い合わせ