跳轉到

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 向量排名:

Final Score = Σ [ 1 / (k + rank_BM25) + 1 / (k + rank_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