検索リプレイ
Show:
検索リプレイは、以前の検索で返されたsearch_idを使用して過去の検索を再実行します。評価、回帰テスト、またはランキング変更のA/B比較のために、個々の検索パラメータを上書きできます。
Note: リプレイは、バケット検索のように検索セッションを生成する検索に利用可能です。このエンドポイントは、まだ単一の論理クエリとしてフェデレーテッドメモリ検索をリプレイしません。
POST /v1/search/replay
Section titled “POST /v1/search/replay”search_idで過去の検索を再実行します。
Request body
Section titled “Request body”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
search_id | string | yes | — | キャプチャされた検索呼び出しで返されたID。最大128文字。 |
override | object | no | null | 再実行に適用されるオプションのパラメータ上書き。Override fieldsを参照。 |
include_original | boolean | no | false | レスポンスにキャプチャされた初回実行結果を含めるかどうか。 |
Override fields
Section titled “Override fields”| Field | Type | Description |
|---|---|---|
top_k | integer (1–1000) | 返す結果の数。 |
filter | object | 検索フィルターオブジェクト。 |
min_score | number (0.0–1.0) | 最小結果スコア。 |
mode | string | 検索モードの上書き。 |
rerank | boolean | リランキングを適用するかどうか。 |
expand_neighbors | object | 近隣拡張パラメータ。 |
Example request
Section titled “Example request”curl -X POST https://api.schift.io/v1/search/replay \ -H "Authorization: Bearer $SCHIFT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "search_id": "search_abc123", "override": { "min_score": 0.7, "rerank": true }, "include_original": true }'Response
Section titled “Response”{ "original": { "search_id": "search_abc123", "query": "soccer rules offside", "bucket_id": "bkt_xyz", "created_at": "2026-04-30T12:34:56Z", "result_count": 8, "results": [ { "id": "chunk-x", "score": 0.91, "text": "", "metadata": { "rank": 1 } } ] }, "rerun": { "search_id": "search_def456", "results": [ { "id": "chunk-x", "score": 0.89, "text": "A player is in an offside position if...", "metadata": {} } ], "diff": { "added": ["chunk-z"], "removed": ["chunk-y"], "shared": 5, "rank_correlation": 0.83 } }}Note:
include_originalがtrueの場合、オリジナルの結果アイテムにはid、score、ランクメタデータのみが含まれます。オリジナルのチャンクテキストは検索イベント台帳に保存されないため、textフィールドは空です。
Response fields
Section titled “Response fields”| Field | Type | Description |
|---|---|---|
original | object | キャプチャされた初回実行の概要。 |
original.search_id | string | オリジナルのsearch_id。 |
original.query | string | オリジナル実行のクエリテキスト。 |
original.bucket_id | string | オリジナル実行で検索されたバケット。 |
original.created_at | string | null | オリジナルセッションのISO 8601タイムスタンプ。 |
original.result_count | integer | オリジナル実行でキャプチャされた結果の数。 |
original.results | array | null | include_originalがtrueの場合のオリジナル結果アイテム。 |
rerun | object | 新しい実行の概要。 |
rerun.search_id | string | 再実行の新しいsearch_id。 |
rerun.results | array | 再実行の結果アイテム。 |
rerun.diff | object | 2つの結果セットを比較する差分メトリクス。 |
Diff metrics
Section titled “Diff metrics”| Field | Type | Description |
|---|---|---|
added | array of strings | 再実行に存在し、オリジナルに存在しないID。 |
removed | array of strings | オリジナルに存在し、再実行に存在しないID。 |
shared | integer | 両方の結果セットに存在するIDの数。 |
rank_correlation | number | null | 共有IDに対するスピアマン順位相関。1.0は同一順序、-1.0は逆順序を意味します。共有IDが2未満の場合はnull。 |
Error examples
Section titled “Error examples”404 Not Found — search_idが組織に存在しません。
{ "detail": "search_id not found for this org"}422 Unprocessable Entity — キャプチャされたセッションに必要なクエリまたはバケット情報が欠落しています。
{ "detail": "Original search lacks query/bucket — replay not possible"}API Versions
Section titled “API Versions”検索リプレイにはv1のみが利用可能です。廃止されたバージョンはありません。
Limitations
Section titled “Limitations”- オリジナルの完全なリクエストペイロード(
filter、top_k、その他のパラメータを含む)はまだ保存されていません。そのため、未修正のリプレイはデフォルトの検索パラメータで実行され、ビット単位で同一の設定ではありません。 - 将来のリリースでは、セッション作成時に完全な
BucketSearchRequestを保存し、未修正のリプレイを再現可能にします。