Craft RAG の Rerank
Craft RAGでは、ベクトル検索で取得したチャンクの並び順を Rerank で付け替えできます。llmRankerModel(LLMによるRerank)と rankServiceModel(ランキング専用モデルによるRerank)のどちらか一方を指定します。
| 方式 | 指定パラメータ | レイテンシ | コスト |
|---|---|---|---|
| LLM による Rerank | llmRankerModel | 高め | モデルに応じて変動 |
| ランキング専用モデルによる Rerank | rankServiceModel | 低め | クエリ単位 |
一般的に、LLMによるRerankは文脈や意図の理解に強く、ランキング専用モデルによるRerankは高速で大量のチャンクを安定して並び替えやすい傾向があります。
どちらが適しているかは、データやクエリの内容によって異なるため、実際の利用ケースで両方を試して選択してください。
利用できるモデルについては、Craft RAG で利用できるモデル一覧をご確認ください。
コスト
Rerankのコストは、指定する方式によって異なります。LLMによるRerankは、テキスト生成と同様にGeminiのAIトークンに準じます。ランキング専用モデルによるRerankは、クエリ単位の固定レートです。
回答生成とRerankを併用する場合は、回答文の生成とRerankにそれぞれコストがかかります。Rerank側の算定は、指定した方式のコスト体系に従います。
LLM による Rerank
クエリとチャンク本文を入力としてAIトークンを消費します(テキスト生成と同様)。レートはCraft AI Modules の AIトークンとコストを参照してください。
ランキング専用モデルによる Rerank
クエリ単位の固定レートです。レートはCraft AI Modules の AIトークンとコスト — Rerankを参照してください。
入力制限(ランキング専用モデル)
ランキング専用モデル(rankServiceModel)によるRerankでは、入力チャンクに次の上限があります。
| 項目 | 上限 |
|---|---|
| 1チャンクあたりのトークン数 | 512 |
| 1回のリクエストあたりのチャンク数 | 200 |
LLMによるRerankには、これらの固定上限はありません。
1チャンクの本文がトークン上限を超えると、上限を超えた本文は切り捨てられ、残りの本文でランキングされます。トークン上限を避けるには、インポート時のチャンク設定を調整してください。設定方法はCraft RAG を利用する — ファイルをインポートするをご確認ください。
1回のリクエストでランキングに渡すチャンク数が上限を超えると、上限を超えたチャンクはランキングされません。チャンク数上限には topK でランキングに渡すチャンク数を調整できます。指定方法は次の「パラメータの指定」を参照してください。
利用の流れ
- 方式を選ぶ — LLMによるRerank、またはランキング専用モデルによるRerank
- パラメータを追加する — 次の「パラメータの指定」のとおりRAG呼び出しに追加する
パラメータの指定
ベクトル検索でファイルの中身を取得する処理、または回答生成のいずれかに、次のパラメータを追加します。基本的な呼び出し方と返却形式はCraft RAG を利用する — Craft Functionsから参照するをご確認ください。
| 方式 | 追加するパラメータ(例) |
|---|---|
| LLM による Rerank | llmRankerModel: 'gemini-2.5-flash' |
| ランキング専用モデルによる Rerank | rankServiceModel: 'semantic-ranker-512-003' |
ベクトル検索でファイルの中身を取得する場合
rag.retrieveContexts の引数にRerank用パラメータを追加します。
export default async function (data, { MODULES }) { const { res, req } = data; const { rag, logger } = MODULES;
const corpusId = '1234567890123456789'; const text = req.query.text || '返品方法は';
const ret = await rag.retrieveContexts({ corpusId, text, vectorDistanceThreshold: 0.8, llmRankerModel: 'gemini-2.5-flash', // rankServiceModel: 'semantic-ranker-512-003', });
logger.log(ret); res.json(ret);}ベクトル検索して回答文を生成する場合
craftExtra.ragOptions にRerank用パラメータを追加します。
export default async function (data, { MODULES }) { const { res, req } = data; const { aiModules, logger } = MODULES;
const text = req.query.text || '返品方法は'; const corpusId = '1234567890123456789';
const ret = await aiModules.gcpGeminiGenerateContent({ model: 'gemini-2.5-flash', contents: [{ role: 'user', parts: [{ text }] }], craftExtra: { ragOptions: { corpusId, vectorDistanceThreshold: 0.8, llmRankerModel: 'gemini-2.5-flash', // rankServiceModel: 'semantic-ranker-512-003', }, }, });
logger.log(ret); res.json(ret);}