تخطَّ إلى المحتوى
getnextpdf.com

Pro الإصدار

أداة التسريع — مرجع متعمّق

هذه الصفحة هي المرجع المتعمّق لسطح التسريع العام في NextPDF\Pro\Accelerator. وتغطّي مصنع المزوّد، وأداة تحسين الدُّفعات المُسرَّعة، وغلاف أداة الفروق، وخدمات المُرافِق على وحدة المعالجة المركزية للتضمين والبحث المتّجهي. وتذكر المعاملات، والقيم الافتراضية، وأوضاع الإخفاق، ودلالات الرجوع الاحتياطي. اقرأ صفحة قدرة أداة التسريع أولًا للإرشاد حول سير العمل.

تُشحَن هذه القدرة في ⁨NextPDF Pro⁩ (nextpdf/pro) وتُفعَّل بمظروف ترخيص من فئة ⁨Pro⁩. والنشر الذي يفتقر إلى ذلك الاستحقاق لا يُحمِّل أصناف القدرة. قارِن الإصدارات واحصل على ترخيص.

ليس لأداة التسريع علم ترخيص لكل ميزة. تُشحَن الشيفرة مع إصدار ⁨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 واحدة لكل مزوّد
ProAcceleratorProvider::vectorIndexstring $collectionId = 'default'يعيد مقبض فهرس جديدًا مربوطًا بالمجموعةVectorIndexInterfaceلا شيء مُعلَنغير مُذكَّر؛ مقبض واحد لكل استدعاء
ProAcceleratorProvider::optimizerلا شيءيعيد أداة التحسين المُسرَّعة المُذكَّرةAcceleratedOptimizerلا شيء مُعلَنتُنشَأ بعميل المزوّد
ProAcceleratorProvider::differلا شيءيعيد غلاف أداة الفروق المُذكَّرAcceleratedDifferلا شيء مُعلَنيُنشَأ بعميل المزوّد
AcceleratedOptimizer::__construct?SpectrumClient $spectrum = null، OptimizationLevel $level = OptimizationLevel::Balanced، ?LoggerInterface $logger = nullيغلّف PdfOptimizer في ⁨PHP⁩ عند المستوى المُعطىAcceleratedOptimizerلا شيء مُعلَنعميل فارغ يختار مسار ⁨PHP⁩؛ ومُسجِّل فارغ يختار NullLogger
AcceleratedOptimizer::optimizeBatcharray<string, string> $documentsيحلّل كل مستند؛ ويُفرِّغ عمل الصور إلى المُرافِق عند إمكان الوصولBatchResultInterfaceSpectrumApiException SPEC-SEC-001 (HTTP 413) على دُفعة تتجاوز الحدّ؛ وعلامات خطأ لكل عنصر في نتيجة الرجوع الاحتياطيإخفاقات النقل بعد القبول تتدهور إلى مسار ⁨PHP⁩
AcceleratedDiffer::__construct?SpectrumClient $spectrum = nullيحتفظ بالعميل الاختياري للتوافق المستقبليAcceleratedDifferلا شيء مُعلَنالعميل غير مُستخدَم في هذا الإصدار
AcceleratedDiffer::comparestring $sourcePdf، string $targetPdfيقارن مستندين بالكامل في ⁨PHP⁩DiffResultكما في PdfDiffer بإصدار ⁨Pro⁩لا يُصدَر أي طلب مُرافِق في هذا الإصدار
AcceleratedDiffer::isSpectrumWiredلا شيءيُبلِّغ عمّا إذا حُقِن عميل مُرافِقboolلا شيء مُعلَنحالة التوصيل فقط؛ لا يُصدر أي طلب
CpuEmbeddingService::embedstring $textيفوّض إلى batchEmbed ويعيد العنصر صفرlist<float>كما في batchEmbedمتّجه بـ384 بُعدًا
CpuEmbeddingService::batchEmbedarray $textsيُضمِّن الدُّفعة على المُرافِقlist<list<float>>InvalidArgumentException على دُفعة فارغة؛ وSpectrumNotAvailableException عند تعذّر الوصول؛ وSpectrumApiException على استجابة فاشلة أو مشوَّهة أو غير متطابقة العددلا يعيد نتائج جزئية أبدًا
CpuEmbeddingService::getDimensionلا شيءيعيد 384intلا شيء مُعلَنثابت
CpuEmbeddingService::getModelNameلا شيءيعيد all-MiniLM-L6-v2stringلا شيء مُعلَنثابت
CpuVectorIndex::__constructSpectrumClient $client، string $collectionId = 'default'يربط المقبض بمجموعة واحدةCpuVectorIndexلا شيء مُعلَنمقبض واحد لكل مُعرِّف مجموعة
CpuVectorIndex::buildarray $vectors، array $idsيبني فهرس المجموعة على المُرافِقvoidInvalidArgumentException على عدم تطابق الأطوال؛ و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لا شيءيقرأ إجمالي المجموعة عبر تحقّق ذي أبعادintSpectrumNotAvailableException عند تعذّر الوصول؛ و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() من إمكان الوصول إلى المُرافِق عبر SpectrumClient المحقون من ⁨Core⁩.

