İçeriğe geç
getnextpdf.com

Enterprise sürüm

Accelerator — Derinlemesine başvuru (GPU yardımcı hizmeti, KMS sağlayıcı fabrikası)

Bu sayfa, NextPDF\Enterprise\Accelerator genel hızlandırma yüzeyi için derinlemesine referanstır. KMS sağlayıcı yığınını — fabrikayı, sağlayıcı sözleşmesini, yerel sağlayıcıyı ve anahtar-meta verisi sonucunu — ve gömme ile vektör araması için GPU yardımcı hizmeti hizmetlerini kapsar. Parametreleri, varsayılanları, başarısızlık kiplerini ve anahtar-emanet duruşunu belirtir. İş akışı rehberliği için önce Accelerator yetenek sayfasını okuyun. Aynı ad alanındaki diğer simgeler başka yeteneklere aittir ve bu sayfanın kapsamı dışındadır.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) ile birlikte gelir ve Enterprise katman lisans zarfıyla etkinleşir. Bu yetkilendirmeye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans alın.

KMS sağlayıcısı çalışma zamanında seçilir; çağıran kod, somut sağlayıcıya değil, sağlayıcı sözleşmesine bağımlı olur. Gömme ve vektör-dizini hizmetleri, Core EmbeddingServiceInterface ve VectorIndexInterface sözleşmelerini uygular.

