コンテンツにスキップ
getnextpdf.com

Pro エディション

Accelerator — 詳細リファレンス

このページは、NextPDF\Pro\Accelerator の公開高速化サーフェスの詳細リファレンスです。プロバイダーファクトリー、高速化バッチオプティマイザー、differ ラッパー、そして埋め込みとベクトル検索のための CPU サイドカーサービスを扱います。パラメーター、既定値、失敗モード、フォールバックのセマンティクスを記載します。ワークフローの指針については、まず Accelerator 機能ページ をお読みください。

この機能は NextPDF Pronextpdf/pro)に同梱され、Pro ティアのライセンスエンベロープで有効化されます。その権限を持たないデプロイメントでは、この機能のクラスは読み込まれません。エディションを比較してライセンスを取得する

Accelerator には機能ごとのライセンスフラグはありません。コードは Pro エディションに同梱され、高速化されたオプティマイザー経路は、サイドカーの到達可能性プローブによってランタイムで選択されます。埋め込みサービスとベクトルインデックスには PHP フォールバックがなく、サイドカーに到達できない場合はフェイルクローズドになります。

Terminal window
composer require nextpdf/pro:^3

nextpdf/premium メタパッケージは nextpdf/pro コードをインストールします。このモジュールは NextPDF\Pro\Accelerator 名前空間の下に存在します。

シンボルパラメーター既定の挙動戻り値スローまたは失敗備考
ProAcceleratorProvider::__constructSpectrumClient $clientプロバイダーを Core サイドカークライアントにバインドProAcceleratorProvider宣言なし呼び出し元がクライアントを構築して供給
ProAcceleratorProvider::isAvailableなしクライアント経由でサイドカーの到達可能性をプローブbool宣言なし到達可能性のみ。エンドポイントは呼び出しごとにプローブ
ProAcceleratorProvider::embeddingなしメモ化された埋め込みサービスを返すEmbeddingServiceInterface宣言なしプロバイダーごとに CpuEmbeddingService 1 インスタンス
ProAcceleratorProvider::vectorIndexstring $collectionId = 'default'コレクションにバインドされた新しいインデックスハンドルを返すVectorIndexInterface宣言なしメモ化なし。呼び出しごとに 1 ハンドル
ProAcceleratorProvider::optimizerなしメモ化された高速化オプティマイザーを返すAcceleratedOptimizer宣言なしプロバイダーのクライアントで構築
ProAcceleratorProvider::differなしメモ化された differ ラッパーを返すAcceleratedDiffer宣言なしプロバイダーのクライアントで構築
AcceleratedOptimizer::__construct?SpectrumClient $spectrum = null, OptimizationLevel $level = OptimizationLevel::Balanced, ?LoggerInterface $logger = null指定レベルで PHP PdfOptimizer をラップAcceleratedOptimizer宣言なしnull クライアントは PHP 経路を選択。null ロガーは NullLogger を選択
AcceleratedOptimizer::optimizeBatcharray<string, string> $documents各ドキュメントを解析し、到達可能な場合は画像処理をサイドカーへオフロードBatchResultInterface上限超過バッチで SpectrumApiException SPEC-SEC-001(HTTP 413)。フォールバック結果内のアイテムごとのエラーマーカー受理後のトランスポート失敗は PHP 経路へ縮退
AcceleratedDiffer::__construct?SpectrumClient $spectrum = null将来互換性のためオプションのクライアントを保持AcceleratedDiffer宣言なし本リリースではクライアントは未使用
AcceleratedDiffer::comparestring $sourcePdf, string $targetPdf2 つのドキュメントを完全に PHP で比較DiffResultPro の PdfDiffer に準ずる本リリースではサイドカーリクエストは発行しない
AcceleratedDiffer::isSpectrumWiredなしサイドカークライアントが注入されたかを報告bool宣言なし配線状態のみ。リクエストは発行しない
CpuEmbeddingService::embedstring $textbatchEmbed に委譲し要素ゼロを返すlist<float>batchEmbed に準ずる384 次元ベクトル
CpuEmbeddingService::batchEmbedarray $textsバッチをサイドカーで埋め込むlist<list<float>>空バッチで InvalidArgumentException。到達不能時に SpectrumNotAvailableException。失敗・不正形式・件数不一致の応答で SpectrumApiException部分結果は決して返さない
CpuEmbeddingService::getDimensionなし384 を返すint宣言なし定数
CpuEmbeddingService::getModelNameなしall-MiniLM-L6-v2 を返すstring宣言なし定数
CpuVectorIndex::__constructSpectrumClient $client, string $collectionId = 'default'ハンドルを 1 コレクションにバインドCpuVectorIndex宣言なしコレクション識別子ごとに 1 ハンドル
CpuVectorIndex::buildarray $vectors, array $idsサイドカーでコレクションインデックスを構築void長さ不一致で InvalidArgumentException。到達不能時に SpectrumNotAvailableException空入力はサイドカーに接続せず戻る
CpuVectorIndex::searcharray $queryVector, int $topK = 10ランク付き最近傍探索list<VectorSearchResult>到達不能時に SpectrumNotAvailableException。インバンドエラーエンベロープで SpectrumApiException。不正形式ボディで JsonException結果メタデータにヒットごとの順位
CpuVectorIndex::deletearray $ids常に拒否void(宣言上)常に SpectrumApiException SPEC-INDEX-004(HTTP 501)HNSW はベクトルごとの削除がない。代わりに再構築
CpuVectorIndex::countなし次元付きプローブでコレクション総数を読むint到達不能時に SpectrumNotAvailableException。エラーまたは不正形式のカウント応答で SpectrumApiException確認済みの空インデックスに対してのみ 0 を返す
CpuVectorIndex::INDEX_DIMENSION公開定数 384int埋め込み次元に一致
final class ProAcceleratorProvider
{
public function __construct(
private readonly SpectrumClient $client,
)
public function isAvailable(): bool
public function embedding(): EmbeddingServiceInterface
public function vectorIndex(string $collectionId = 'default'): VectorIndexInterface
public function optimizer(): AcceleratedOptimizer
public function differ(): AcceleratedDiffer
}
final class AcceleratedOptimizer
{
public function __construct(
private readonly ?SpectrumClient $spectrum = null,
private readonly OptimizationLevel $level = OptimizationLevel::Balanced,
?LoggerInterface $logger = null,
)
public function optimizeBatch(array $documents): BatchResultInterface
}
final class AcceleratedDiffer
{
public function __construct(
private readonly ?SpectrumClient $spectrum = null,
)
public function compare(string $sourcePdf, string $targetPdf): DiffResult
public function isSpectrumWired(): bool
}
final class CpuEmbeddingService implements EmbeddingServiceInterface
{
public function __construct(
private readonly SpectrumClient $client,
)
public function embed(string $text): array
public function batchEmbed(array $texts): array
public function getDimension(): int
public function getModelName(): string
}
final class CpuVectorIndex implements VectorIndexInterface
{
public const int INDEX_DIMENSION = 384;
public function __construct(
private readonly SpectrumClient $client,
private readonly string $collectionId = 'default',
)
public function build(array $vectors, array $ids): void
public function search(array $queryVector, int $topK = 10): array
public function delete(array $ids): void
public function count(): int
}

