AI RAG 管線總覽¶
NextPDF Enterprise 內建端對端的 RAG(Retrieval-Augmented Generation)管線,讓 PDF 文件成為 AI 應用的知識來源。從文件攝取、結構感知分塊、GPU 加速嵌入、到混合語意搜尋,整套管線在 NextPDF Enterprise 內完整實現。
管線架構¶
flowchart TD
subgraph Ingest["文件攝取管線"]
A[PDF 文件] --> B[結構解析]
B --> C[結構感知分塊]
C --> D[段落元資料標記]
end
subgraph Embed["嵌入層(GPU)"]
D --> E[mE5-large 模型]
E --> F[1024 維向量]
end
subgraph Index["索引層"]
F --> G[CAGRA GPU 索引]
F --> H[BM25 全文索引]
end
subgraph Query["查詢管線"]
I[自然語言查詢] --> J[查詢嵌入]
J --> K[ANN 向量搜尋]
I --> L[BM25 關鍵字搜尋]
K --> M[RRF 融合排序]
L --> M
M --> N[相關段落 + 引用]
end 關鍵元件¶
嵌入引擎¶
| 規格 | 值 |
|---|---|
| 模型 | intfloat/multilingual-e5-large(mE5-large) |
| 向量維度 | 1024 |
| 支援語言 | 100+ 語言(包含繁體中文) |
| 最大輸入長度 | 512 tokens |
| 運算後端 | CUDA 12+ / ROCm 6+(CPU fallback 可用) |
| 批次嵌入 p50(1000 segments) | |
| 批次嵌入 p99(1000 segments) |
CAGRA 向量索引¶
CAGRA(Compressed Approximate Graph-based Nearest-Neighbor Algorithm)是 NVIDIA RAPIDS cuVS 的 GPU 原生 ANN 索引,在十億級向量場景下提供最佳搜尋效能。
| 規格 | 值 |
|---|---|
| 索引類型 | CAGRA(GPU ANNS) |
| 距離度量 | Cosine Similarity |
| 建構速度(100K 向量) | |
| 查詢延遲 p50(1M 向量) | |
| Recall@10 |
混合搜尋(BM25 + ANN + RRF)¶
純向量搜尋有時會錯失精確術語匹配(如文件編號、法規條款)。NextPDF Enterprise 使用 RRF(Reciprocal Rank Fusion)融合 BM25 關鍵字排名與 ANN 向量排名:
其中 k = 60(標準 RRF 常數)。
API 端點概覽¶
| 端點 | 說明 | 詳細文件 |
|---|---|---|
POST /v1/rag/ingest | 攝取單份 PDF 文件 | ingest |
POST /v1/rag/ingest-chunks | 直接攝取預分塊段落 | ingest |
POST /v1/rag/query | 語意搜尋查詢 | search |
DELETE /v1/rag/documents/{id} | 移除文件及其向量 | ingest |
GET /v1/rag/index/stats | 索引統計資訊 | search |
多租戶向量隔離¶
每個租戶的向量儲存在獨立的命名空間,查詢時不跨租戶洩漏:
use NextPDF\Enterprise\AiRag\RagClient;
use NextPDF\Enterprise\MultiTenancy\TenantContext;
$context = TenantContext::for(tenantId: 'acme-corp-001');
$ragClient = RagClient::fromEnvironment()->withTenantContext($context);
// 所有操作自動限定在 acme-corp-001 的向量空間
$results = $ragClient->query('What is the refund policy?');
合規考量¶
在受監管產業部署 RAG 時,必須考量以下合規要求:
| 考量 | NextPDF Enterprise 提供 |
|---|---|
| PHI 不進入向量索引 | HipaaRagFilter:自動遮蔽 PHI 再嵌入 |
| 引用可追溯性 | 每個結果附帶頁碼、段落 ID、文件 ID |
| 資料保留 | 向量可隨原始文件刪除(GDPR 遺忘權) |
| 稽核日誌 | 所有查詢記錄於不可變稽核日誌 |
快速入門¶
# 啟動 Prisma Enterprise(含 GPU 支援)
docker run --gpus all \
-e PRISMA_LICENSE_KEY=$PRISMA_LICENSE_KEY \
-p 50051:50051 \
ghcr.io/nextpdf-labs/prisma-enterprise:latest
use NextPDF\Enterprise\AiRag\RagClient;
$client = RagClient::create(
endpoint: 'localhost:50051',
tlsCertPath: '/certs/client.crt',
tlsKeyPath: '/certs/client.key',
caCertPath: '/certs/ca.crt',
);
// 攝取文件
$client->ingest(
documentId: 'doc-001',
pdfBytes: file_get_contents('annual-report.pdf'),
);
// 查詢
$results = $client->query('What was the revenue in Q4 2024?');
foreach ($results->passages() as $passage) {
echo $passage->text();
echo ' [p.' . $passage->pageNumber() . ']';
}
PHP Compatibility
This example uses PHP 8.5 syntax. If your environment runs PHP 8.1 or 7.4, use NextPDF Backport for a backward-compatible build.
延伸閱讀¶
Commercial License
This feature requires a commercial license. Contact our team for pricing and deployment support.
Contact Sales