RAG 管線概覽¶
NextPDF Enterprise 提供完整的 PDF → RAG 管線,讓您能將 PDF 文件集合轉換為可查詢的向量知識庫,供大型語言模型(LLM)進行 Retrieval-Augmented Generation(RAG)。
什麼是 PDF RAG?¶
RAG(Retrieval-Augmented Generation)是一種讓 LLM 能「查詢自訂知識庫」的架構模式:
- 文件預處理:將 PDF 分割為語意塊(Chunks)
- 向量化:將每個 Chunk 轉換為高維浮點向量(Embedding)
- 索引:將向量存入向量資料庫
- 查詢:使用者提問 → 向量化查詢 → 找出最相關的 Chunks
- 生成:將相關 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 範例:
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頁,服務政策手冊]」引用,大幅提升答案的可信度。
參見¶
- RAG 使用案例 — 各行業的 RAG 應用場景
- Prisma Enterprise API —
/v1/rag/*端點完整規格 - Enterprise MCP 工具 —
embed_documents與semantic_search
Commercial License
This feature requires a commercial license. Contact our team for pricing and deployment support.
Contact Sales