Lewati ke konten
getnextpdf.com

Pro edisi

Accelerator — Referensi Mendalam

Halaman ini adalah referensi mendalam untuk permukaan akselerasi publik NextPDF\Pro\Accelerator. Halaman ini mencakup provider factory, batch optimizer terakselerasi, wrapper differ, serta layanan CPU sidecar untuk embedding dan vector search. Halaman ini menyatakan parameter, nilai default, mode kegagalan, dan semantik fallback. Baca halaman kapabilitas Accelerator terlebih dahulu untuk panduan alur kerja.

Kapabilitas ini hadir dalam NextPDF Pro (nextpdf/pro) dan aktif dengan envelope lisensi tingkat Pro. Deployment tanpa entitlement tersebut tidak memuat kelas-kelas kapabilitas ini. Bandingkan edisi dan dapatkan lisensi.

Accelerator tidak memiliki flag lisensi per-fitur. Kode ini hadir bersama edisi Pro; jalur optimizer terakselerasi dipilih saat runtime melalui probe reachability sidecar. Layanan embedding dan vector index tidak memiliki fallback PHP dan gagal-tertutup ketika sidecar tak dapat dijangkau.

Terminal window
composer require nextpdf/pro:^3

Metapackage nextpdf/premium memasang kode nextpdf/pro; modul ini berada di bawah namespace NextPDF\Pro\Accelerator.

SymbolParametersDefault behaviorReturnsThrows or fails withNotes
ProAcceleratorProvider::__constructSpectrumClient $clientMengikat provider ke klien sidecar CoreProAcceleratorProviderTidak ada yang dideklarasikanPemanggil mengonstruksi dan menyuplai klien
ProAcceleratorProvider::isAvailablenoneMelakukan probe reachability sidecar melalui klienboolTidak ada yang dideklarasikanHanya reachability; endpoint diprobe per pemanggilan
ProAcceleratorProvider::embeddingnoneMengembalikan layanan embedding yang dimemoizeEmbeddingServiceInterfaceTidak ada yang dideklarasikanSatu instance CpuEmbeddingService per provider
ProAcceleratorProvider::vectorIndexstring $collectionId = 'default'Mengembalikan handle index baru yang terikat ke koleksiVectorIndexInterfaceTidak ada yang dideklarasikanTidak dimemoize; satu handle per pemanggilan
ProAcceleratorProvider::optimizernoneMengembalikan optimizer terakselerasi yang dimemoizeAcceleratedOptimizerTidak ada yang dideklarasikanDikonstruksi dengan klien milik provider
ProAcceleratorProvider::differnoneMengembalikan wrapper differ yang dimemoizeAcceleratedDifferTidak ada yang dideklarasikanDikonstruksi dengan klien milik provider
AcceleratedOptimizer::__construct?SpectrumClient $spectrum = null, OptimizationLevel $level = OptimizationLevel::Balanced, ?LoggerInterface $logger = nullMembungkus PdfOptimizer PHP pada level yang diberikanAcceleratedOptimizerTidak ada yang dideklarasikanKlien null memilih jalur PHP; logger null memilih NullLogger
AcceleratedOptimizer::optimizeBatcharray<string, string> $documentsMenganalisis tiap dokumen; mengalihkan pekerjaan gambar ke sidecar saat dapat dijangkauBatchResultInterfaceSpectrumApiException SPEC-SEC-001 (HTTP 413) pada batch melebihi batas; penanda error per-item dalam hasil fallbackKegagalan transport setelah admission menurun ke jalur PHP
AcceleratedDiffer::__construct?SpectrumClient $spectrum = nullMenyimpan klien opsional untuk kompatibilitas ke depanAcceleratedDifferTidak ada yang dideklarasikanKlien tidak digunakan pada rilis ini
AcceleratedDiffer::comparestring $sourcePdf, string $targetPdfMembandingkan dua dokumen sepenuhnya di PHPDiffResultSebagaimana PdfDiffer ProTidak ada request sidecar yang dikirim pada rilis ini
AcceleratedDiffer::isSpectrumWirednoneMelaporkan apakah klien sidecar telah diinjeksikanboolTidak ada yang dideklarasikanHanya status wiring; tidak mengirim request
CpuEmbeddingService::embedstring $textMendelegasikan ke batchEmbed dan mengembalikan elemen nollist<float>Sebagaimana batchEmbedVektor 384 dimensi
CpuEmbeddingService::batchEmbedarray $textsMeng-embed batch di sidecarlist<list<float>>InvalidArgumentException pada batch kosong; SpectrumNotAvailableException saat tak dapat dijangkau; SpectrumApiException pada respons yang gagal, malformed, atau jumlahnya tak cocokTidak pernah mengembalikan hasil parsial
CpuEmbeddingService::getDimensionnoneMengembalikan 384intTidak ada yang dideklarasikanKonstan
CpuEmbeddingService::getModelNamenoneMengembalikan all-MiniLM-L6-v2stringTidak ada yang dideklarasikanKonstan
CpuVectorIndex::__constructSpectrumClient $client, string $collectionId = 'default'Mengikat handle ke satu koleksiCpuVectorIndexTidak ada yang dideklarasikanSatu handle per pengenal koleksi
CpuVectorIndex::buildarray $vectors, array $idsMembangun index koleksi di sidecarvoidInvalidArgumentException pada ketidakcocokan panjang; SpectrumNotAvailableException saat tak dapat dijangkauInput kosong kembali tanpa menghubungi sidecar
CpuVectorIndex::searcharray $queryVector, int $topK = 10Pencarian nearest-neighbor yang diperingkatlist<VectorSearchResult>SpectrumNotAvailableException saat tak dapat dijangkau; SpectrumApiException pada envelope error in-band; JsonException pada body malformedPeringkat per-hit ada di metadata hasil
CpuVectorIndex::deletearray $idsSelalu menolakvoid (dideklarasikan)Selalu: SpectrumApiException SPEC-INDEX-004 (HTTP 501)HNSW tidak punya penghapusan per-vektor; bangun ulang saja
CpuVectorIndex::countnoneMembaca total koleksi lewat probe berdimensiintSpectrumNotAvailableException saat tak dapat dijangkau; SpectrumApiException pada error atau respons count yang malformedMengembalikan 0 hanya untuk index yang dikonfirmasi kosong
CpuVectorIndex::INDEX_DIMENSIONKonstanta publik 384intCocok dengan dimensi embedding
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 adalah entry point. embedding(), optimizer(), dan differ() mememoize instance-nya. vectorIndex($collectionId) mengembalikan handle baru per pemanggilan, terikat ke pengenal koleksi yang diberikan. isAvailable() melakukan probe reachability sidecar melalui SpectrumClient Core yang diinjeksikan.

