はじめに
RAGを本番運用し始めると、こんな問題が起きます。
「PoCのときは月$20だったのに、本番に入ったら月$300になった」
原因のほとんどは、コンテキストに大量のドキュメントを詰め込んでいることです。
本記事では、RAGシステムでAPIコストが膨らむ構造的な原因と、Flatkey AIを使った実践的な対処法を解説します。
なぜRAGのAPIコストは膨らむのか
RAGの基本構造はこうです。
ユーザーの質問
↓
ベクトル検索で関連ドキュメントを取得
↓
ドキュメント + 質問をLLMに渡す
↓
回答を生成
コストが膨らむポイントは主に3つです。
① 取得ドキュメントの量が多すぎる
関連性が低いドキュメントまで上位10〜20件取得して全部渡すと、入力トークンが爆発します。
# NG: 関係ないドキュメントまで大量に渡す
docs = vectorstore.similarity_search(query, k=20)
context = "\n".join([doc.page_content for doc in docs])
# → 入力トークンが数万になることも
② チャンクサイズが大きすぎる
ドキュメントを分割するときのチャンクサイズが大きいと、1件あたりのトークン数が増えます。
③ 全リクエストに最高性能モデルを使っている
RAGの用途によって、必要な精度は違います。社内FAQ検索と高度な分析レポートに、同じモデルを使う必要はありません。
対処法1:取得件数を絞り、スコアで足切りする
# OK: 関連性スコアで足切りする
docs_with_scores = vectorstore.similarity_search_with_score(query, k=5)
threshold = 0.75
filtered_docs = [
doc for doc, score in docs_with_scores
if score >= threshold
]
context = "\n".join([doc.page_content for doc in filtered_docs])
関連性の低いドキュメントを除外するだけで、入力トークンを30〜50%削減できるケースがあります。
対処法2:タスク別にモデルを使い分ける
すべてのRAGリクエストに最高性能モデルを使う必要はありません。
from openai import OpenAI
client = OpenAI(
api_key="sk-あなたのFlatKeyキー",
base_url="https://router.flatkey.ai/v1"
)
def rag_query(question: str, context: str, task_type: str = "general"):
model_map = {
"faq": "openai/gpt-4o-mini", # 社内FAQ(軽量)
"general": "anthropic/claude-sonnet-4-5", # 一般的な質問
"analysis": "anthropic/claude-opus-4-8", # 深い分析が必要な場合
}
model = model_map.get(task_type, "anthropic/claude-sonnet-4-5")
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": f"以下のコンテキストに基づいて回答してください:\n\n{context}"
},
{
"role": "user",
"content": question
}
]
)
return response.choices[0].message.content
1本のAPIキー(Flatkey AI)で、Claude・GPT・DeepSeekをタスクに応じて使い分けられます。
対処法3:プロンプトキャッシュを活用する
固定のシステムプロンプトやドキュメントベースは、先頭に置くことでキャッシュヒット率が上がります。
Flatkey AIのClaude Officialグループでは、キャッシュ入力が $0.27/1M(通常入力の1/10)になります。
# キャッシュを意識した構造
messages = [
{
"role": "system",
# ← ここに固定コンテンツを置くとキャッシュされやすい
"content": FIXED_SYSTEM_PROMPT + FIXED_KNOWLEDGE_BASE
},
{
"role": "user",
# ← ここだけが毎回変わる
"content": f"コンテキスト:{dynamic_context}\n\n質問:{question}"
}
]
コスト削減の試算
月間10万リクエスト、平均入力2,000トークン・出力500トークンのRAGシステムの場合:
| 構成 | 月額コスト |
|---|---|
| 全リクエストにClaude Opus(公式直接) | 約$1,250 |
| タスク別モデル分散 + Flatkey AI | 約$180〜$300 |
※ タスク構成・キャッシュヒット率によって変動します。
Flatkey AIで始める
招待リンクから登録すると $10のテスト額度が追加付与されます(クレカ登録不要)。
👉 https://console.flatkey.ai/sign-up?aff=BunB
まとめ
RAGのAPIコストを削減する3つの対処法:
- 取得件数を絞り、スコアで足切りする(入力トークンを削る)
- タスク別にモデルを使い分ける(1本のKeyでClaude/GPT/DeepSeekを切り替え)
- プロンプトキャッシュを活用する(固定コンテンツをキャッシュに乗せる)
Flatkey AIを使えば、1本のAPIキーで全モデルのコストをダッシュボードで一元管理できます。