Terminal window
composer require nextpdf/enterprise:^3
SimgeParametrelerVarsayılan davranışDöndürürŞununla hata verir veya başarısız olurNotlar
KmsProviderFactory::fromEnvironmentyokSeçici değişkenin adlandırdığı sağlayıcıyı oluşturur; ayarlanmamış veya boş ise local seçilirKmsProviderInterfaceEksik bir ana anahtarda, kullanılamayan bir bulut sağlayıcısında veya bilinmeyen bir adda RuntimeExceptionStatik giriş noktası
KmsProviderFactory::createstring $providerType, array $config = []Adlandırılan sağlayıcıyı açık yapılandırmadan oluştururKmsProviderInterfacelocal boş olmayan bir encryption_key içermediğinde veya bilinmeyen bir adda RuntimeExceptionBu sürümde oluşturulabilen tek ad local’dir
KmsProviderInterface::getEncryptionKeystring $collectionIdKoleksiyon için geçerli anahtar meta verisini döndürürEncryptionKeyResultSağlayıcıya erişilemediğinde veya yanlış yapılandırıldığında RuntimeException (sözleşme)Yalnızca meta veri; asla ham anahtar baytı değil
KmsProviderInterface::rotateKeystring $collectionIdAnahtar sürümünü ilerletirEncryptionKeyResultRotasyon başarısız olduğunda RuntimeException (sözleşme)Rotasyon, çağırana yönelik bir yeniden-şifreleme sinyalidir
KmsProviderInterface::providerNameyokKurallı sağlayıcı adını bildirirstringBildirilmemişlocal, aws, gcp, azure, vault
LocalKmsProvider::__constructstring $encryptionKey (hassas)En az 64 hex karakterlik (32 bayt) bir hex ana anahtarı doğrularLocalKmsProviderKısa veya hex olmayan bir değerde InvalidArgumentExceptionHızlı-başarısızlık koruması; kendisi hiçbir türetme yapmaz
LocalKmsProvider::getEncryptionKeystring $collectionIdlocal:{collectionId}:v{version} üretir; sürüm varsayılan olarak 1’dirEncryptionKeyResultBildirilmemişAlgoritma etiketi AES-256-GCM
LocalKmsProvider::rotateKeystring $collectionIdSüreç içi sürüm sayacını artırırEncryptionKeyResultBildirilmemişSürüm durumu örnek başınadır
EncryptionKeyResult::__constructstring $keyId, int $keyVersion, string $algorithm = 'AES-256-GCM', string $provider = 'local'Değişmez meta veri değer nesnesiEncryptionKeyResultBildirilmemişAsla anahtar malzemesi taşımaz
GpuEmbeddingService::embedstring $textbatchEmbed’e devreder ve sıfırıncı öğeyi döndürürlist<float>batchEmbed ile aynı1024 boyutlu vektör
GpuEmbeddingService::batchEmbedarray $textsToplu isteği yardımcı hizmette gömerlist<list<float>>Boş bir toplu istekte InvalidArgumentException; yardımcı hizmete erişilemediğinde SpectrumNotAvailableException; başarısız, bozuk veya sayısı uyuşmayan bir yanıtta SpectrumApiExceptionAsla kısmi sonuç döndürmez
GpuEmbeddingService::getDimensionyok1024 döndürürintBildirilmemişSabit
GpuEmbeddingService::getModelNameyokmultilingual-e5-large döndürürstringBildirilmemişSabit
GpuVectorIndex::__constructSpectrumClient $client, string $collectionId = 'default'Tutamacı tek bir koleksiyona bağlarGpuVectorIndexBildirilmemişKoleksiyon tanımlayıcısı başına bir tutamaç
GpuVectorIndex::buildarray $vectors, array $idsKoleksiyon dizinini yardımcı hizmette oluştururvoidBoş bir toplu istekte veya uzunluk uyuşmazlığında InvalidArgumentException; erişilemediğinde SpectrumNotAvailableException; beklenmeyen bir oluşturma yanıtında SpectrumApiExceptionYeniden oluşturma dizini değiştirir
GpuVectorIndex::searcharray $queryVector, int $topK = 10Sıralanmış en yakın komşu aramasılist<VectorSearchResult>Erişilemediğinde SpectrumNotAvailableException; bozuk bir yanıt gövdesinde JsonExceptionSonuç meta verisinde isabet başına sıra
GpuVectorIndex::deletearray $idsHer zaman reddedervoid (bildirilmiş)Her zaman: SpectrumApiException (uygulanmamış)Oluşturulan dizin değişmezdir; bunun yerine yeniden oluşturun
GpuVectorIndex::countyokKoleksiyon toplamını yardımcı hizmetten okurintİstisna atmaz; herhangi bir hata 0 döndürür0 belirsizdir: boş ya da erişilemez
final class KmsProviderFactory
{
public static function fromEnvironment(): KmsProviderInterface
public static function create(string $providerType, array $config = []): KmsProviderInterface
}
interface KmsProviderInterface
{
public function getEncryptionKey(string $collectionId): EncryptionKeyResult;
public function rotateKey(string $collectionId): EncryptionKeyResult;
public function providerName(): string;
}
final class LocalKmsProvider implements KmsProviderInterface
{
public function __construct(
#[SensitiveParameter]
private readonly string $encryptionKey,
)
}
final readonly class EncryptionKeyResult
{
public function __construct(
public string $keyId,
public int $keyVersion,
public string $algorithm = 'AES-256-GCM',
public string $provider = 'local',
)
}
final class GpuEmbeddingService 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 GpuVectorIndex implements VectorIndexInterface
{
public function __construct(
private readonly SpectrumClient $client,
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
}
AyarTüketiciAnlam
SPECTRUM_KMS_PROVIDERfromEnvironment()Sağlayıcı seçici. Ayarlanmamış veya boş ise local’e çözümlenir.
SPECTRUM_ENCRYPTION_KEYlocal sağlayıcı yoluHex ile kodlanmış ana anahtar; en az 64 hex karakter (32 bayt). Yardımcı hizmetle paylaşılır.
encryption_keycreate('local', [...])Açık ana anahtar; aynı biçim ve doğrulama.

KmsProviderFactory::fromEnvironment, seçici değişkeni okur ve varsayılan olarak local’i kullanır. Bulut sağlayıcı adları aws, gcp, azure ve vault tanınır ancak bu sürümde oluşturulamaz. aws seçmek, gereken aws/aws-sdk-php paketini adlandıran türlenmiş bir hata yükseltir; diğer üçü tümleştirmeyi uygulanmamış olarak bildirir. Bilinmeyen bir ad, desteklenen adları listeleyen türlenmiş bir hata yükseltir. KmsProviderFactory::create, açık bir sağlayıcı adını ve bir yapılandırma haritasını kabul eder; oluşturduğu tek ad local’dir.

Bir sağlayıcı değişmez anahtar meta verisi döndürür: bir anahtar tanımlayıcısı, monoton olarak artan bir anahtar sürümü, algoritma etiketi ve sağlayıcı adı. Asla ham anahtar baytları döndürmez, bu yüzden bir meta veri sızıntısı anahtar malzemesini açığa çıkarmaz. Yerel sağlayıcı, görevleri accelerator yardımcı hizmetiyle paylaşır. PHP sınıfı, oluşturma sırasında ana gizi doğrular ve local:{collectionId}:v{version} biçiminde kararlı, koleksiyon kapsamlı bir anahtar kimliği üretir. Yardımcı hizmet, HKDF-SHA256 türetmesini ve AES-256-GCM şifrelemesini gerçekleştirir; koleksiyon tanımlayıcısı ve sürümü alan ayırıcı olarak kullanarak koleksiyon başına ayrı bir 32 baytlık veri-şifreleme anahtarı türetir. Her iki taraf da yapılandırılmış aynı ana gizi okur. Hiçbir harici KMS hizmetiyle iletişim kurulmaz; anahtar işleme dağıtımın içinde kalır. Anahtar sürümü ve yaşam döngüsü modeli NIST SP 800-57 Part 1 Rev.5 §4’ü izler.

Bir rotasyon çağrısı anahtar sürümünü ilerletir ve yeni meta veriyi döndürür. Çağıran, koleksiyon verisini yeni sürümle yeniden şifreler; sağlayıcı kendisi hiçbir şeyi yeniden şifrelemez.

Anahtar güvenliği; KMS’ye veya ana-anahtar gizine, dağıtıma ve operatöre bağlıdır — yalnızca NextPDF Enterprise’a değil. Operatör; ana-anahtar sağlamaya, giz depolamaya, KMS yapılandırmasına ve rotasyon zamanlamasına sahiptir. Anahtar-koruması sorumluluğu NIST SP 800-57 Part 1 Rev.5 §5.5.2’yi izler.

GpuEmbeddingService, Core gömme sözleşmesini uygular ve yardımcı hizmete devreder. Yardımcı hizmet, kullanılabilir olduğunda gömme modelini bir GPU üzerinde çalıştırır ve aksi takdirde CPU’ya geri döner; yanıt meta verisini GPU’dan bozulmuş olarak işaretler. Vektör biçimi her iki durumda da aynıdır. Model (yaklaşık 1.3 GB) ilk istekte tembel biçimde indirilir ve yüklenir. Toplu istek semantiği ya hep ya hiçtir: öğe başına bir hata, bozuk bir vektör veya sayı uyuşmazlığı, kısmi sonuç döndürmek yerine türlenmiş bir hata yükseltir.

GpuVectorIndex, Core vektör-dizini sözleşmesini uygular ve bir tutamacı tek bir koleksiyon tanımlayıcısına bağlar. build, dizini yardımcı hizmette oluşturur; yardımcı hizmet, kullanılabilir olduğunda bir GPU dizini, aksi takdirde bir CPU dizini kullanır. Dizin bir kez oluşturulduktan sonra değişmezdir: delete her zaman türlenmiş bir uygulanmamış hatasıyla reddeder ve kaldırma bir yeniden oluşturma gerektirir. search, her sonucun meta verisinde bir tabanlı sıra ile sıralanmış isabetler döndürür. count, koleksiyon toplamını yardımcı hizmetten ister ve herhangi bir hatada istisna yükseltmek yerine 0 bildirir.

