GroundingWeb SearchLLM API

用 Web Search 為 LLM API 做 Grounding:2026 開發者指南

閱讀 1 分鐘

客服機器人把去年的定價頁面當成現況引用。分析 agent 引用了一篇已被撤回的部落格文章。兩個答案都自信、流暢、而且錯誤——因為兩個系統在查詢當下,都不知道什麼才是真的。

沒有 grounding 的 LLM 是 2026 年安靜的可靠度問題:它們很流暢,而流暢正是讓過期或捏造的答案危險的地方。Grounding——在查詢當下給模型可驗證、最新、有引用的資訊——從可有可無的加分項,變成了 agentic 應用的預設架構。問題是「grounding」現在橫跨四種截然不同的做法,從模型原生工具到第三方搜尋 API 再到自架 crawler,而網路上大部分的比較內容都是沒有成本資料、沒有失敗模式涵蓋的列表式文章。

這份指南涵蓋四選一決策——原生 grounding、搜尋 API、自架、混合——搭配每次查詢的成本數學、引用與 grounding check 的正式環境管線、以及那些會默默上線錯誤答案的失敗模式。

Grounding 在 2026 年代表什麼

重點:grounding 是資料新鮮度加上可稽核性——它不是「搜尋」,它是一層可驗證的資訊層。

Grounding 代表模型的答案是建立在它能秀給你看的資訊上:一個來源、一個引用、一次發生在查詢當下的檢索。三個屬性區分 grounded 系統與只是接上搜尋的系統:

  1. 新鮮度。 資料在被問到的時候檢索,而不是內建在訓練資料裡。如果檢索發生在現在,去年的定價頁面就不能被引用為現況。
  2. 引用。 答案帶著它的來源——而且來源是可驗證的,不是裝飾性的。
  3. Grounding check。 系統在上線前把答案對照檢索到的材料驗證,驗不過就拒絕或降級。

要消滅的誤解:「我們接了一個搜尋 API」不是 grounding。沒有引用、沒有新鮮度檢查、沒有拒絕路徑的搜尋 API,只是昂貴的上下文擴充器。

為什麼沒有 Grounding 的 LLM 在正式環境會失敗

重點:三類失敗——過期、捏造、無法驗證——而且每一類在 agentic 系統中都會層層放大。

  1. 過期。 任何對時間敏感的東西——定價、政策、事件、產品細節——在靜態模型上註定錯誤。答案自信地錯,這是最糟的一種。
  2. 帶著權威的捏造。 沒有 grounding 的模型編造來源就像編造事實一樣流暢——假 URL、聽起來合理、指向看似真實出版品的引用。本系列幻覺治理指南涵蓋完整框架;grounding 是它對事實查找類別的防範層。
  3. 無法驗證。 即使答案正確,沒有來源就無法稽核。對受監管或對客戶的輸出,「相信我們」不是合規姿態。

在 agentic 系統中層層放大的情況更糟:每一個錯誤的中間答案都會透過工具鏈傳播。有搜尋 grounding 的 agent 至少還有機會復原;沒有 grounding 的 agent 會自信地把錯誤相乘。

四選一比較:原生工具 vs 搜尋 API vs 自架 vs 混合

重點:這個選擇是成本-準確度-新鮮度三角——而對大多數團隊來說,原生工具加一個搜尋 API 就涵蓋 90% 的案例。

做法例子優勢要注意的
原生 groundingChatGPT search、Claude web-search tool、Gemini grounding零整合、內建引用、供應商一致供應商綁定、區域可用性、模型耦合
搜尋 APITavily、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

讓它達到正式環境等級的規則:

  1. 帶契約檢索。 每份文件都帶 URL 與抓取時間戳記;新鮮度檢查對時間戳記進行,不是憑感覺。
  2. 結構化引用。 模型把引用當資料回傳(function-calling 模式與 structured output 讓這變得可靠),不是當文字裝飾。
  3. 上線前驗證。 Grounding check 拒絕捏造的 URL 與空的引用——拒絕路徑是設計的一部分,正如本系列治理框架所規範的。
  4. 讓管線保持統一。 檢索與生成呼叫都走你的統一 endpoint;搜尋 API 的 Key 維持供應商原生,endpoint 整合的是管線,不是供應商。模型目錄顯示你可以路由到哪些模型。

如何為 Grounding 編預算

重點:grounding 成本是搜尋 API 價格加上 token 膨脹——通常是 grounded 系統帳單的個位數百分比,而且是最划算的可靠度投資。

預算,一條公式:每次查詢的 grounding 成本 = 搜尋 API 價格 + 上下文膨脹 tokens × 模型費率。三根槓桿:

  1. 依新鮮度需求路由。 對時間敏感的查詢(定價、政策、新聞)花錢搜尋;穩定知識的查詢跳過。自訂路由讓每次查詢的決策變成機械式的。
  2. 快取重複的。 同樣的問題會一再出現——檢索相同的 FAQ 型查詢,命中快取價格,而不是搜尋加 tokens 付兩次。搜尋結果有 TTL;快取要帶到期,不要永久。
  3. 限制上下文。 Top-k 結果加上長度上限,讓 token 膨脹有界;最後兩個結果通常是雜訊,不是訊號。注意搜尋 API 與模型兩邊的rate limit——grounding 讓請求面加倍。

常見錯誤

重點:四種失敗——而且其中三種刻意是沉默的。

  1. 搜尋投毒。 檢索內容可以被攻擊者影響——一個頁面可以包含指向模型的指令。檢索材料必須被當成不受信任的資料,這正是本系列 prompt-injection 防禦指南的框架。
  2. 過期結果、沒有 TTL。 快取了昨天的定價頁面,然後服務了一個星期——新鮮度屬性在快取被加上、卻沒有到期的那一刻就死了。
  3. Grounding check 失敗還是上線了。 答案沒有引用就出去了,因為檢查是建議性的,不是閘門。不阻擋的檢查就不是檢查。
  4. 把 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 免費額度拿來比較(快速上手)。