AI Searchリランカーのファインチューニング
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
リランカーファインチューニングは、独自のインデックスデータでカスタムリランカーをトレーニングし、それをサービングすることで、コーパスに合わせて調整されたモデルがクエリーを再ランク付けできるようにします。Databricks は、トレーニングデータの生成、モデルのトレーニング、Unity Catalog への登録、および Model Serving Endpointへのデプロイを自動的に処理します。
この機能はマネージドインデックスのみをサポートしています。管理されたインデックスとは、Databricks がエンべディングをコンピュートする Delta Sync インデックスのことです。
要件
- Databricks 管理の埋め込みを持つ Delta Sync AI Search インデックス。ダイレクトアクセスインデックスおよびセルフマネージド型埋め込みを持つインデックスはサポートされていません。AI Search Endpoint とインデックスの作成を参照してください。
- この機能は、ワークスペースで有効にする必要があります。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricks プレビューの管理を参照してください。
- この機能は、次のリージョンでのみ使用できます:
us-west-2us-west-1us-east-1us-east-2
権限
ファインチューニングジョブはユーザー自身としてランし、ユーザーに代わっていくつかの Unity Catalog オブジェクトを作成します。そのため、ジョブを起動する前に、以下のすべての Unity Catalog 権限を保持している必要があります。
SELECTインデックス上で、トレーニング用にドキュメントを読み取ります。CREATE VOLUMEおよびトレーニングデータボリュームと中間テーブル用の、インデックスのカタログとスキーマに対するCREATE TABLE。CREATE MODELファインチューニングされたモデルが登録されているスキーマ上。これは、モデル名を設定した場合はそのモデル名のスキーマであり、設定していない場合はインデックス自体のスキーマです。
これらの特権のいずれかが不足している場合、Databricks はジョブを開始して後で失敗させるのではなく、アクセス許可エラーで要求を拒否します。
リランカーファインチューニングの仕組み
リランカーファインチューニングは、データに対して以下のパイプラインを実行します:
- トレーニングデータを生成します。インデックス上でファインチューニングジョブを起動します。Databricksは、ペイロードLogs、提供されたテーブル、またはデータから合成されたクエリーからサンプルを抽出します。次に、候補を取得し、LLMを使用して関連性を判断し、トレーニングデータを構築します。
- リランカーをトレーニングします。Databricks は、ベースとなるリランカーモデルから開始して、そのデータでリランカーをトレーニングします。
- 登録してデプロイします。結果は Unity Catalog にモデルとして登録され、自動的に作成された Model Serving Endpoint にデプロイされます。
- インデックスをクエリーします。Python SDKまたはREST APIを使用して、微調整されたリランカーでインデックスをクエリーします。
ファインチューニングジョブを起動
リランカーファインチューニングは、Catalog Explorer のベクトルインデックス詳細ページで利用できます。
-
Catalog Explorer で、ベクトルインデックスに移動し、 概要 tabを開きます。 リランカーファインチューニング セクションまでスクロールします。
-
[リランカーファインチューニングをラン] をクリックします。 以前にファインチューニングをランしたことがある場合、このボタンは [新しいファインチューニングをラン] と表示され、前回のランが完了した後に有効になります。
-
リランカーファインチューニングを設定 ダイアログで、以下のフィールドを確認して入力します。

