Embedder
embed() の背後にある、クエリ埋め込みのポート。
英語版が原文です。
ポート: embed(request: EmbedRequest) -> EmbedResult。indx.embed() として呼ばれます。拡張点ではなくステージなので、Embedder プロトコルは宣言されていません。QueryEmbedder が唯一の実装であり、デプロイが差し替えるのは埋め込み空間であって、空間を選ぶステージではありません。
Embedder は、テキストまたは画像のクエリを、選択された埋め込み空間へエンコードするための境界です。入力モダリティに適合するクエリロールの埋め込み器を選び、実際に使用した公開の空間と埋め込み器の構成とともにベクトルを返します。
埋め込み空間は、ベクトル次元、距離メトリック、正規化、適合する埋め込み器を定義します。各埋め込み器は、ロール、モダリティ、モデルリビジョン、前処理構成、再現可能なフィンガープリントを宣言します。
ドキュメントベクトルが役に立つのは、呼び出し側が適合するクエリベクトルを生成できるときだけです。埋め込み空間 ID で選択することで、適合性が確立された共有のベクトル契約を保ったまま、ドキュメントとクエリのエンコーダーが異なる実装を使えます。
実際に使用した公開構成を返すことで、クエリ結果は再現可能になります。下流のインデックスは、プロバイダーの資格情報や非公開エンドポイントを晒すことなく、次元と類似度のセマンティクスを検証できます。
入力は
EmbedRequest
で、リクエスト ID、テキストまたは画像の入力、必須の埋め込み空間 ID を運びます。
出力は
EmbedResult
で、次を運びます。
- 呼び出し側のリクエスト ID。
- 選択された完全な
EmbeddingSpaceディスクリプタ。 - 実際に使用されたクエリロールの
EmbedderConfig。 - その埋め込み器を識別する、1 つ以上のベクトル。
- 要求された埋め込み空間を、機能インベントリから解決する。
- 入力モダリティに適合するクエリロールの埋め込み器を、ちょうど 1 つ選択する。
- 宣言されたモデルリビジョンと前処理構成を適用する。
- 埋め込み空間が宣言する次元を持つベクトルを、少なくとも 1 つ返す。
- すべてのベクトルを、選択された埋め込み器 ID で識別する。
- 空間の距離メトリックと正規化のセマンティクスを保つ。
- 資格情報と非公開のプロバイダーエンドポイントを、公開ディスクリプタに含めない。
このプロトコルが扱うのはクエリのエンコードです。ドキュメント埋め込みは実行ワークフローの一部として生成され、返されるブロック上で同じバージョン付き空間を識別します。
そちら側に渡されうるものは唯一の記述にまとまっています。indx-interfaces の DOCUMENT_EMBEDDING_MODALITIES であり、ルーターの拒否判定とエグゼキューターの選択の両方がこれを読みます。値は (text, image) で、その順序が意味を持ちます。チャンクは通常テキストですが、テキストとして誰も読めなかったページは代わりにレンダリング済みのページになります。これを生成するのが indx-chunker-pdf であり、画像側が到達可能になる理由そのものです。ページが両方を持つことはありません。チャンカーは読めたページにはテキストを、読めなかったページにだけレンダリングを渡すので、読めたページがラスタライズの費用まで払うことはありません。この順序が決めるのは、スペースがどのレーンで報告されるかであって、実行が何を埋め込むかではありません。
計画が名指しした空間が拒否されるのは、このリストが覆うドキュメントレーンを一つも宣言していない場合だけです。ドキュメントレーンが画像しかない空間はルーティング可能であり、以前はそうではありませんでした。実行はモダリティごとに、その空間が宣言する埋め込み器に対して別々の呼び出しで埋め込むので、スキャンページがレンダリングされたドキュメントは一つの空間にテキストベクトルと画像ベクトルを同時に持てます。その空間がドキュメント埋め込み器を持たないモダリティは、失敗ではなくスキップされます。空間はそのドキュメントが生成した残りすべてには依然として答えられるからです。
クエリのエンコードはこのリストの制約を受けません。ドキュメント側が何であれ、空間はクエリで画像を読めます。clip-vit-b32 がドキュメントロールを取る前からそうしていた通りです。
システム内の位置
Section titled “システム内の位置”公開の indx.embed() ファサードと POST /v1/embed オペレーションは、埋め込み器に委譲します。機能スナップショットはリクエストが選択できる埋め込み空間を広告し、エンコードされたドキュメントブロックは同じ空間 ID を参照します。