コンテンツにスキップ

アーキテクチャ概要

システム構成

┌─────────────────────────────────────────────────────────────────┐
│                        ユーザー                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                   Static Web App                                 │
│                   (React + Vite)                                 │
│   - チャットUI                                                   │
│   - PDF ビューワー                                               │
│   - 履歴管理                                                     │
│   - 認証UI                                                       │
└─────────────────────────────────────────────────────────────────┘
                              │ HTTPS
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                   Azure Functions                                │
│                   (Python 3.9)                                   │
│                                                                  │
│   /api/search       → 検索API                                   │
│   /api/summarize    → 要約生成API                               │
│   /api/direct-answer → 直接回答API                              │
│   /api/reference    → 参照取得API                               │
│   /api/auth/*       → 認証API                                   │
│   /api/manage/*     → 管理API                                   │
└─────────────────────────────────────────────────────────────────┘
           │                    │                    │
           ▼                    ▼                    ▼
┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐
│  Azure AI Search │  │   Azure OpenAI   │  │  Table Storage   │
│                  │  │                  │  │                  │
│ - ベクトル検索   │  │ - GPT-4o         │  │ - ユーザー管理   │
│ - ハイブリッド検索│  │ - Embeddings     │  │                  │
└──────────────────┘  └──────────────────┘  └──────────────────┘
           │
           ▼
┌──────────────────┐
│  Blob Storage    │
│                  │
│ - PDF ドキュメント│
│ - チャンクデータ │
└──────────────────┘

技術スタック

フロントエンド

技術 バージョン 用途
React 18.x UIフレームワーク
TypeScript 5.x 型安全性
Vite 5.x ビルドツール
Tailwind CSS 3.x スタイリング

バックエンド

技術 バージョン 用途
Python 3.9 ランタイム
Azure Functions v4 サーバーレス実行環境
OpenAI SDK 1.x Azure OpenAI連携
PyJWT 2.x JWT認証
bcrypt 4.x パスワードハッシュ

Azure サービス

サービス 用途
Azure Static Web Apps フロントエンドホスティング
Azure Functions バックエンドAPI
Azure AI Search ベクトル検索
Azure OpenAI LLM(GPT-4o)、Embedding
Azure Blob Storage ドキュメント保存
Azure Table Storage ユーザーデータ
Azure Key Vault シークレット管理
Application Insights 監視・ログ

データフロー

質問→回答フロー

1. ユーザーが質問を入力
       │
       ▼
2. /api/search でドキュメント検索
   - Azure AI Search でハイブリッド検索
   - 関連チャンクを取得
       │
       ▼
3. /api/direct-answer または /api/summarize で回答生成
   - GPT-4o にコンテキストと質問を送信
   - 引用情報付きの回答を生成
       │
       ▼
4. フロントエンドで回答表示
   - Markdown レンダリング
   - 引用リンク表示

引用スコアリング

検索結果から最適な引用を選択:

1. 規程本文(第○条)を優先 → +100点
2. 手続き書類にペナルティ  → -80点
3. トピック関連キーワード  → +15点/各

ディレクトリ構成

KnowledgeYardV2/
├── app/
│   ├── api/                    # バックエンド(Azure Functions)
│   │   ├── routes/             # APIエンドポイント
│   │   │   ├── auth.py         # 認証API
│   │   │   ├── admin.py        # 管理API
│   │   │   ├── search.py       # 検索API
│   │   │   ├── summarize.py    # 要約API
│   │   │   ├── direct_answer.py # 直接回答API
│   │   │   └── reference.py    # 参照API
│   │   ├── services/           # ビジネスロジック
│   │   │   ├── auth.py         # 認証サービス
│   │   │   └── table_storage.py # Table Storage操作
│   │   ├── prompts/            # プロンプトテンプレート
│   │   └── function_app.py     # エントリポイント
│   │
│   └── web/                    # フロントエンド(React)
│       ├── src/
│       │   ├── components/     # Reactコンポーネント
│       │   ├── lib/            # ユーティリティ
│       │   └── App.tsx         # メインアプリ
│       └── vite.config.ts
│
├── data/                       # データファイル
│   ├── source_pdfs/            # 元PDF
│   └── chunks_v4.jsonl         # チャンクデータ
│
├── ingest/                     # データ取り込み
├── search/                     # 検索クライアント
├── scripts/                    # 運用スクリプト
├── docs/                       # ドキュメント
└── .env                        # 環境変数

関連ドキュメント