local-rag-server は何をしますか?
ローカルLLMを使用してPDFやDOCX文書をクエリする、マルチユーザー対応のローカルRAGシステムをデプロイします。クラウドやAPIに依存しません。
概要
このスキルは、完全にローカルで動作するRAG(検索拡張生成)システムを提供し、機密性の高い文書を安全に扱えるようにします。
主な機能
- ローカルLLMサポート: Ollamaやllama.cppなどのローカルLLMバックエンドを使用
- マルチユーザー対応: 複数のユーザーが個別の文書コレクションを管理
- 文書形式サポート: PDFおよびDOCXファイルをインデックス化
- Web UI: 直感的なインターフェースで文書のアップロードとクエリが可能
- Docker Composeデプロイ: ワンコマンドで全コンポーネントを起動
前提条件
- DockerおよびDocker Composeがインストールされていること
- ローカルLLM(例: Ollamaで
mistralモデルをプル済み)
クイックスタート
- リポジトリをクローン:
git clone https://github.com/umiii100/local-rag-server.git
cd local-rag-server
- 環境変数を設定:
cp .env.example .env
# .envファイルを編集してLLMエンドポイントなどを設定
- システムを起動:
docker-compose up -d
- Web UIにアクセス:
ブラウザで http://localhost:8000 を開きます。
設定
主要な環境変数:
| 変数名 | 説明 | デフォルト値 |
|---|---|---|
LLM_BASE_URL | ローカルLLMのベースURL | http://localhost:11434 |
LLM_MODEL | 使用するモデル名 | mistral |
VECTOR_DB_PATH | ベクトルデータベースの保存パス | ./data/vector_db |
UPLOAD_DIR | アップロード文書の保存パス | ./data/uploads |
SECRET_KEY | セッション暗号化用のシークレットキー | (必須: 独自の値を設定) |
使用方法
- Web UIにアクセスし、アカウントを作成するかログインします。
- 「文書をアップロード」セクションからPDFまたはDOCXファイルをアップロードします。
- 文書が処理され、ベクトルデータベースにインデックス化されるのを待ちます。
- チャットインターフェースで質問を入力すると、文書に基づいた回答が返ってきます。
アーキテクチャ
システムは以下のコンポーネントで構成されています:
- FastAPIバックエンド: 文書処理とRAGパイプラインを管理
- ChromaDB: ベクトルデータベースとして文書の埋め込みを保存
- Ollama: ローカルLLMの推論エンジン(別途実行が必要な場合あり)
- Reactフロントエンド: ユーザーフレンドリーなWebインターフェース
トラブルシューティング
- LLMに接続できない:
LLM_BASE_URLが正しいこと、Ollamaサービスが実行中であることを確認してください。 - 文書がインデックス化されない: ファイル形式が対応していること(PDF/DOCX)、アップロードディレクトリに書き込み権限があることを確認してください。
- パフォーマンスが遅い: 使用するLLMモデルをより軽量なものに変更するか、GPUアクセラレーションを有効にしてください。
ライセンス
MIT