<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FAISS on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/faiss/</link><description>Recent content in FAISS on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 17 Aug 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/faiss/feed.xml" rel="self" type="application/rss+xml"/><item><title>Hugging Face 實戰（五）：端到端實戰 — 打造一個完整的 RAG 客服系統</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/hugging-face-part5-e2e-llm-app-zh/</link><pubDate>Mon, 17 Aug 2026 09:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/hugging-face-part5-e2e-llm-app-zh/</guid><description>大多數 RAG 教學給你的是 30 行的 demo：切分、嵌入、檢索、丟給 LLM。 正確答案是：那 30 行在真實資料上的正確率大約 55%，而讓它變成 88% 的東西全在那 30 行之外。 這一篇不講概念，直接把一個能上線的系統從頭寫完——包含所有讓它「真的能用」的細節。
這是系列最後一篇。 我們把前四篇的東西組裝成一個完整專案：用 Hugging Face 的模型與工具，做一個繁中的產品客服問答系統。
一、要建的系統 1.1 需求 功能需求 ├─ 回答關於產品文件的問題，並附上引用來源 ├─ 文件外的問題要明確拒答，不能編造 ├─ 支援多輪對話（能理解「那它呢？」這種指代） └─ 串流回應 非功能需求 ├─ P95 首 token 時間 &amp;lt; 800 ms ├─ 支援 30 並發 ├─ 文件更新後 10 分鐘內生效 ├─ 每次回答可追溯（問題、檢索到的片段、生成結果、耗時） └─ 資料不出自己的機房 最後一項排除了所有外部 API，所以整套都用開源模型自架——這正是 Hugging Face 生態的主場。
1.2 完整架構 ┌──────────────────────────────────────────────────────────────────────┐ │ 離線索引管線 │ │ │ │ ┌────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │ │ │ 文件源 │──▶│ 解析 │──▶│ 切分 │──▶│ 嵌入 bge-m3 │ │ │ │ md/pdf │ │ 去雜訊 │ │ 語意邊界 │ │ 1024 維 │ │ │ └────────┘ └──────────┘ └──────────┘ └─────────┬──────────┘ │ │ ▼ │ │ ┌──────────────────────────────────┐ │ │ │ FAISS 索引 + BM25 索引 + 中繼資料 │ │ │ └──────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────┘ │ ════════════════════════════════════════╪══════════════════════════════ ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ 線上查詢管線 │ │ │ │ 使用者提問 │ │ │ │ │ ▼ │ │ ┌──────────────┐ 多輪時把「那它呢」改寫成完整問題 │ │ │ 問題改寫 │ │ │ └──────┬───────┘ │ │ ▼ │ │ ┌─────────────────────────────┐ │ │ │ 混合檢索 │ │ │ │ ┌───────────┐ ┌──────────┐ │ 向量抓語意、BM25 抓精確字串 │ │ │ │ 向量 top20│ │ BM25 top20│ │ RRF 融合 │ │ │ └─────┬─────┘ └────┬─────┘ │ │ │ │ └─────┬──────┘ │ │ │ └──────────────┼──────────────┘ │ │ ▼ │ │ ┌──────────────────────────┐ 把 40 個候選精排成 5 個 │ │ │ Reranker (bge-reranker) │ 這一步通常帶來 +12–20pt 的正確率 │ │ └──────────┬───────────────┘ │ │ ▼ │ │ ┌──────────────────────────┐ 相關度不足 → 直接拒答，不進 LLM │ │ │ 相關度閘門 │ │ │ └──────────┬───────────────┘ │ │ ▼ │ │ ┌──────────────────────────┐ │ │ │ Prompt 組裝（含引用編號） │ │ │ └──────────┬───────────────┘ │ │ ▼ │ │ ┌──────────────────────────┐ │ │ │ vLLM 生成（串流） │ │ │ └──────────┬───────────────┘ │ │ ▼ │ │ ┌──────────────────────────┐ │ │ │ 引用驗證 + 記錄追蹤 │ │ │ └──────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────┘ 1.</description></item></channel></rss>