Google の Project VOICE にインスパイアされた、LLM と RAG 技術を用いた入力予測アプリケーションです。
Frontend (HTML/CSS/JS)
↓ HTTP REST API
Backend (FastAPI)
├── Gemini API Client (テキスト予測)
├── RAG System (FAISS + ruri-v3-30m)
│ ├── Embedding Generation
│ └── Vector Similarity Search
└── FAISS Index Storage
RAG-InputPrediction/
├── backend/
│ ├── main.py # FastAPIメインアプリケーション
│ ├── rag_system.py # RAGシステム (FAISS + ruri-v3-30m)
│ ├── gemini_client.py # Gemini APIクライアント
│ └── requirements.txt # Python依存関係
├── frontend/
│ ├── index.html # メインHTML
│ ├── style.css # スタイルシート
│ └── app.js # フロントエンドJavaScript
├── data/
│ └── faiss_index/ # FAISSインデックス保存先
├── .env.example # 環境変数テンプレート
└── README.md # このファイル
# リポジトリのクローン (または移動)
cd RAG-InputPrediction
# Python依存関係のインストール
cd backend
pip install -r requirements.txt
注意: 初回起動時、ruri-v3-30m モデル(約150MB)が自動的にダウンロードされます。
# プロジェクトルートで .env ファイルを作成
cp .env.example .env
# .env ファイルを編集して Gemini API キーを設定
# GEMINI_API_KEY=your_actual_api_key_here
方法1: クイックスタートスクリプト使用(推奨)
./start.sh
方法2: 手動起動
# 仮想環境をアクティベート
source .venv/bin/activate
# backendディレクトリから起動
cd backend
python main.py
サーバーは http://localhost:8000 で起動します。
ブラウザで http://localhost:8000 を開きます。
POST /predictテキスト予測を実行
リクエスト:
{
"text": "今日は天気が",
"num_suggestions": 3,
"use_context": true
}
レスポンス:
{
"suggestions": ["良いですね", "悪いです", "曇りです"],
"context_used": ["昨日は天気が良かった"]
}
POST /save文章をベクトルDBに保存
リクエスト:
{
"text": "今日は天気が良いです"
}
GET /stats統計情報を取得
レスポンス:
{
"total_texts": 42,
"index_size": 42
}
GET /search?query=天気&k=5類似文章を検索
ruri-v3-30m は名古屋大学が開発した日本語特化の埋め込みモデルです:
"検索クエリ: ""検索文書: "初回起動時、ruri-v3-30m モデルのダウンロードに時間がかかる場合があります。安定したネットワーク環境で実行してください。
別のポートで起動する場合:
PORT=8080 python main.py
faiss-cpu を faiss-gpu に変更~/.cache/huggingface/ にキャッシュされますこのプロジェクトは Google の Project VOICE にインスパイアされて開発されました。
Google の Project VOICE にインスパイアされた、LLM と RAG 技術を用いた入力予測アプリケーションです。
Frontend (HTML/CSS/JS)
↓ HTTP REST API
Backend (FastAPI)
├── Gemini API Client (テキスト予測)
├── RAG System (FAISS + ruri-v3-30m)
│ ├── Embedding Generation
│ └── Vector Similarity Search
└── FAISS Index Storage
RAG-InputPrediction/
├── backend/
│ ├── main.py # FastAPIメインアプリケーション
│ ├── rag_system.py # RAGシステム (FAISS + ruri-v3-30m)
│ ├── gemini_client.py # Gemini APIクライアント
│ └── requirements.txt # Python依存関係
├── frontend/
│ ├── index.html # メインHTML
│ ├── style.css # スタイルシート
│ └── app.js # フロントエンドJavaScript
├── data/
│ └── faiss_index/ # FAISSインデックス保存先
├── .env.example # 環境変数テンプレート
└── README.md # このファイル
# リポジトリのクローン (または移動)
cd RAG-InputPrediction
# Python依存関係のインストール
cd backend
pip install -r requirements.txt
注意: 初回起動時、ruri-v3-30m モデル(約150MB)が自動的にダウンロードされます。
# プロジェクトルートで .env ファイルを作成
cp .env.example .env
# .env ファイルを編集して Gemini API キーを設定
# GEMINI_API_KEY=your_actual_api_key_here
方法1: クイックスタートスクリプト使用(推奨)
./start.sh
方法2: 手動起動
# 仮想環境をアクティベート
source .venv/bin/activate
# backendディレクトリから起動
cd backend
python main.py
サーバーは http://localhost:8000 で起動します。
ブラウザで http://localhost:8000 を開きます。
POST /predictテキスト予測を実行
リクエスト:
{
"text": "今日は天気が",
"num_suggestions": 3,
"use_context": true
}
レスポンス:
{
"suggestions": ["良いですね", "悪いです", "曇りです"],
"context_used": ["昨日は天気が良かった"]
}
POST /save文章をベクトルDBに保存
リクエスト:
{
"text": "今日は天気が良いです"
}
GET /stats統計情報を取得
レスポンス:
{
"total_texts": 42,
"index_size": 42
}
GET /search?query=天気&k=5類似文章を検索
ruri-v3-30m は名古屋大学が開発した日本語特化の埋め込みモデルです:
"検索クエリ: ""検索文書: "初回起動時、ruri-v3-30m モデルのダウンロードに時間がかかる場合があります。安定したネットワーク環境で実行してください。
別のポートで起動する場合:
PORT=8080 python main.py
faiss-cpu を faiss-gpu に変更~/.cache/huggingface/ にキャッシュされますこのプロジェクトは Google の Project VOICE にインスパイアされて開発されました。