指定したGitHubリポジトリのコードベース全体を取り込み、自然言語で仕様やロジックについて質問できるRAG(Retrieval-Augmented Generation)アプリケーションです。
ユーザーはリポジトリのURLを入力するだけで、そのコードベースに関する質問(例:「XXX 関数の役割は?」)をチャット形式で行うことができます。
https://github-repo-rag-git-main-ku6kaws-projects.vercel.app/
- リポジトリの取り込み (Ingestion): GitHub URLを指定すると、バックエンドがリポジトリをクローンし、コードファイル(
.py,.mdなど)を解析・チャンク化してベクトルDBに保存します。 - コードベースとの対話 (Q&A): RAGパイプライン(LlamaIndex)を通じて、取り込まれたリポジトリの内容に基づいた回答をLLM(OpenAI)が生成します。
| コンポーネント | 技術 |
|---|---|
| フロントエンド | Next.js (TypeScript, React), Tailwind CSS |
| バックエンド (API) | FastAPI (Python) |
| RAGフレームワーク | LlamaIndex |
| ベクトルDB | Qdrant (Cloud / Docker) |
| LLM & Embedding | OpenAI (GPT-4o, text-embedding-3-small) |
| デプロイ (F/E) | Vercel |
| デプロイ (B/E) | Docker + Google Cloud Run |
| その他 | uv (Python環境), Google Artifact Registry |
- Docker Desktop
- Node.js (v18+)
- uv (Pythonパッケージ管理)
- OpenAI APIキー
- (オプション) Google Cloud SDK (gcloud)
A. リポジトリのクローン
git clone [https://github.com/](https://github.com/)[YOUR_USERNAME]/[YOUR_REPO_NAME]
cd [YOUR_REPO_NAME]B. 環境変数の設定
- バックエンド用:
fastapi-backend/に.envファイルを作成します。# fastapi-backend/.env OPENAI_API_KEY="sk-..." # ローカル開発時は以下をコメントアウト(または空)にしてローカルDBを参照 # QDRANT_URL="" # QDRANT_API_KEY=""
- フロントエンド用:
frontend/に.env.localファイルを作成します。# frontend/.env.local NEXT_PUBLIC_API_URL=http://localhost:8000
C. ライブラリのインストール
- バックエンド (Python)
cd fastapi-backend # 仮想環境の作成 uv venv source .venv/bin/activate # 依存ライブラリのインストール uv pip install -r requirements.txt
- フロントエンド (Node.js)
cd ../frontend npm install
ターミナルを3つ開いて実行します。
ターミナル 1: データベース (Qdrant) 🗄️ (プロジェクトのルートで実行)
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage \
qdrant/qdrantターミナル 2: バックエンド (FastAPI) 🚀
cd fastapi-backend
source .venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reloadターミナル 3: フロントエンド (Next.js) 🖥️
cd frontend
npm run devブラウザで http://localhost:3000 にアクセスします。
このアプリケーションは、以下のサービスにデプロイされています。
- Qdrant Cloud で無料枠のクラスターを作成。
- 取得した
QDRANT_URLとQDRANT_API_KEYをバックエンドの環境変数として設定。
fastapi-backend/内のDockerfileを使用してコンテナイメージをビルド。- Google Artifact Registry にイメージをプッシュ。
# ビルド docker build -t [IMAGE_NAME] . # プッシュ docker push [IMAGE_NAME]
- Cloud Run にデプロイ。
gitのインストールに失敗する場合はDockerfileを、メモリ不足の場合は--memoryオプションを調整してください。gcloud run deploy rag-api-backend \ --image=[IMAGE_NAME] \ --platform=managed \ --region=asia-northeast1 \ --allow-unauthenticated \ --port=8080 \ --memory=512Mi \ --set-env-vars=^::^OPENAI_API_KEY=...::QDRANT_URL=...::QDRANT_API_KEY=...
- このリポジトリをVercelにインポート。
- Root Directory を
frontendに設定。 - Environment Variables に
NEXT_PUBLIC_API_URL(Cloud RunのURL)を設定。 - 「Deploy」を実行。
This project is licensed under the MIT License - see the LICENSE file for details.
