# AuraK AuraK は、マルチテナント対応のインテリジェント AI ナレッジベースプラットフォームです。React + NestJS をベースにしたフルスタックの RAG (検索拡張生成) システムで、外部 API、RBAC、テナント分離をサポートします。 ## ✨ 特徴 - 🔐 **ユーザーシステム**: ユーザー登録、ログイン、権限管理を完備 - 🤖 **マルチモデル対応**: 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 可配置使用内网镜像源 有关详细配置说明,请参阅 [内网部署指南](INTERNAL_DEPLOYMENT_GUIDE.md)。 ## 🚀 クイックスタート ### 前提条件 - Node.js 18+ - Yarn - Docker & Docker Compose ### 1. プロジェクトのクローン ```bash git clone cd simple-kb ``` ### 2. 依存関係のインストール ```bash yarn install ``` ### 3. 基本サービスの起動 ```bash docker-compose up -d elasticsearch tika libreoffice ``` ### 4. 環境変数の設定 ```bash # バックエンドの環境設定 cp server/.env.sample server/.env # server/.env ファイルを編集(APIキーなどを設定) # フロントエンドの環境設定 cp web/.env.example web/.env # web/.env ファイルを編集(必要に応じてフロントエンド設定を変更) ``` 設定の詳細については、`server/.env.sample` と `web/.env.example` ファイル内のコメントを参照してください。 ### 5. 開発サーバーの起動 ```bash yarn dev ``` にアクセスして開始してください! ## 📖 利用ガイド ### 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 設定 ``` ## 📚 ドキュメント - [システム設計ドキュメント](docs/DESIGN.md) - [現在の実装状況](docs/CURRENT_IMPLEMENTATION.md) - [API ドキュメント](docs/API.md) - [デプロイガイド](docs/DEPLOYMENT.md) - [RAG 機能の実装](docs/rag_complete_implementation.md) ## 🐳 Docker デプロイ ### 開発環境 ```bash # 基本サービスの起動 docker-compose up -d elasticsearch tika # ローカル開発 yarn dev ``` ### 本番環境 ```bash # すべてのサービスをビルドして起動 docker-compose up -d ``` ## 🤝 貢献ガイド 1. プロジェクトを Fork する 2. 機能ブランチを作成する (`git checkout -b feature/AmazingFeature`) 3. 変更をコミットする (`git commit -m 'Add some AmazingFeature'`) 4. ブランチにプッシュする (`git push origin feature/AmazingFeature`) 5. Pull Request を開く ## 📄 ライセンス このプロジェクトは MIT ライセンスの下で提供されています。詳細は [LICENSE](LICENSE) ファイルをご覧ください。 ## 🙏 謝辞 - [LangChain](https://langchain.com/) - AI アプリケーション開発フレームワーク - [NestJS](https://nestjs.com/) - Node.js バックエンドフレームワーク - [React](https://react.dev/) - フロントエンド UI フレームワーク - [Elasticsearch](https://www.elastic.co/) - 検索および分析エンジン - [Apache Tika](https://tika.apache.org/) - ドキュメント解析ツール ## 📞 サポート 質問や提案がある場合は、[Issue](../../issues) を送信するか、メンテナーに連絡してください。