Pro รุ่น
Accelerator
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”Accelerator ถ่ายภาระการบีบอัดภาพใหม่แบบ batch การแยกวิเคราะห์ PDF และการฝังข้อความ ไปยัง CPU sidecar ที่อยู่ร่วมตำแหน่ง เมื่อ sidecar เข้าถึงไม่ได้ ทุกการดำเนินการจะถอยกลับไปใช้เส้นทาง PHP ภายในกระบวนการ ดังนั้นผู้เรียกใช้จึงสังเกตเห็นผลลัพธ์เดียวกันไม่ว่าทางใด
ความพร้อมใช้งานและการอนุญาตใช้สิทธิ์
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาตใช้สิทธิ์”ความสามารถนี้จัดส่งใน NextPDF Pro ( nextpdf/pro ) และเปิดใช้งานด้วยซองสิทธิ์การใช้งานระดับชั้น Pro การติดตั้งที่ไม่มีสิทธิ์ดังกล่าวจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอรับสิทธิ์การใช้งาน
Accelerator ไม่มีแฟล็กต่อฟีเจอร์แยกต่างหาก เส้นทางที่เร่งความเร็วถูกเลือกในขณะรันไทม์ด้วยการตรวจสอบความสามารถในการเข้าถึง sidecar ( ProAcceleratorProvider::isAvailable() ) เมื่อ sidecar เข้าถึงไม่ได้ เส้นทาง PHP ภายในกระบวนการจะรันแทน
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/pro:^3แพ็กเกจ Premium ติดตั้งโค้ด nextpdf/pro ภายใต้ namespace NextPDF\Pro\Accelerator เมทาแพ็กเกจ nextpdf/premium ยังติดตั้งความสามารถของ Enterprise ด้วย ตัว Accelerator เองเป็นฟีเจอร์ระดับชั้น Pro
ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ProAcceleratorProvider คือจุดเริ่มต้น มันสร้างบริการสี่อย่างแบบ lazy:
- accelerated optimizer ที่ห่อหุ้ม
PdfOptimizerของ Pro และถ่ายภาระงานภาพแบบ batch ไปยัง sidecar - accelerated differ ที่ห่อหุ้ม
PdfDifferของ Pro โดย sidecar ทำการแยกวิเคราะห์โครงสร้างแบบขนานในขณะที่อัลกอริทึม diff เองรันใน PHP - CPU embedding service ที่คืนค่าเวกเตอร์ 384 มิติโดยใช้โมเดล all-MiniLM-L6-v2 ONNX ที่โฮสต์โดย sidecar
- CPU vector index ที่สร้างและค้นหาดัชนี HNSW ในหน่วยความจำที่ใช้ collection identifier เป็นคีย์
การออกแบบรักษาตรรกะโดเมนไว้ใน PHP sidecar ทำงานที่ขนานได้และผูกกับ CPU (การ transcode ภาพ การแยกวิเคราะห์หลายเอกสาร การอนุมาน ONNX การค้นหาเวกเตอร์) แต่ละเส้นทางที่เร่งความเร็วมี PHP fallback แบบ deterministic ที่ผลิตผลลัพธ์ที่เทียบเท่ากัน
เหตุใดจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานเช่นนี้”การตัดสินใจที่รับน้ำหนักคือความถูกต้องไม่เคยขึ้นอยู่กับ sidecar ตรรกะโดเมนอยู่ใน PHP sidecar ทำเพียงงานที่ขนานได้และผูกกับ CPU เท่านั้น optimizer และ differ ( AcceleratedOptimizer, AcceleratedDiffer ) รักษา PHP fallback แบบ deterministic ไว้ ดังนั้นการขาด sidecar เปลี่ยนเวลา ไม่ใช่ผลลัพธ์ มีเพียงสองการดำเนินการที่ไม่มีสิ่งเทียบเท่าใน PHP — CpuEmbeddingService และ CpuVectorIndex — ที่ล้มเหลวแบบปิด แทนที่จะลดระดับลง คำตอบที่ผิดแบบเงียบ ๆ ตรงนั้นจะแย่กว่าข้อผิดพลาดที่ชัดเจน การแยกดังกล่าวทำให้ throughput ปรับขนาดตามคอร์ของ sidecar ในขณะที่ผู้เรียกใช้คงเส้นทางโค้ดเดียวและขอบเขตความเชื่อถือเดียว
พื้นหลังการออกแบบ: การสร้างเอกสารปริมาณมาก
สัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”ProAcceleratorProvider::isAvailable()คืนค่าว่า sidecar ตอบสนองหรือไม่ ผู้เรียกใช้สามารถแยกสาขาตามนี้ได้ แต่ไม่จำเป็นต้องทำ คือ optimizer และ differ จะถอยกลับโดยอัตโนมัติembedding()->embed()คืนค่าเวกเตอร์ 384 องค์ประกอบหนึ่งตัวbatchEmbed()คืนค่าเวกเตอร์หนึ่งตัวต่ออินพุตและปฏิเสธรายการอินพุตที่ว่างเปล่าด้วยInvalidArgumentExceptionvectorIndex($collectionId)->build()กำหนดให้vectorsและidsต้องมีความยาวเท่ากันและถืออินพุตที่ว่างเปล่าเป็น no-opvectorIndex()->search($queryVector, $topK)คืนค่าผลลัพธ์ที่จัดอันดับdelete()ไม่รองรับสำหรับดัชนี HNSW และปฏิเสธการเรียก — ผู้เรียกใช้สร้างดัชนีใหม่แทน- บริการ embedding และ vector index ต้องการ sidecar มันยกข้อผิดพลาด “not available” แทนที่จะลดระดับลงอย่างเงียบ ๆ เพราะไม่มีสิ่งเทียบเท่าใน PHP สำหรับการอนุมาน ONNX หรือการค้นหา HNSW
- optimizer และ differ ไม่เคยยกข้อผิดพลาดเมื่อ sidecar ล้มเหลว มันลดระดับลงเป็นเส้นทาง PHP อย่างโปร่งใส
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”ต่อไปนี้สะท้อน public API ที่บันทึกไว้ ( ProAcceleratorProvider ) repository ไม่ได้มาพร้อมตัวอย่างที่รันได้สำหรับโมดูลนี้
use NextPDF\Pro\Accelerator\ProAcceleratorProvider;
$provider = new ProAcceleratorProvider($spectrumClient);
$result = $provider->optimizer()->optimizeBatch([ 'invoice-1' => $pdfBytesA, 'invoice-2' => $pdfBytesB,]);
foreach ($result->getItems() as $item) { // Per-document optimization outcome.}ตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”use NextPDF\Pro\Accelerator\ProAcceleratorProvider;
$provider = new ProAcceleratorProvider($spectrumClient);
if ($provider->isAvailable()) { $index = $provider->vectorIndex('contracts'); $index->build($vectors, $ids); $hits = $index->search($queryVector, topK: 10);} else { // No PHP equivalent for HNSW search: route to your own retrieval path // or surface a degraded-capability message.}ต่อสาย ProAcceleratorProvider ผ่าน container ของคุณเป็น singleton เพื่อให้อินสแตนซ์ของ optimizer และ differ ถูกนำกลับมาใช้ซ้ำ ให้ถือว่าการเรียก embedding และ vector-index ต้องการ sidecar
กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- vector index อยู่ในหน่วยความจำของกระบวนการ sidecar และใช้ collection identifier เป็นคีย์ การรีสตาร์ท sidecar ล้างดัชนีทั้งหมด ให้สร้างใหม่หลังการรีสตาร์ท
count()บน vector index คืนค่า0เมื่อ sidecar เข้าถึงไม่ได้ แทนที่จะยกข้อผิดพลาด- การเร่งความเร็วของ optimizer และ differ เป็นแบบ best-effort ข้อผิดพลาดของ sidecar กลางคันทำให้เกิดการถอยกลับอย่างเงียบสำหรับการเรียกนั้น ดังนั้นเวลา — ไม่ใช่ความถูกต้อง — จึงต่างกัน
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”การเร่งความเร็วมุ่งเป้าไปที่งาน batch ที่ผูกกับ CPU คือ การ transcode ภาพแบบขนาน การแยกวิเคราะห์หลายเอกสาร และการค้นหาเวกเตอร์ NextPDF ไม่ได้เผยแพร่ตัวคูณ throughput ที่ตายตัวในที่นี้ การเพิ่มขึ้นขึ้นอยู่กับส่วนผสมของเอกสาร ความหนาแน่นของภาพ จำนวนคอร์ของ sidecar และขนาด batch ให้วัดในสภาพแวดล้อมของคุณก่อนพึ่งพาตัวเลขที่เจาะจง PHP fallback เป็นแบบ single-threaded ตามการออกแบบ
บันทึกด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “บันทึกด้านความปลอดภัย”โมดูลนี้ส่งเอกสารและเวกเตอร์ไปยัง sidecar ที่อยู่ร่วมตำแหน่งผ่านการขนส่งที่กำหนดค่าไว้ ให้ถือ sidecar เป็นส่วนหนึ่งของขอบเขตความเชื่อถือของคุณและปรับใช้บน host เดียวกันหรือเซกเมนต์เครือข่ายส่วนตัว โมดูลตรวจสอบขนาดและรูปร่างของอินพุตก่อนการ dispatch มันไม่บันทึกเนื้อหาเอกสาร
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”โมดูลนี้ไม่ดำเนินงานความสอดคล้องของรูปแบบเอง มันมอบหมายการ optimize และ diff ให้กับโมดูล Optimizer และ Diff ของ Pro ดูโมดูลเหล่านั้นสำหรับการอ้างอิง ISO 32000-2 หลักฐานความสอดคล้องสำหรับหน้านี้มาจากสัญญาคลาสสาธารณะที่บันทึกไว้และ unit test ของมัน คลังข้อมูล RAG ไม่พร้อมใช้งานในเวลาเขียน ดังนั้นจึงไม่มีการอ้างตัวระบุข้อภายนอกในที่นี้
หมายเหตุขอบเขตของ Enterprise
หัวข้อที่มีชื่อว่า “หมายเหตุขอบเขตของ Enterprise”Enterprise ไม่เปลี่ยนพฤติกรรมของ Accelerator Enterprise เพิ่มฟีเจอร์ระดับชั้นสูงกว่าด้านการปฏิบัติตามข้อกำหนด การเก็บถาวร และวงจรชีวิตลายเซ็นที่บันทึกไว้ที่อื่น สิ่งเหล่านั้นอยู่นอกขอบเขตของโมดูลนี้และไม่จำเป็นต้องใช้ Accelerator
ทางเลือกสำรอง / ทางเลือกอื่นของ Core
หัวข้อที่มีชื่อว่า “ทางเลือกสำรอง / ทางเลือกอื่นของ Core”หากไม่มี Pro ให้ใช้การ optimize และ diff ภายในกระบวนการของ NextPDF Core เส้นทางที่เร่งความเร็วในโมดูลนี้ลดลงเป็นพฤติกรรม PHP เดียวกันเมื่อไม่มี sidecar
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้อธิบายเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว public API ที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าของ ticket อยู่นอกขอบเขต