客服機器人把去年的定價頁面當成現況引用。分析 agent 引用了一篇已被撤回的部落格文章。兩個答案都自信、流暢、而且錯誤——因為兩個系統在查詢當下,都不知道什麼才是真的。
沒有 grounding 的 LLM 是 2026 年安靜的可靠度問題:它們很流暢,而流暢正是讓過期或捏造的答案危險的地方。Grounding——在查詢當下給模型可驗證、最新、有引用的資訊——從可有可無的加分項,變成了 agentic 應用的預設架構。問題是「grounding」現在橫跨四種截然不同的做法,從模型原生工具到第三方搜尋 API 再到自架 crawler,而網路上大部分的比較內容都是沒有成本資料、沒有失敗模式涵蓋的列表式文章。
這份指南涵蓋四選一決策——原生 grounding、搜尋 API、自架、混合——搭配每次查詢的成本數學、引用與 grounding check 的正式環境管線、以及那些會默默上線錯誤答案的失敗模式。
Grounding 在 2026 年代表什麼
重點:grounding 是資料新鮮度加上可稽核性——它不是「搜尋」,它是一層可驗證的資訊層。
Grounding 代表模型的答案是建立在它能秀給你看的資訊上:一個來源、一個引用、一次發生在查詢當下的檢索。三個屬性區分 grounded 系統與只是接上搜尋的系統:
- 新鮮度。 資料在被問到的時候檢索,而不是內建在訓練資料裡。如果檢索發生在現在,去年的定價頁面就不能被引用為現況。
- 引用。 答案帶著它的來源——而且來源是可驗證的,不是裝飾性的。
- Grounding check。 系統在上線前把答案對照檢索到的材料驗證,驗不過就拒絕或降級。
要消滅的誤解:「我們接了一個搜尋 API」不是 grounding。沒有引用、沒有新鮮度檢查、沒有拒絕路徑的搜尋 API,只是昂貴的上下文擴充器。
為什麼沒有 Grounding 的 LLM 在正式環境會失敗
重點:三類失敗——過期、捏造、無法驗證——而且每一類在 agentic 系統中都會層層放大。
- 過期。 任何對時間敏感的東西——定價、政策、事件、產品細節——在靜態模型上註定錯誤。答案自信地錯,這是最糟的一種。
- 帶著權威的捏造。 沒有 grounding 的模型編造來源就像編造事實一樣流暢——假 URL、聽起來合理、指向看似真實出版品的引用。本系列幻覺治理指南涵蓋完整框架;grounding 是它對事實查找類別的防範層。
- 無法驗證。 即使答案正確,沒有來源就無法稽核。對受監管或對客戶的輸出,「相信我們」不是合規姿態。
在 agentic 系統中層層放大的情況更糟:每一個錯誤的中間答案都會透過工具鏈傳播。有搜尋 grounding 的 agent 至少還有機會復原;沒有 grounding 的 agent 會自信地把錯誤相乘。
四選一比較:原生工具 vs 搜尋 API vs 自架 vs 混合
重點:這個選擇是成本-準確度-新鮮度三角——而對大多數團隊來說,原生工具加一個搜尋 API 就涵蓋 90% 的案例。
| 做法 | 例子 | 優勢 | 要注意的 |
|---|---|---|---|
| 原生 grounding | ChatGPT search、Claude web-search tool、Gemini grounding | 零整合、內建引用、供應商一致 | 供應商綁定、區域可用性、模型耦合 |
| 搜尋 API | Tavily、Exa、Perplexity、Brave、Firecrawl | 模型無關、新鮮、可控制查詢設計 | 每次查詢成本、品質依 API 而異、rate limit |
| 自架 crawler | 你自己的 index + crawl 管線 | 完全控制、資料主權 | 維運負擔、新鮮度管線、規模成本 |
| 混合 | native + API + 內部語料庫 | 覆蓋最廣、分層成本 | 複雜度、兩個要管理的失敗模式 |
2026 搜尋 API 定價版圖與像是 Firecrawl 的搜尋工具總覽 的生態系指南都是好的起點;結構性事實是:原生 grounding 每次查詢不額外花錢,但把你綁在供應商的模型陣容上;搜尋 API 模型無關、以每次查詢計價、有量級分層;自架是一筆固定成本賭注,只有到一定規模才回本——與其他所有自架決策相同的 TCO 形狀。還有 multi-model 的角度:沒有原生 grounding 的模型(開放權重家族等)讓搜尋 API 成為必需品,而不是選項。
如何建立 Grounded 管線
重點:三個階段——檢索、引用、驗證——而驗證階段就是 grounded 與只有搜尋的差別。
管線,骨架形式:
import json
from openai import OpenAI
client = OpenAI() # unified endpoint
def retrieve(query: str) -> list[dict]:
# Search API or native tool — returns documents with URLs and timestamps
return [{"url": "...", "text": "...", "fetched_at": "2026-08-15T09:00:00Z"}]
def answer_with_citations(query: str, docs: list[dict]) -> dict:
system = (
"Answer using ONLY the provided documents. Cite each claim with its "
"document URL. If the documents don't support an answer, say so."
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "system", "content": system},
{"role": "user", "content": f"Q: {query}\nDocs: {json.dumps(docs)}"}],
)
return json.loads(resp.choices[0].message.content) # {answer, citations: [...]}
def grounding_check(answer: str, docs: list[dict]) -> bool:
# Verify each citation exists in the retrieved set; reject fabricated URLs
known = {d["url"] for d in docs}
cited = {c for c in answer.get("citations", []) if c in known}
return len(cited) >= 1 and len(cited) >= len(answer.get("citations", [])) * 0.8
讓它達到正式環境等級的規則:
- 帶契約檢索。 每份文件都帶 URL 與抓取時間戳記;新鮮度檢查對時間戳記進行,不是憑感覺。
- 結構化引用。 模型把引用當資料回傳(function-calling 模式與 structured output 讓這變得可靠),不是當文字裝飾。
- 上線前驗證。 Grounding check 拒絕捏造的 URL 與空的引用——拒絕路徑是設計的一部分,正如本系列治理框架所規範的。
- 讓管線保持統一。 檢索與生成呼叫都走你的統一 endpoint;搜尋 API 的 Key 維持供應商原生,endpoint 整合的是管線,不是供應商。模型目錄顯示你可以路由到哪些模型。
如何為 Grounding 編預算
重點:grounding 成本是搜尋 API 價格加上 token 膨脹——通常是 grounded 系統帳單的個位數百分比,而且是最划算的可靠度投資。
預算,一條公式:每次查詢的 grounding 成本 = 搜尋 API 價格 + 上下文膨脹 tokens × 模型費率。三根槓桿:
- 依新鮮度需求路由。 對時間敏感的查詢(定價、政策、新聞)花錢搜尋;穩定知識的查詢跳過。自訂路由讓每次查詢的決策變成機械式的。
- 快取重複的。 同樣的問題會一再出現——檢索相同的 FAQ 型查詢,命中快取價格,而不是搜尋加 tokens 付兩次。搜尋結果有 TTL;快取要帶到期,不要永久。
- 限制上下文。 Top-k 結果加上長度上限,讓 token 膨脹有界;最後兩個結果通常是雜訊,不是訊號。注意搜尋 API 與模型兩邊的rate limit——grounding 讓請求面加倍。
常見錯誤
重點:四種失敗——而且其中三種刻意是沉默的。
- 搜尋投毒。 檢索內容可以被攻擊者影響——一個頁面可以包含指向模型的指令。檢索材料必須被當成不受信任的資料,這正是本系列 prompt-injection 防禦指南的框架。
- 過期結果、沒有 TTL。 快取了昨天的定價頁面,然後服務了一個星期——新鮮度屬性在快取被加上、卻沒有到期的那一刻就死了。
- Grounding check 失敗還是上線了。 答案沒有引用就出去了,因為檢查是建議性的,不是閘門。不阻擋的檢查就不是檢查。
- 把 grounding 當 RAG 的替代品。 搜尋 grounding 回答即時問題;RAG 回答私有語料庫的問題。它們是互補的層——RAG 指南涵蓋檢索那一側,而 MCP 這樣的 agent 協定工具把搜尋插進 agent 技術棧,就像插入任何其他工具一樣。
常見問題
Grounding 跟 RAG 一樣嗎?
不一樣。RAG 從私有語料庫檢索;grounding 檢索即時的外部事實並附引用。它們共享檢索機制、也能組合——一個 grounded RAG 系統,是任何觸及當前資料的東西的正式環境常態。
哪種 grounding 做法最便宜?
原生 grounding 每次查詢不額外花錢,但把你綁在供應商的模型陣容上。搜尋 API 以每次查詢計價、有量級分層。自架是固定成本賭注,只有到嚴重規模才贏。大多數團隊:原生加一個搜尋 API,依新鮮度需求路由。
Grounding 會讓帳單增加多少?
搜尋 API 價格加上上下文膨脹 tokens——通常是 grounded 系統總成本的個位數百分比,而且是最高價值的可靠度支出。這份指南的預算公式讓它有界。
怎麼驗證引用是真的?
Grounding check 把每個被引用的 URL 對照檢索集合,其他的一律拒絕——捏造的 URL 在結構上就會失敗。時間戳記也會被檢查:對時間敏感的宣稱,引用一個一週前檢索的頁面,就會在新鮮度上失敗。
Grounding 能防範所有幻覺嗎?
它處理事實查找類別——當前、可引用的事實。動作幻覺與其他失敗類別需要本系列治理框架中的偵測與緩解層。Grounding 是防範層,不是整個技術棧。
Grounding 失敗時我該怎麼辦?
依設計拒絕或降級。模型說「我無法從提供的文件驗證這個」,agent 要求澄清或 fallback,失敗被記錄。一個上線了無法驗證答案的系統,不是 grounded;它只是有搜尋功能。
總結
Grounding 是資料新鮮度加上可稽核性:帶契約檢索、結構化引用、上線前驗證、驗證失敗就拒絕。四選一——原生、搜尋 API、自架、混合——是一個成本-準確度-新鮮度三角,大多數團隊用「原生加一個 API、依新鮮度路由」解決。它是可靠度技術棧的防範層,也是「回答問題的 agent」與「能證明答案的 agent」之間的差別。
對一個 prompt 做 grounding,拿它跟沒 grounding 的版本比較,讓引用自己說話。取得你的 TokSpan API Key——$5 免費額度拿來比較(快速上手)。