  • Ana anahtar, hex’ten en az 32 bayta çözümlenmelidir. Daha kısa veya hex olmayan bir değer, herhangi bir yardımcı hizmet çağrısından önce, oluşturma sırasında InvalidArgumentException yükseltir.
  • Ayarlanmamış veya boş bir seçici değişken local’e çözümlenir; fabrika asla başka bir sağlayıcı tahmin etmez.
  • local yolunda ana-anahtar değişkeni olmadan fromEnvironment, eksik değişkeni adlandıran türlenmiş bir hata yükseltir.
  • Boş olmayan bir encryption_key girdisi olmadan create('local', [...]), eksik girdiyi adlandıran türlenmiş bir hata yükseltir.
  • Anahtar-sürümü durumu süreç içidir ve sağlayıcı örneği başınadır. Yeni bir süreç, rotasyon yeniden çalışana kadar sürüm 1’i gözlemler. Rotasyon sonuçlarını, sağlayıcı durumuna güvenerek değil, veriyi yeniden şifreleyerek kalıcılaştırın.
  • Boş bir gömme toplu isteği InvalidArgumentException yükseltir; yardımcı hizmetle iletişim kurulmaz.
  • Yardımcı hizmet kullanılabilirliği çağrı başına yoklanır. Erişilemeyen bir yardımcı hizmet SpectrumNotAvailableException yükseltir; hizmetler asla sessizce başarısız olmaz.
  • Döndürülen bir gömme vektörünün içindeki sayısal olmayan bir bileşen 0.0’a zorlanır; eksik veya dizi olmayan bir vektör SpectrumApiException yükseltir.
  • İlk gömme isteği, tek seferlik model indirme ve yükleme maliyetini öder; o zaman aşımını ayrı boyutlandırın.
  • build ve search, yardımcı hizmet yanıtını katı biçimde çözer; bozuk bir gövde JsonException yükseltir. count her hatayı yutar ve 0 döndürür.
  • Tanımlayıcısı veya puanı eksik bir arama isabeti, toplu isteği başarısız kılmak yerine boş bir dizeye ve 0.0’a varsayılır.
  • Yardımcı hizmet hata kodları ve istisna hiyerarşisi Accelerator hata referansında kataloglanmıştır.

Yerel anahtar yolu, türetme için HKDF-SHA256 ve şifreleme için AES-256-GCM kullanır; yardımcı hizmet her ikisini de yürütür. Anahtar meta verisinde kaydedilen algoritma etiketi AES-256-GCM’dir. Dağıtım FIPS-doğrulamalı bir kriptografik sağlayıcıya karşı çalıştığında, bu ilkeller o doğrulanmış sınırda çalışır. AES-GCM kullanımı, NIST SP 800-38D §5 uyarınca anahtar başına benzersiz bir başlatma vektörü gerektirir.

NextPDF Enterprise, FIPS-doğrulamalı bir kriptografik modül değildir ve hiçbir FIPS sertifikasyon iddiasında bulunmaz. Yalnızca FIPS-doğrulamalı bir kriptografik sağlayıcı veya FIPS-doğrulamalı bir KMS ile yapılandırıldığında FIPS-uyumlu bir kipte çalışır. Bu depoda hiçbir FIPS sertifikasyon yapıtı yoktur.

İddiaStandartMadde
Anahtar sürümü ve yaşam döngüsü modeli, anahtar-durumu rehberliğini izler.NIST SP 800-57 Part 1 Rev.5§4
Anahtar-koruması ve emanet sorumluluğu, anahtar sahibine ve operatöre aittir.NIST SP 800-57 Part 1 Rev.5§5.5.2
AES-GCM, anahtar başına benzersiz bir başlatma vektörü gerektirir.NIST SP 800-38D§5

Tüm maddeler başka sözcüklerle anlatılmıştır; NextPDF normatif metni yeniden üretmez. NextPDF hiçbir sertifikasyon iddiasında bulunmaz. Anılan maddelerle uyum, bir sertifikasyon değil, bir yetenek beyanıdır. Bu sayfa anahtar yönetimini ilgilendirir; FIPS-modu beyanı, bir hukuki görüş değil, bir uyumluluk beyanıdır. Kendi uygunluk ve hukuk danışmanlarınıza başvurun.

  • Modül kaynağı @since 2.1.0 taşır; bu referans, yüzeyi nextpdf/enterprise 3.1.0’da yayımlandığı şekliyle belgeler.
  • Tüm sınıflar final’dir; EncryptionKeyResult final readonly’dir. Değiştirmek yerine yeni örnekler oluşturun.
  • Ana anahtar, hassas bir oluşturucu parametresidir (#[SensitiveParameter]); PHP onu yığın izlerinden çıkarır. Onu uygulama günlüklerinden ve yapılandırma dökümlerinden uzak tutun.
  • SpectrumClient, VectorSearchResult ve EmbeddingServiceInterface ile VectorIndexInterface sözleşmeleri NextPDF Core’dan gelir; çağıran, yardımcı hizmet istemcisini oluşturur ve sağlar.
  • NextPDF\Enterprise\Accelerator ad alanı ayrıca toplu boşaltma motorlarını ve getirme-koleksiyonu ile OCR çıkarma yığınlarını da taşır; bu yüzeyler bu sayfanın kapsamı dışındadır.
  • Dahilî mekanizma ayrıntısı, kaynak deposunun dahilî belgelerinde kalır ve bu kılavuzun kapsamı dışındadır.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahilî ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.