يعيد optimizeBatch نتيجة دُفعة مفهرسة بمُعرِّفات مستندات المُستدعِي. وحين يمكن الوصول إلى المُرافِق، يُتحقَّق من الحمولة الإجمالية مقابل ميزانية العميل قبل أي تخزين مؤقت أو رفع. وتفشل الدُّفعة المتجاوزة للحدّ بإغلاق آمن مع SpectrumApiException SPEC-SEC-001 (⁨HTTP⁩ 413)؛ ولا تتدهور أبدًا إلى مسار ⁨PHP⁩. وتُرسَل الدُّفعة المقبولة إلى المُرافِق لعمل الصور المتوازي.

وأي إخفاق في النقل أو المصادقة أو تحليل الاستجابة بعد القبول يتدهور إلى أداة تحسين ⁨PHP⁩ التي تحلّل كل مستند بالتسلسل. والتدهور قابل للرصد مرتين: تُبلِّغ البيانات الوصفية للنتيجة عن المحرّك php_fallback مع عتاد مُلخَّص cpu، ويُصدَر تحذير ⁨PSR-3⁩ تحت اسم الحدث spectrum.optimize.fallback. ويحمل التحذير صنف الاستثناء وعدد المستندات فقط؛ ولا تُسجَّل أي وحدات بايت من المستندات. وفي نتيجة الرجوع الاحتياطي، يُنتِج إخفاق تحليل مستند عنصرًا بحالة خطأ ورمز SPEC-PARSE-001؛ وتكتمل بقية مستندات الدُّفعة مع ذلك.

ومستوى التحسين الافتراضي هو ⁨Balanced⁩. وحقول نتيجة كل عنصر هي original_bytes وoptimized_bytes وobjects_removed وimages_before وimages_after وsavings_percent وprocessing_time_ms.

يعمل compare بالكامل في ⁨PHP⁩ عبر PdfDiffer بإصدار ⁨Pro⁩: تحليل البنية، واستخراج النص، وخوارزمية الفروق. ولا يُصدَر أي طلب مُرافِق في هذا الإصدار. ولا يقبل عقد أداة الفروق إلا سلاسل ⁨PDF⁩ الخام، فلا يمكن استهلاك نتيجة تحليل من المُرافِق؛ ويضيف التفريغ كلفة من دون فائدة. ويُحتفَظ بعميل محقون لميزة تفريغ تحليل مستقبلية. ويكشف isSpectrumWired() حالة التوصيل من دون إصدار طلب.

التضمين على وحدة المعالجة المركزية

قسم بعنوان «التضمين على وحدة المعالجة المركزية»

يفوّض embed إلى batchEmbed([$text]) ويعيد العنصر صفر. ويثير batchEmbed([]) استثناء InvalidArgumentException قبل الاتصال بالمُرافِق. ويثير المُرافِق المتعذّر الوصول استثناء SpectrumNotAvailableException. ودلالات الدُّفعة هي الكل أو لا شيء: إخفاق عنصر، أو متّجه مفقود أو مشوَّه، أو عدم تطابق العدد يثير SpectrumApiException (تحمل إخفاقات شكل البروتوكول الرمز SPEC-IO-001) بدلًا من إعادة متّجهات جزئية. ويُحوَّل أي مُكوِّن غير عددي داخل متّجه مُعاد إلى 0.0. ويعيد getDimension القيمة 384؛ ويعيد getModelName القيمة all-MiniLM-L6-v2. ويُنزِّل المُرافِق نموذج ⁨ONNX⁩ ويُحمِّله بتكاسل عند الطلب الأول.

