~/tools / 嵌入與搜尋(RAG) / RAG Citation Checker

RAG Citation Checker — 對照你送出的來源,檢查 RAG 回答中的來源編號與引文

把 RAG 回答中的引用與你送出的來源對照檢查:每個來源編號都必須存在,每段引文都應出現在對應的來源中,工具並列出沒有來源編號的句子、從未被引用的來源,以及被截斷的回答。可讀取 Ollama /api/chat 的回應(包含串流回應)、相容 OpenAI 的回應與純文字。內容不會離開你的瀏覽器。

範例回答是手寫的,用來呈現一段不在其來源中的引文。

4 個來源(字串的 JSON 陣列)。回答視為Ollama /api/chat 的回應讀取,形式為含引用的 JSON。

提示詞的 token 數(prompt_eval_count):306

  • 引用 #2 的引文不在來源 [4] 中。

引用

來源引文結果
[2]hnsw.ef_search is 40 by default原文相符
[4]4 bytes per dimension plus 8不在此來源中

這只檢查編號與引文是否與來源相符。它無法判斷回答是否正確,也無法判斷來源是否真的支持某個句子。

回應格式取自 Ollama 的 API 參考文件與原始碼,已於 2026-11-05 在 Ollama 0.40.11 上確認。 Ollama API: /api/chat

一切都在你的瀏覽器中完成。本工具不連線到任何地方。

當模型根據編號的來源回答時,引用可以用機械的方式檢查。請貼上你送出的相同來源,格式與 RAG Prompt Builder 相同(字串或物件的 JSON 陣列,或以 --- 行或空白行分隔的文字;編號同樣從 [1] 開始),再貼上回答。回答可以是 Ollama /api/chat 的整份回應(工具會取出 message.content;每行一個 JSON 物件的串流回應會被接在一起)、相容 OpenAI 的回應(choices[0].message.content),或只是文字。如果回答是 RAG Prompt Builder 所要求的、內含回答與引用清單的 JSON,工具會檢查每一筆引用:來源編號必須是這些來源之一,而引文應出現在該來源中,可以是完全相同,也可以是忽略空白、大小寫、全形字元與彎引號的差異之後相同。如果回答是文字,工具會收集方括號中的編號,例如 [2] 或 [1, 3],回報與來源不符的編號,並列出沒有編號的句子。兩種情況下,它都會列出從未被引用的來源,並在完全沒有引用,或 done_reason 為 "length"(表示回答被 num_predict 截斷)時發出警告。它做不到的是判斷回答是否正確。在我們用 qwen2.5:7b 做的測試中,有一則回答逐字引用了來源中的正確規則,卻仍給出錯誤的數字,另一則回答說不知道,卻引用了一個無關的來源。在這裡通過的引用,只表示被引用的文字在來源中。

這個工具的核心邏輯以 MIT 授權開放原始碼。 github.com/seigo5555/toolkitbox-lib/src/rag-citations.ts

使用情境

  • 確認本機模型的回答只引用真正送出的來源,而且引文確實在其中
  • 在把回答顯示給使用者之前,找出沒有來源的句子
  • 針對相同的問題,依引用成立的頻率比較不同的提示詞或模型

使用方法

  1. 依相同的順序,貼上你連同問題一起送出的來源。
  2. 貼上回答:/api/chat 的整份回應、相容 OpenAI 的回應,或回答的文字。
  3. 閱讀引用表、沒有來源編號的句子,以及未被引用的來源。

FAQ

有一段引文被標示為找不到。回答是錯的嗎?

不一定。模型可能是改寫了來源,而不是照抄。但不在來源中的引文無法檢查,所以在讀過來源之前,請把那項陳述視為沒有依據。

所有引用都通過了。回答就正確嗎?

不一定。工具只檢查編號與引文是否與來源相符。在我們的測試中,模型引用了正確的規則(4 × 維度數 + 8 位元組),卻仍然對 384 維的向量回答 1552 位元組,而不是 1,544。

為什麼來源必須依相同的順序?

回答中的編號指的是來源送出的順序。順序不同的話,[2] 就會指向另一段文字,檢查也就沒有意義。

工具如何把回答切分成句子?

在換行處、在 . ! ? 後面接著空白之處,以及在全形的 。!? 之後。緊接在句子結尾之後的編號,例如 "… here. [1]",算作該句的編號。e.g. 這類縮寫可能把一個句子切成兩個。

done_reason "length" 是什麼意思?

在 Ollama 的原始碼中,這是回答達到 token 上限(num_predict)而不是自行停止時給出的原因。回答的結尾,可能還有它的引用,都不見了。

我的資料會被傳送到任何地方嗎?

不會。檢查是在你的瀏覽器中執行的。本工具從不連線到 Ollama 或任何其他服務。

相關文章

相關工具