optimizeBatch mengembalikan hasil batch yang di-key berdasarkan pengenal dokumen milik pemanggil. Ketika sidecar dapat dijangkau, payload agregat divalidasi terhadap budget klien sebelum buffering atau upload apa pun. Batch melebihi batas gagal-tertutup dengan SpectrumApiException SPEC-SEC-001 (HTTP 413); ia tidak pernah menurun ke jalur PHP. Batch yang diterima dikirim ke sidecar untuk pekerjaan gambar paralel.

Kegagalan transport, autentikasi, atau parse-respons setelah admission menurun ke optimizer PHP, yang menganalisis tiap dokumen secara berurutan. Penurunan ini teramati dua kali: metadata hasil melaporkan engine php_fallback dengan ringkasan hardware cpu, dan peringatan PSR-3 dipancarkan di bawah nama event spectrum.optimize.fallback. Peringatan itu membawa kelas exception dan jumlah dokumen saja; tidak ada byte dokumen yang dicatat. Dalam hasil fallback, kegagalan analisis per-dokumen menghasilkan item berstatus error dengan kode SPEC-PARSE-001; dokumen lain dalam batch tetap selesai.

Level optimasi default adalah Balanced. Field hasil per-item adalah original_bytes, optimized_bytes, objects_removed, images_before, images_after, savings_percent, dan processing_time_ms.

compare berjalan sepenuhnya di PHP melalui PdfDiffer Pro: parsing struktur, ekstraksi teks, dan algoritma diff. Tidak ada request sidecar yang dikirim pada rilis ini. Kontrak differ hanya menerima string PDF mentah, sehingga hasil parse sidecar tidak dapat dikonsumsi; pengalihan hanya akan menambah biaya tanpa manfaat. Klien yang diinjeksikan disimpan untuk fitur parse-offload di masa depan. isSpectrumWired() mengekspos status wiring tanpa mengirim request.

embed mendelegasikan ke batchEmbed([$text]) dan mengembalikan elemen nol. batchEmbed([]) memunculkan InvalidArgumentException sebelum menghubungi sidecar. Sidecar yang tak dapat dijangkau memunculkan SpectrumNotAvailableException. Semantik batch bersifat all-or-nothing: kegagalan per-item, vektor yang hilang atau malformed, atau ketidakcocokan jumlah memunculkan SpectrumApiException (kegagalan bentuk-protokol membawa SPEC-IO-001) alih-alih mengembalikan vektor parsial. Komponen non-numerik di dalam vektor yang dikembalikan dipaksa menjadi 0.0. getDimension mengembalikan 384; getModelName mengembalikan all-MiniLM-L6-v2. Sidecar mengunduh dan memuat model ONNX secara lazy pada request pertama.