ProAcceleratorProvider はエントリーポイントです。embedding()optimizer()differ() はそれぞれのインスタンスをメモ化します。vectorIndex($collectionId) は、与えられたコレクション識別子にバインドされた新しいハンドルを呼び出しごとに返します。isAvailable() は、注入された Core の SpectrumClient を介してサイドカーの到達可能性をプローブします。

optimizeBatch は、呼び出し元のドキュメント識別子をキーとするバッチ結果を返します。サイドカーに到達可能な場合、集約ペイロードは、バッファリングやアップロードの前にクライアントバジェットに対して検証されます。上限超過バッチは SpectrumApiException SPEC-SEC-001(HTTP 413)でフェイルクローズドになり、PHP 経路へは決して縮退しません。受理されたバッチは、並列の画像処理のためにサイドカーへディスパッチされます。

受理後のトランスポート、認証、または応答解析の失敗は、各ドキュメントを順次解析する PHP オプティマイザーへ縮退します。縮退は 2 通りで観測可能です。結果メタデータがエンジン php_fallback とサマリーハードウェア cpu を報告し、イベント名 spectrum.optimize.fallback の下で PSR-3 警告が発行されます。警告は例外クラスとドキュメント数のみを伝え、ドキュメントのバイトは一切ログ出力されません。フォールバック結果では、ドキュメントごとの解析失敗は、エラーステータスとコード SPEC-PARSE-001 を持つアイテムを生成します。バッチ内の他のドキュメントは引き続き完了します。

既定の最適化レベルは Balanced です。アイテムごとの結果フィールドは、original_bytesoptimized_bytesobjects_removedimages_beforeimages_aftersavings_percentprocessing_time_ms です。

compare は、Pro の PdfDiffer を介して完全に PHP で実行されます。すなわち構造解析、テキスト抽出、差分アルゴリズムです。本リリースではサイドカーリクエストは発行しません。differ 契約は生の PDF 文字列のみを受け付けるため、サイドカーの解析結果は消費できず、オフロードは利益なしにコストを追加するだけです。注入されたクライアントは、将来の解析オフロード機能のために保持されます。isSpectrumWired() は、リクエストを発行せずに配線状態を公開します。

