<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multi-Query on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/multi-query/</link><description>Recent content in Multi-Query on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 30 Jun 2026 10:30:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/multi-query/feed.xml" rel="self" type="application/rss+xml"/><item><title>ChatPDF RAG 優化（二）：後端強化與進階 RAG —— 安全、資源邊界、多查詢擴展</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/chatpdf-rag-optimization-part2-backend-hardening-zh/</link><pubDate>Tue, 30 Jun 2026 10:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/chatpdf-rag-optimization-part2-backend-hardening-zh/</guid><description>多數 RAG 專案的生命週期:demo 驚艷 → 上線 → 第一個惡意上傳把記憶體吃爆 → 第一個含程式碼的 PDF 讓檢索掛掉 → 緊急修補。 這篇講的就是「在出事之前」把那些防線一次補齊。 核心不是新功能,而是把每一個「會出事的環節」都加上邊界、退路、與防呆。
一、為什麼 demo 跟 production 是兩回事 上一篇解決了 RAG 的品質核心:切塊與檢索。但品質好不等於能上線。PR #2 的主題是 hardening(強化)——把這套系統從「在我電腦上能跑」推到「面對真實使用者、惡意輸入、長時間運行都不會倒」。
它涵蓋兩條主線:
┌─────────────────────────────────────────────────────┐ │ 後端強化(165 測試,+30 新增) │ │ ├─ 安全:上傳驗證、輸入邊界、刪除順序、錯誤訊息淨化 │ │ ├─ 資源:檔案大小限制、BM25 LRU 快取、歷史視窗 │ │ └─ 進階 RAG:多查詢擴展、檢索評分、頁碼引用、去重 │ ├─────────────────────────────────────────────────────┤ │ 前端現代化(+10 Vitest 測試) │ │ ├─ 集中式 typed API client、Toast 通知 │ │ └─ 進階 RAG 設定面板、搜尋、暗色模式、匯出 │ └─────────────────────────────────────────────────────┘ 下面挑最有代表性的幾個防線拆解。</description></item></channel></rss>