Setiap handle mengikat satu pengenal koleksi; setiap koleksi memetakan ke index HNSW in-memory terpisah di sidecar. build mensyaratkan daftar vektor dan pengenal berpanjang sama dan memunculkan InvalidArgumentException jika tidak; input kosong kembali tanpa pemanggilan sidecar. search mengembalikan hit terperingkat dengan rank berbasis-satu di metadata tiap hasil. Envelope error in-band memunculkan SpectrumApiException; envelope tanpa kode dipetakan ke SPEC-INDEX-003. delete selalu menolak dengan SpectrumApiException SPEC-INDEX-004 (HTTP 501, tidak dapat diulang) karena HNSW tidak mendukung penghapusan per-vektor; bangun ulang index saja.

count bersifat fail-closed dan tanpa ambiguitas. Sidecar yang tak dapat dijangkau memunculkan SpectrumNotAvailableException; error transport dan sidecar merambat tanpa perubahan. Pada respons yang sebaliknya sukses, body non-JSON memunculkan SPEC-INDEX-005, metadata.total_vectors yang hilang memunculkan SPEC-INDEX-006, dan total non-integer atau negatif memunculkan SPEC-INDEX-007. count mengembalikan 0 hanya untuk index yang dikonfirmasi kosong. Probe ukuran mengirimkan vektor nol berdimensi tepat INDEX_DIMENSION (384) dengan top_k sebesar 0, sehingga sidecar yang memvalidasi dimensi menerimanya.

  • Memori sidecar bersifat volatil: restart menghapus semua koleksi HNSW. Perlakukan build index sebagai idempoten dan jalankan ulang setelah restart.
  • Ketersediaan campuran dalam satu proses didukung: optimizer menurun per pemanggilan; layanan embedding dan vector gagal-tertutup per pemanggilan.
  • Batch optimizer melebihi batas gagal-tertutup sebelum upload apa pun; ia tidak fallback ke jalur PHP.
  • Fallback optimizer tidak pernah gagal secara diam-diam: periksa penanda engine di metadata hasil dan pantau event peringatan.
  • count tidak pernah melaporkan sidecar yang tak dapat dijangkau atau error protokol sebagai 0; hal itu memunculkan exception bertipe.
  • Hit pencarian yang kehilangan pengenal atau skornya mengambil default string kosong dan 0.0 alih-alih menggagalkan batch.
  • top_k sebesar 0 digunakan secara internal hanya untuk probe count; gunakan topK positif untuk pencarian nyata.
  • Request embedding pertama membayar biaya unduh dan muat model satu kali; ukur timeout itu secara terpisah.
  • Hierarki exception sidecar dan famili kode error dikatalogkan di referensi error Accelerator.
  • Modul ini tidak melakukan operasi kriptografis dan tidak mendefinisikan perilaku spesifik-FIPS. Postur mode FIPS diatur oleh modul signing dan compliance, bukan di sini.

Accelerator mendelegasikan pekerjaan yang memengaruhi format ke modul Optimizer dan Diff dan tidak menegaskan konformitas format independen. Konformitas untuk pekerjaan yang didelegasikan didokumentasikan di halaman referensi Optimizer dan Diff. Halaman ini tidak mengklaim pengenal klausa eksternal apa pun; setiap pernyataan berdasar pada source produk. NextPDF tidak membuat klaim sertifikasi.

  • Source modul membawa @since 2.1.0; referensi ini mendokumentasikan permukaan sebagaimana dirilis dalam nextpdf/pro 3.1.0.
  • Semua kelas bersifat final dan menggunakan constructor injection; konstruksi instance baru alih-alih memutasi.
  • SpectrumClient, VectorSearchResult, BatchResultInterface, serta kontrak EmbeddingServiceInterface dan VectorIndexInterface berasal dari NextPDF Core; pemanggil mengonstruksi dan menyuplai klien sidecar.
  • OptimizationLevel, PdfOptimizer, dan PdfDiffer berasal dari modul Optimizer dan Diff Pro; semantiknya didokumentasikan di halaman referensi tersebut.
  • Layanan embedding dan vector index berbagi dimensi 384. Bangun vektor index ke dimensi yang sama dengan embedding yang menge-query-nya.
  • Detail mekanisme internal tetap berada di dokumentasi internal repositori source dan berada di luar cakupan manual ini.

Halaman ini mendokumentasikan hanya perilaku yang teramati secara eksternal dan permukaan public API yang didukung. Jalur namespace internal, kelas helper, tabel mekanisme, nama file runbook, dan prefiks tiket berada di luar cakupan.