前提と設計方針
社内文書 5 万件規模の業務 RAG を、DeepSeek V3.2 を生成側に、日本語に強い埋め込みモデルを検索側に置いて構築する。要件は (1) 月額 100 万円以下、(2) Tokyo 完結、(3) 検索精度 nDCG@10 で 0.65 以上、の 3 つ。
アーキテクチャ
``` 社内ドキュメント → Unstructured → チャンク → Sarashina-Embedding 1.3B ↓ Qdrant (Tokyo VPC) ↑ ユーザー質問 → クエリ拡張 → ハイブリッド検索 (BM25 + Dense) → リランカー (bge-reranker-ja-large) → DeepSeek V3.2 (回答生成) ```
チャンク戦略
固定長 512 トークンの単純分割では文意が切れる事故が多いため、Recursive splitter で見出し・段落・文の階層を尊重しつつ、最大 800 トークン / オーバーラップ 80 トークンを採用。表は別チャンクとして markdown table のまま保持し、メタデータに `type=table` を付与する。
埋め込みモデルの選定
| モデル | 次元 | nDCG@10 (内部) | レイテンシ | | --- | --- | --- | --- | | multilingual-e5-large | 1024 | 0.61 | 速い | | Sarashina-Embedding-v1-1B | 1792 | 0.68 | 中 | | bge-m3 | 1024 | 0.63 | 速い | | OpenAI text-embedding-3-large | 3072 | 0.64 | 遅い |
社内 R&D の評価セット(業務 FAQ 1,200 ペア)では Sarashina-Embedding が最も高かった。ただし Sarashina は埋め込みのみライセンスを確認の上で利用すること。
ハイブリッド検索とリランキング
BM25(Tantivy)と Dense Retrieval の上位 50 件をマージし、bge-reranker-ja-large で 10 件に絞る。Reranker は CPU でも十分速く、社内 R&D では p95 が 220ms 程度に収まった。
生成プロンプト
```text あなたは社内 FAQ 担当です。以下の参考文書のみを根拠に回答してください。 参考文書に答えが含まれない場合は「該当する社内資料が見つかりませんでした」と答えてください。
# 参考文書 {retrieved_chunks}
# 質問 {question}
# 回答(参考文書の引用元IDを末尾に付与すること) ```
評価
- nDCG@10 / Recall@10: 検索品質
- Faithfulness(参考文書に基づくか): LLM-as-a-Judge で 5 段階評価
- Answer Relevance: 同上
- Latency p50/p95
社内 R&D の最終構成で nDCG@10 = 0.71、Faithfulness 平均 4.4/5、p95 レイテンシ 3.8 秒。
まとめ
DeepSeek V3.2 を生成側に据えた日本語 RAG は、埋め込みとリランカーの選定さえ正しく行えば、Claude / GPT-4o ベースに見劣りしない品質を月額 80-120 万円で実現できる。最大の差分は埋め込みモデルの日本語対応度なので、ここに 2 週間ほど評価工数を割く価値がある。