cl-nagoya/ruri-v3-310m を使った日本語テキスト埋め込み (Embedding) APIサーバーです。OpenAI互換のエンドポイントを提供します。
- モデル:
cl-nagoya/ruri-v3-310m(名古屋大学が公開した日本語特化の埋め込みモデル) - フレームワーク: FastAPI + sentence-transformers
- OpenAI
/v1/embeddings互換のAPIを提供
docker compose up -d初回起動時はモデルのダウンロードが行われるため、時間がかかります。
pip install -r requirements.txt
cd app
uvicorn main:app --host 0.0.0.0 --port 8001テキストをベクトルに変換します。
リクエスト例:
curl http://localhost:8001/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"input": "日本語のテキスト"
}'複数テキストも対応:
curl http://localhost:8001/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"input": ["検索クエリ", "検索対象のドキュメント"]
}'レスポンス例:
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [0.123, -0.456, ...],
"index": 0
}
],
"model": "cl-nagoya/ruri-v3-310m",
"usage": { "prompt_tokens": 0, "total_tokens": 0 }
}利用可能なモデル一覧を返します。
curl http://localhost:8001/v1/modelsruri-v3 は用途に応じて4種類のプレフィックスを使い分ける設計ですが、本サーバーはDifyのRAG用途を想定しているため、テキスト長で自動的に 検索クエリ: / 検索文書: を判定して付与します。
| 条件 | プレフィックス |
|---|---|
| 100文字未満 | 検索クエリ: |
| 100文字以上 | 検索文書: |
RAGの典型的な使い方では、ユーザーのクエリは短く・ドキュメントのチャンクは長くなるため、この長さ判定がクエリ/文書の区別とたまたま一致しやすく、実用上は問題なく動作します。
本プロジェクトで使用している cl-nagoya/ruri-v3-310m は Apache License 2.0 で公開されています。
オンプレミス環境での利用・商用利用・改変はいずれも許可されています。モデルを再配布する場合は著作権表示と LICENSE ファイルの同梱が必要ですが、社内での利用にとどまる場合は実質的な制約はありません。
| 項目 | 内容 |
|---|---|
| 言語 | Python 3.12 |
| Webフレームワーク | FastAPI |
| 埋め込みモデル | sentence-transformers |
| モデル | cl-nagoya/ruri-v3-310m |
| ポート | 8001 |