跳轉到

RAG 管線概覽

NextPDF Enterprise 提供完整的 PDF → RAG 管線,讓您能將 PDF 文件集合轉換為可查詢的向量知識庫,供大型語言模型(LLM)進行 Retrieval-Augmented Generation(RAG)。


什麼是 PDF RAG?

RAG(Retrieval-Augmented Generation)是一種讓 LLM 能「查詢自訂知識庫」的架構模式:

  1. 文件預處理:將 PDF 分割為語意塊(Chunks)
  2. 向量化:將每個 Chunk 轉換為高維浮點向量(Embedding)
  3. 索引:將向量存入向量資料庫
  4. 查詢:使用者提問 → 向量化查詢 → 找出最相關的 Chunks
  5. 生成:將相關 Chunks 作為上下文傳入 LLM → 生成答案

NextPDF 的 RAG 管線針對 PDF 文件的結構特性進行了優化,能正確處理標題層次、表格、多欄版面與 CJK 文字。


管線架構

flowchart LR
    subgraph Input["PDF 輸入"]
        PDF1["PDF 文件 A"]
        PDF2["PDF 文件 B"]
        PDF3["PDF 文件 C"]
    end

    subgraph Prisma["Prisma Enterprise 處理層"]
        PARSE["PDF 解析\n(/v1/parse)"]
        CHUNK["語意分塊\n(/v1/rag/chunk)"]
        EMBED["向量嵌入\n(/v1/rag/embed)"]
    end

    subgraph VectorDB["向量資料庫"]
        QDRANT["Qdrant"]
        PINECONE["Pinecone"]
        PGVECTOR["pgvector"]
    end

    subgraph Query["查詢層"]
        QUESTION["使用者提問"]
        EMBED_Q["查詢向量化"]
        SEARCH["向量相似度搜尋\n(/v1/rag/search)"]
        RESULTS["最相關 Chunks"]
    end

    subgraph LLM["LLM 生成"]
        CONTEXT["Chunks + 提問 → Context"]
        GENERATE["LLM 生成答案"]
    end

    PDF1 & PDF2 & PDF3 --> PARSE
    PARSE --> CHUNK --> EMBED
    EMBED -->|"upsert"| QDRANT & PINECONE & PGVECTOR

    QUESTION --> EMBED_Q --> SEARCH
    QDRANT & PINECONE & PGVECTOR --> SEARCH
    SEARCH --> RESULTS --> CONTEXT --> GENERATE

核心元件說明

1. PDF 解析層

Prisma Enterprise 的 PDF 解析器不僅提取純文字,還保留: - 標題層次:識別 H1/H2/H3 結構,用於生成語意分塊的上下文路徑 - 閱讀順序:正確處理多欄版面,確保文字提取順序符合閱讀邏輯 - 表格結構:將表格轉換為 Markdown 格式,保留行列關係 - 頁面邊界:每個 Chunk 記錄來源頁碼,支援引用溯源 - CJK 支援:正確處理中日韓文字的分詞與語意邊界

2. 語意分塊策略

NextPDF 提供三種分塊策略:

策略 適用場景 優缺點
semantic(推薦) 一般文件、手冊、報告 品質最高,按段落語意切割
paragraph 結構清晰的文件 速度快,以段落為分界
fixed-size 需要精確控制 Chunk 大小 可能切斷語意,但 token 預測準確

語意分塊器會: - 識別自然語意邊界(段落、章節轉換) - 在 Chunk 之間保留 chunk_overlap 字元的重疊,確保邊界資訊不遺失 - 為每個 Chunk 生成包含標題路徑的「上下文前綴」(提升 RAG 準確度)

帶上下文前綴的 Chunk 範例

[上下文前綴] 第三章 > 退款政策 > 申請期限
[Chunk 內容] 退款申請須於購買日起 30 天內提出,逾期恕不受理。
             退款將於審核通過後 7 個工作日內退回原付款帳戶。

3. 向量嵌入模型

模型 向量維度 語言支援 適用場景
nextpdf-embed-v1(預設) 1,536 中/英/日/韓 + 多語言 一般用途
nextpdf-embed-legal-v1 1,536 中/英 法律文件(Beta)
openai-text-embedding-3-large 3,072 多語言 OpenAI API 整合
ollama/{model} 依模型 依模型 本地部署(隱私優先)

4. 向量資料庫整合

資料庫 連接方式 命名空間支援 推薦場景
Qdrant HTTP REST / gRPC ✓(Payload Filter) 自托管、高效能
Pinecone REST API ✓(Namespace) 全託管雲端
pgvector PostgreSQL 連接 ✓(WHERE 子句) 已有 PostgreSQL 基礎設施

快速開始(MCP 方式)

透過 NextPDF Connect MCP 工具,AI 助理可以直接建立 RAG 知識庫:

使用者:「把 docs/ 目錄下的所有 PDF 建立成知識庫,存入 Qdrant」

AI 助理執行:
1. embed_documents(索引所有 PDF)
2. semantic_search(測試查詢)
3. 回報索引結果

快速開始(PHP API 方式)

<?php

declare(strict_types=1);

use NextPDF\Enterprise\Rag\RagPipeline;
use NextPDF\Enterprise\Rag\VectorStore\QdrantAdapter;

// 建立 RAG 管線
$pipeline = new RagPipeline(
    vectorStore: new QdrantAdapter(
        endpoint: 'http://qdrant:6333',
        collection: 'knowledge-base',
    ),
    chunkingStrategy: 'semantic',
    maxChunkSize: 512,
    chunkOverlap: 64,
    embeddingModel: 'nextpdf-embed-v1',
);

// 索引 PDF 文件
$result = $pipeline->index(
    paths: ['/docs/manual-v3.pdf', '/docs/faq.pdf'],
    namespace: 'tenant-abc123',
);

// 語意搜尋
$results = $pipeline->search(
    query: '退款政策的申請期限是多久?',
    namespace: 'tenant-abc123',
    topK: 5,
    minScore: 0.7,
);

效能考量

文件規模 分塊策略 預估 Chunks 索引時間 查詢延遲 (P95)
10 份文件(100 頁) semantic ~250
100 份文件(1,000 頁) semantic ~2,500
1,000 份文件(10,000 頁) semantic ~25,000

引用溯源(Citation)

NextPDF RAG 管線的每個搜尋結果都附帶完整的引用元資料:

{
  "chunk_id": "manual-v3-chunk-0042",
  "score": 0.923,
  "text": "退款申請須於購買日起 30 天內提出...",
  "citation": {
    "document_path": "/docs/policy-manual.pdf",
    "document_title": "使用者服務政策手冊",
    "page": 15,
    "section_path": ["第三章 客戶服務政策", "3.2 退款政策", "3.2.1 申請期限"],
    "indexed_at": "2026-03-01T10:00:00Z"
  }
}

此設計讓 LLM 能在回答中提供精確的「[第15頁,服務政策手冊]」引用,大幅提升答案的可信度。


參見

Commercial License

This feature requires a commercial license. Contact our team for pricing and deployment support.

Contact Sales