-
モデル名 : ファインチューニングされたモデルのUnity Catalog名。これは
catalog.schema.reranker_<index>として事前入力されています。別の名前にする場合は編集してください。 -
トレーニングクエリーソース :トレーニングクエリーの取得元:
- ペイロードLogsテーブルを使用 :インデックスでキャプチャされたクエリーLogsを使用します。ペイロードLogsテーブルが存在する場合、Databricksはこれをdefaultで選択します。
- [インデックスドキュメントから生成] : Databricks はインデックスデータからクエリーを合成します。
- Deltaテーブルから : [テーブルの選択] をクリックしてクエリーのDeltaテーブルを選択し、必要に応じて [クエリー列] を選択します。クエリー列のdefaultは
query_textです。
-
詳細設定 (オプション):展開して、トレーニングに使用するクエリー数の上限である 最大クエリー数 を設定します。default値は5000です。クエリーテーブルのクエリー数が上限より少ない場合、Databricksは上限に達するまでさらに生成します。
-
-
[ファインチューニングを起動] をクリックします。ダイアログが閉じ、 リランカーファインチューニングが起動されました という確認が表示されます。
ファインチューニングの進捗を追跡する
ジョブを起動すると、 [リランカーファインチューニング] セクションに [ステータス] が表示されます:
ステータス | 説明 |
|---|---|
開始中… | ジョブはキューに入れられました。 |
ファインチューニングを実行中… | トレーニングが進行中です。 |
完了 | ファインチューニング済みリランカーが登録およびデプロイされ、クエリーを実行する準備が整いました。 |
不成功 | トレーニングが完了しませんでした。エラーメッセージが表示されます。 |
ステータスは自動的に更新されます。ジョブが完了すると、 [モデルの表示] Linkが表示され、デプロイされたリランカーモデルを開くことができます。
ファインチューニング済みリランカーを使用したクエリー
トレーニングが成功したら、Python SDK または REST API を使用して、ファインチューニングされたリランカーでインデックスをクエリーします。一般的なクエリーのガイダンスについては、「AI Searchインデックスのクエリー」を参照してください。
Python SDK でクエリーを実行する
databricks-ai-search Python SDKを使用してインデックスをクエリーします。
from databricks.ai_search.client import AISearchClient
from databricks.ai_search.reranker import ExperimentalDatabricksFinetunedReranker
client = AISearchClient()
index = client.get_index(
endpoint_name="my-endpoint",
index_name="catalog.schema.my_index",
)
results = index.similarity_search(
query_text="How do I create an AI Search index?",
columns=["id", "text"],
num_results=10,
reranker=ExperimentalDatabricksFinetunedReranker(
columns_to_rerank=["text"], # must be exactly the embedding source column
),
)
columns_to_rerank: インデックスの埋め込みソース列と完全に一致している必要があり、単一要素のリストとして指定します。- モデルサービングEndpointは、インデックスから自動的に解決されます。特定のEndpointをターゲットにするには、
endpoint_name="..."を渡します。
リランカーが実行されたことを確認するには、debug_level=1 を渡して結果を検査します:
results = index.similarity_search(..., debug_level=1)
dbg = results.get("debug_info", {})
if "warnings" in dbg:
print("Reranker fell back:", dbg["warnings"])
else:
print(f"Reranker ran, took {dbg['reranker_time']}ms")
REST API を使用したクエリー
REST経由で、ファインチューニング済みリランカーを使用してクエリーすることもできます。rerankerブロックを使用して、インデックスのクエリーEndpointにPOSTを送信します。ブロック内で、modelにファインチューニング済みModel Serving Endpoint名を、model_typeにMODEL_TYPE_FINETUNEDを、parameters.columns_to_rerankに埋め込みソース列を設定します:
curl -X POST \
https://<workspace-host>/api/2.0/vector-search/indexes/catalog.schema.my_index/query \
-H "Authorization: Bearer $DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query_text": "How do I create an AI Search index?",
"columns": ["id", "text"],
"num_results": 10,
"debug_level": 1,
"reranker": {
"model": "<finetuned-endpoint-name>",
"model_type": "MODEL_TYPE_FINETUNED",
"parameters": {
"columns_to_rerank": ["text"]
}
}
}'
model:ファインチューニングジョブによって作成された、ファインチューニング済みリランカーをホストする Model Serving Endpoint の名前。Python SDK とは異なり、REST API はこれを自動的に導出することはありません。parameters.columns_to_rerank:インデックスの埋め込みソース列と完全に一致している必要があります。これはSDKと同じルールです。debug_level: 1応答でdebug_info.reranker_time、または fallback 時にdebug_info.warningsを表示します。
制限事項
- リランカーのファインチューニングは、Databricks 管理の埋め込みを持つ Delta Sync インデックスでのみサポートされています。ダイレクトアクセスインデックスおよびセルフマネージド型埋め込みインデックスはファインチューニングできません。
- サービスEndpointはゼロにスケーリングされるため、非アクティブな期間の後の最初のクエリーでは、コールド起動の遅延が発生します。ゼロへのスケーリングをオフにすることができます。
- リランキングは埋め込みソース列に固定されています。ファインチューニングされたリランカーでクエリーを実行する場合、
columns_to_rerankはインデックスの埋め込みソース列、つまりリランカーのトレーニングに使用された列と完全に一致している必要があります。Databricks は、他の列または列セットのリランキングを拒否します。