embedbatchEmbed([$text]) に委譲し、要素ゼロを返します。batchEmbed([]) は、サイドカーに接続する前に InvalidArgumentException を発生させます。到達不能なサイドカーは SpectrumNotAvailableException を発生させます。バッチのセマンティクスはオールオアナッシングです。アイテムごとの失敗、欠落または不正形式のベクトル、あるいは件数不一致は、部分ベクトルを返す代わりに SpectrumApiException を発生させます(プロトコル形状の失敗は SPEC-IO-001 を伴います)。返されたベクトル内の非数値コンポーネントは 0.0 に強制変換されます。getDimension384 を返し、getModelNameall-MiniLM-L6-v2 を返します。サイドカーは、最初のリクエスト時に ONNX モデルを遅延ダウンロードおよびロードします。

各ハンドルは 1 つのコレクション識別子にバインドされ、各コレクションはサイドカー内の個別のインメモリ HNSW インデックスにマッピングされます。build は等長のベクトルと識別子のリストを必要とし、そうでない場合は InvalidArgumentException を発生させます。空入力はサイドカー呼び出しなしに戻ります。search は、各結果のメタデータに 1 始まりの順位を伴うランク付きヒットを返します。インバンドエラーエンベロープは SpectrumApiException を発生させ、コードのないエンベロープは SPEC-INDEX-003 にマッピングされます。delete は、HNSW がベクトルごとの削除をサポートしないため、常に SpectrumApiException SPEC-INDEX-004(HTTP 501、再試行不可)で拒否します。代わりにインデックスを再構築してください。

count はフェイルクローズドかつ曖昧さがありません。到達不能なサイドカーは SpectrumNotAvailableException を発生させ、トランスポートおよびサイドカーのエラーはそのまま伝播します。それ以外は成功した応答において、非 JSON ボディは SPEC-INDEX-005 を、metadata.total_vectors の欠落は SPEC-INDEX-006 を、非整数または負の総数は SPEC-INDEX-007 を発生させます。count は、確認済みの空インデックスに対してのみ 0 を返します。サイズプローブは、ちょうど INDEX_DIMENSION(384)次元のゼロベクトルを top_k 0 で送信するため、次元を検証するサイドカーはこれを受理します。

  • サイドカーのメモリは揮発性です。再起動するとすべての HNSW コレクションがクリアされます。インデックスの構築は冪等として扱い、再起動後に再実行してください。
  • 単一プロセス内での可用性の混在がサポートされます。オプティマイザーは呼び出しごとに縮退し、埋め込みおよびベクトルのサービスは呼び出しごとにフェイルクローズドになります。
  • 上限超過のオプティマイザーバッチは、いかなるアップロードよりも前にフェイルクローズドになり、PHP 経路へはフォールバックしません。
  • オプティマイザーのフォールバックは決して静かに失敗しません。結果メタデータのエンジンマーカーを確認し、警告イベントを監視してください。
  • count は、到達不能なサイドカーやプロトコルエラーを決して 0 として報告しません。それらは型付き例外を発生させます。
  • 識別子またはスコアを欠く検索ヒットは、バッチを失敗させる代わりに空文字列と 0.0 を既定とします。
  • top_k 0 は、count プローブのために内部的にのみ使用されます。実際の検索には正の topK を渡してください。
  • 最初の埋め込みリクエストは、一度限りのモデルダウンロードとロードのコストを負担します。そのタイムアウトは別途サイズ設定してください。
  • サイドカーの例外階層とエラーコードのファミリーは、Accelerator エラーリファレンス にカタログ化されています。
  • このモジュールは暗号操作を一切実行せず、FIPS 固有の挙動を定義しません。FIPS モードの姿勢は、ここではなく署名およびコンプライアンスのモジュールによって管理されます。

Accelerator は、フォーマットに影響する処理を Optimizer および Diff モジュールに委譲し、独立したフォーマット適合性を主張しません。委譲された処理の適合性は、Optimizer および Diff のリファレンスページに記載されています。このページは外部の節識別子を一切主張しません。すべての記述は製品ソースに基づいています。NextPDF は認証を主張しません。

  • モジュールソースは @since 2.1.0 を保持します。このリファレンスは、nextpdf/pro 3.1.0 で出荷されたサーフェスを文書化します。
  • すべてのクラスは final であり、コンストラクター注入を使用します。ミューテーションする代わりに新しいインスタンスを構築してください。
  • SpectrumClientVectorSearchResultBatchResultInterface、および EmbeddingServiceInterfaceVectorIndexInterface の契約は NextPDF Core に由来します。呼び出し元がサイドカークライアントを構築して供給します。
  • OptimizationLevelPdfOptimizerPdfDiffer は Pro の Optimizer および Diff モジュールに由来します。それらのセマンティクスは各リファレンスページに文書化されています。
  • 埋め込みサービスとベクトルインデックスは 384 次元を共有します。インデックスのベクトルは、それらを問い合わせる埋め込みと同じ次元に構築してください。
  • 内部メカニズムの詳細はソースリポジトリの内部ドキュメントに留まり、本マニュアルの範囲外です。

このページは、外部から観測可能な挙動とサポートされる公開 API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズムテーブル、ランブックのファイル名、チケットのプレフィックスは範囲外です。