البحث المتّجهي على وحدة المعالجة المركزية

قسم بعنوان «البحث المتّجهي على وحدة المعالجة المركزية»

يربط كل مقبض مُعرِّف مجموعة واحدًا؛ وتُطابَق كل مجموعة بفهرس ⁨HNSW⁩ منفصل في الذاكرة داخل المُرافِق. ويتطلّب build قائمتَي متّجهات ومُعرِّفات متساويتَي الطول ويثير InvalidArgumentException خلاف ذلك؛ ويعود المدخل الفارغ من دون استدعاء المُرافِق. ويعيد search إصابات مُرتَّبة برتبة تبدأ من واحد في البيانات الوصفية لكل نتيجة. ويثير مظروف خطأ داخل النطاق استثناء SpectrumApiException؛ ويُطابَق المظروف الذي بلا رمز مع SPEC-INDEX-003. ويرفض delete دائمًا مع SpectrumApiException SPEC-INDEX-004 (⁨HTTP⁩ 501، غير قابل لإعادة المحاولة) لأن ⁨HNSW⁩ لا يدعم الحذف لكل متّجه؛ أعِد بناء الفهرس بدلًا من ذلك.

و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 داخليًا فقط لتحقّق العدّ؛ ومرِّر topK موجبًا للبحوث الحقيقية.
  • يدفع طلب التضمين الأول كلفة تنزيل النموذج وتحميله لمرة واحدة؛ فحدِّد مهلة ذلك على حدة.
  • تُفهرَس هرمية استثناءات المُرافِق وعائلات رموز الأخطاء في مرجع أخطاء أداة التسريع.
  • لا تُجري هذه الوحدة أي عمليات تشفير ولا تحدّد أي سلوك خاصّ بـ⁨FIPS⁩. وتحكم وحدتا التوقيع والامتثال وضعية وضع ⁨FIPS⁩، لا هنا.

تفوّض أداة التسريع العمل المؤثّر في التنسيق إلى وحدتَي أداة التحسين والفروق ولا تؤكّد أي مطابقة تنسيق مستقلّة. والمطابقة للعمل المُفوَّض موثَّقة في صفحتَي مرجع أداة التحسين والفروق. ولا تدّعي هذه الصفحة أي مُعرِّفات بنود خارجية؛ وكل عبارة فيها مؤسَّسة على مصدر المنتج. ⁨NextPDF⁩ لا تُقدِّم أي ادّعاء اعتماد.

  • يحمل مصدر الوحدة @since 2.1.0؛ ويوثّق هذا المرجع السطح كما شُحِن في nextpdf/pro 3.1.0.
  • جميع الأصناف final وتستخدم الحقن عبر الباني؛ فأنشئ نُسَخًا جديدة بدلًا من التغيير في مكانها.
  • تأتي SpectrumClient وVectorSearchResult وBatchResultInterface وعقدا EmbeddingServiceInterface وVectorIndexInterface من ⁨NextPDF Core⁩؛ ويُنشئ المُستدعِي عميل المُرافِق ويُوفِّره.
  • تأتي OptimizationLevel وPdfOptimizer وPdfDiffer من وحدتَي أداة التحسين والفروق في ⁨Pro⁩؛ ودلالاتها موثَّقة في صفحتَي المرجع تلك.
  • تتشارك خدمة التضمين وفهرس المتّجهات بُعد 384. فابنِ متّجهات الفهرس على البُعد نفسه للتضمينات التي تستعلمها.
  • تبقى تفاصيل الآلية الداخلية في التوثيق الداخلي لمستودع المصدر وهي خارج نطاق هذا الدليل.

توثّق هذه الصفحة السلوك القابل للرصد خارجيًا وسطح الواجهة البرمجية العام المدعوم فقط. ومسارات فضاء الأسماء الداخلية، والأصناف المساعِدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر خارج النطاق.