Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

関連性ブースティング

最終更新 Markdown で表示Agent セットアップ

ブースティングを使うと、特定のメタデータ特性を持つドキュメントへ検索結果を寄せられます。たとえば、新しいドキュメントを優先したり、優先度の高いページを出したり、下書きの優先度を下げたりできます。ブースティングは意味的な関連性を置き換えず、結果を再ランクします。

仕組み

ブースティングは、最初の取得ステップのあと、reranking(有効な場合)の前に適用されます。

  1. 検索: AI Search はベクトル検索、キーワード検索、またはその両方で、最大 50 件の候補チャンクを取得します。
  2. ブースト: 各候補を、boost_by で指定したメタデータフィールドで再スコアします。ブーストは元の取得スコアに加算されます。
  3. Rerank: reranking が有効な場合、ブースト後の結果を reranking モデルで再ランクします。
  4. 返却: 上位 max_num_results 件を返します。

ブースティングは候補セット内の順序を変えられますが、最初の検索ステップで取得しなかったチャンクを引き上げることはできません。

対応フィールド

組み込みの timestamp フィールド、または カスタムメタデータスキーマ で定義した任意のフィールドでブーストできます。

フィールド型 使える方向
datetime ascdescexistsnot_exists
number ascdescexistsnot_exists
text existsnot_exists のみ
boolean existsnot_exists のみ

方向

方向は、フィールド値が各結果のランキングにどう影響するかを制御します。

方向 効果
desc フィールド値が大きいほど高スコアになります(例: 最新)。
asc フィールド値が小さいほど高スコアになります(例: 最低コスト)。
exists そのフィールドを持つドキュメントが高スコアになります。
not_exists そのフィールドを持たないドキュメントが高スコアになります。

direction を省略すると、AI Search はフィールド型に応じたデフォルトを適用します。

フィールド型 デフォルトの方向
numberdatetimetimestamp asc
textboolean exists

text または boolean フィールドに asc または desc を使うと、エラーになります。

設定

インスタンスの作成または更新時に、boost_by を最大 3 件のオブジェクトの配列として指定します。各オブジェクトは一意のフィールドを参照する必要があります。

フィールド 必須 説明
field string はい メタデータフィールド名または timestamp。スキーマと一致させる必要があります。大文字と小文字は区別しません。
direction string いいえ ascdescexistsnot_exists のいずれか。型ごとのデフォルトがあります。
const instance = await env.AI_SEARCH.create({
	id: "my-instance",
	retrieval_options: {
		boost_by: [
			{ field: "timestamp", direction: "desc" },
			{ field: "priority", direction: "desc" },
		],
	},
});

ブースティングを外すには、インスタンス更新時に boost_by を空配列にします。

リクエストごとの上書き

個別リクエストでは、ai_search_options.retrievalboost_by を上書きできます。リクエスト単位の値は、インスタンスレベルのデフォルトを完全に置き換えます。

const instance = env.AI_SEARCH.get("my-instance");

const results = await instance.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		retrieval: {
			boost_by: [{ field: "timestamp", direction: "desc" }],
		},
	},
});

1 件のリクエストだけブースティングを無効にするには、空配列を渡します。

const results = await instance.search({
	messages: [{ role: "user", content: "What is Cloudflare?" }],
	ai_search_options: {
		retrieval: {
			boost_by: [],
		},
	},
});

よくあるパターン

関連性ブースティングのよくある使い方は次のとおりです。

パターン 設定
新しいドキュメントを優先する [{ "field": "timestamp", "direction": "desc" }]
カスタムの優先度で引き上げる [{ "field": "priority", "direction": "desc" }]
低コストの選択肢をブーストする [{ "field": "cost", "direction": "asc" }]
著者付きドキュメントを優先する [{ "field": "author", "direction": "exists" }]
下書きを抑える [{ "field": "draft", "direction": "not_exists" }]
新しさと優先度を組み合わせる [{ "field": "timestamp", "direction": "desc" }, { "field": "priority", "direction": "desc" }]

制限

  • リクエストあたりのブーストフィールドは最大 3 つです。
  • フィールド名は、カスタムメタデータスキーマのフィールド、または組み込みの timestamp フィールドと一致する必要があります。
  • textboolean フィールドが使える方向は existsnot_exists だけです。
  • 1 リクエスト内のブーストフィールドは一意である必要があります。
  • ブースティングは、最初の検索で得た候補セットを再ランクします。取得しなかったドキュメントを出すことはできません。

役に立ちましたか?