簡易ナレッジベース (Simple Knowledge Base)
React + NestJS をベースにしたフルスタックのナレッジベースQ&Aシステムです。マルチモデル、多言語対応の RAG (検索拡張生成) 機能を備えています。
✨ 特徴
- 🔐 ユーザーシステム: ユーザー登録、ログイン、権限管理を完備
- 🤖 マルチモデル対応: OpenAI 互換インターフェース + Google Gemini ネイティブサポート
- 📚 インテリジェント・ナレッジベース: ドキュメントのアップロード、チャンク分割、ベクトル化、ハイブリッド検索
- 💬 ストリーミング会話: 処理状況と生成内容をリアルタイムに表示
- 🔍 引用追跡: 回答の根拠となるドキュメントのソースと関連セグメントを明確に表示
- 🌍 多言語対応: 日本語、中国語、英語のインターフェースおよびAI回答に対応
- 👁️ ビジョン機能: 画像処理をサポートするマルチモーダルモデルに対応
- ⚙️ 柔軟な設定: ユーザー独自のAPIキーと推論パラメータのカスタマイズが可能
- 🎯 デュアルモード処理: 高速モード (Tika) + 高精度モード (Vision Pipeline)
- 💰 コスト管理: ユーザーの利用枠(クォータ)管理とコスト見積もり
🏗️ 技術スタック
フロントエンド
- フレームワーク: React 19 + TypeScript + Vite
- スタイリング: Tailwind CSS
- アイコン: Lucide React
- 状態管理: React Context
バックエンド
- フレームワーク: NestJS + TypeScript
- AI フレームワーク: LangChain
- データベース: SQLite (メタデータ) + Elasticsearch (ベクトルストレージ)
- ファイル処理: Apache Tika + Vision Pipeline
- 認証: JWT
- ドキュメント変換: LibreOffice + ImageMagick
🏢 内网部署
本系统支持在内网环境中部署。主要修改包括:
- 外部资源: 已将 KaTeX CSS 从外部 CDN 移至本地资源
- AI模型: 支持配置内网AI模型服务,无需访问外部API
- 构建配置: Dockerfiles 可配置使用内网镜像源
有关详细配置说明,请参阅 内网部署指南。
🚀 クイックスタート
前提条件
- Node.js 18+
- Yarn
- Docker & Docker Compose
1. プロジェクトのクローン
git clone <repository-url>
cd simple-kb
2. 依存関係のインストール
yarn install
3. 基本サービスの起動
docker-compose up -d elasticsearch tika libreoffice
4. 環境変数の設定
# バックエンドの環境設定
cp server/.env.sample server/.env
# server/.env ファイルを編集(APIキーなどを設定)
# フロントエンドの環境設定
cp web/.env.example web/.env
# web/.env ファイルを編集(必要に応じてフロントエンド設定を変更)
設定の詳細については、server/.env.sample と web/.env.example ファイル内のコメントを参照してください。
5. 開発サーバーの起動
yarn dev
http://localhost:5173 にアクセスして開始してください!
📖 利用ガイド
1. ユーザー登録/ログイン
- 初回利用時はアカウント登録が必要です。
- 各ユーザーは独立したナレッジベースとモデル設定を持ちます。
2. AIモデルの設定
- 「モデル管理」からAIモデルを追加します。
- OpenAI、DeepSeek、Claude などの互換インターフェースをサポートしています。
- Google Gemini ネイティブインターフェースをサポートしています。
- LLM、Embedding、Rerank モデルを設定可能です。
3. ドキュメントのアップロード
- PDF, Word, PPT, Excel など、多様なフォーマットに対応しています。
- 高速モード (テキストのみ) または高精度モード (画像・テキスト混合) を選択可能です。
- ドキュメントのチャンクサイズとオーバーラップを調整可能です。
- ベクトル化に使用する Embedding モデルを選択します。
4. インテリジェントQ&Aの開始
- アップロードしたドキュメントに基づいて質問応答を行います。
- 検索と生成のプロセスをリアルタイムで確認できます。
- 回答の出典や関連ドキュメントの断片を確認できます。
🔧 設定の説明
モデル設定
- LLM モデル: 対話生成に使用 (例: GPT-4, Gemini-1.5-Pro)
- Embedding モデル: ドキュメントのベクトル化に使用 (例: text-embedding-3-small)
- Rerank モデル: 検索結果の再ランキングに使用 (オプション)
推論パラメータ
- Temperature: 回答のランダム性を制御 (0-1)
- Max Tokens: 最大出力長
- Top K: 検索するドキュメントセグメントの数
- 類似度しきい値: 低い関連性のコンテンツをフィルタリング
📁 プロジェクト構造
simple-kb/
├── web/ # フロントエンド・アプリケーション
│ ├── components/ # React コンポーネント
│ ├── services/ # API サービス
│ ├── contexts/ # React Context
│ └── utils/ # ユーティリティ関数
├── server/ # バックエンド・アプリケーション
│ ├── src/
│ │ ├── auth/ # 認証モジュール
│ │ ├── chat/ # チャットモジュール
│ │ ├── knowledge-base/ # ナレッジベースモジュール
│ │ ├── model-config/ # モデル設定モジュール
│ │ └── user/ # ユーザーモジュール
│ └── data/ # データストレージ
├── docs/ # プロジェクトドキュメント
└── docker-compose.yml # Docker 設定
📚 ドキュメント
🐳 Docker デプロイ
開発環境
# 基本サービスの起動
docker-compose up -d elasticsearch tika
# ローカル開発
yarn dev
本番環境
# すべてのサービスをビルドして起動
docker-compose up -d
🤝 貢献ガイド
- プロジェクトを Fork する
- 機能ブランチを作成する (
git checkout -b feature/AmazingFeature)
- 変更をコミットする (
git commit -m 'Add some AmazingFeature')
- ブランチにプッシュする (
git push origin feature/AmazingFeature)
- Pull Request を開く
📄 ライセンス
このプロジェクトは MIT ライセンスの下で提供されています。詳細は LICENSE ファイルをご覧ください。
🙏 謝辞
📞 サポート
質問や提案がある場合は、Issue を送信するか、メンテナーに連絡してください。