TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

AI Fake News Detector 把判斷權從模型手裡拿走:LLM 只拆聲明、改查詢、比證據,證據過不了語義與實體兩道門就回「無法驗證」,預設 3B 模型本機跑,MIT 開源。
用 AI 摘要這篇文章:
把一則可疑新聞貼進 ChatGPT 問「這是真的嗎」,幾秒鐘內就會得到一個看起來很篤定的答案。麻煩的是,那個答案出自模型的訓練記憶:它沒有義務附上出處,遇到訓練資料截止日之後才發生的事、或者冷門到沒什麼人寫過的題目,它照樣能給你一段流暢的回覆。開源專案 AI Fake News Detector 對這個老問題給了一個相當極端的答案:讓模型從頭到尾不憑記憶下判斷。模型在整條流程裡只做三件事,拆解聲明、改寫搜尋查詢、比對證據;證據找不到、或者分數達不到門檻,最終結論就落在「無法驗證」。
這個 Python 專案放在 GitHub 上,MIT 授權,2025 年 3 月建立,2026 年 8 月 7 日的一次大改把核心流程重寫成三節點管線。把它當成「一鍵辨別真假新聞」的成熟產品會失望;比較貼切的定位,是一套把 AI 查核拆成可檢驗步驟的參考實作,每個結論都掛得到具體證據與具體設定值。
專案的核心是一條定義得很清楚的管線,寫在 fact_checking/pipeline.py 裡。管線先吃新聞全文,請模型抽出中心思想、可驗證的核心聲明與關鍵實體;接著把聲明改寫成多角度搜尋查詢,出門找證據;最後把聲明拆到原子層級,逐項對著證據驗證。原始碼註解直接標明這三段對應作者論文的第三、四、五章,研究出身的痕跡很重。
把新聞丟進去之前,介面左側先讓你選模型供應商、模型、搜尋引擎與輸出語言。預設畫面是中文的,輸入區放待查核的新聞全文,按下去之後分步顯示每個節段的處理進度。

驗證這一段的設計值得展開。verification.py 給模型的指令是:把中心聲明拆成至多三個不重疊的原子聲明,為每個原子聲明抽出人、事、時、地、原因五個要素,對著證據逐項判斷支援、反駁或證據不足,最後彙總成一個總判定。彙總出來只有四種可能:TRUE、FALSE、PARTIALLY_TRUE、UNVERIFIABLE。也就是說,同一段新聞裡如果兩個子句對、一個子句錯,它有機會給出「部分為真」這種有層次的答案,不必被迫二選一。

真正讓這個專案跟「把新聞貼給聊天機器人」拉開差距的,是 evidence_retrieval.py 裡的證據門控。搜回來的網頁清單不會直接交給模型,先經過兩層過濾:用 BGE-M3 嵌入模型計算每段證據與中心聲明的語義相似度,低於預設值 0.45 的丟掉;接著檢查證據文字裡有沒有命中中心聲明的關鍵實體,完全沒命中的也丟掉。排序時先把候選池放大三倍,過濾後只留分數最高的八段進入驗證節段。
出門找證據之前還有一個容易被忽略的步驟:查詢改寫。evidence_retrieval.py 要求模型為同一個中心聲明生成多組不同目的的查詢,有的直球搜聲明本身,有的鎖定關鍵實體,有的帶時間地點,有的專門找反例。用一組查詢打天下跟用四種角度輪流搜,撈到的證據池大小差很多,這個設計直接決定了後面兩道門有沒有東西可濾。
全部被濾掉的時候會發生什麼?系統回 UNVERIFIABLE,明講這則新聞查不到夠格的證據,拒絕讓模型在無關網頁上硬湊結論。更值得注意的是 schemas.py 裡的細節:最終判定的欄位預設值就是 UNVERIFIABLE,模型輸出解析失敗時,安全落地的地方也是「無法驗證」。把預設值設在誠實那一側,是整個專案我認為最值得抄的地方。
幾個關鍵預設值整理如下,全部出自 model_config.json:
| 設定項 | 預設值 | 意義 |
|---|---|---|
| 語言模型 | qwen2.5:3b | 3B 級小模型,消費級機器跑得動 |
| 嵌入模型 | bge-m3:latest | 多語言嵌入,計算證據相關度 |
| 推論溫度 | 0.0 | 關掉隨機性,查核要的是可重現 |
| 語義相似度門檻 | 0.45 | 低於此分數的證據直接丟棄 |
| 實體命中門控 | 開啟 | 證據必須提到聲明裡的關鍵實體 |
| 最終證據數量 | 8 | 候選池先放大三倍再選 |
| 搜尋引擎 | duckduckgo | 走 ddgs 程式庫,可換自架 SearXNG |
這裡有個容易搞混的細節:設定檔裡 Ollama 的模型清單第一項是 GPT-OSS 120B Cloud 這類雲端大模型,容易讓人順手當成預設;實際的預設組合是 qwen2.5:3b 搭配 bge-m3,一張普通顯卡甚至純 CPU 就跑得動。
結果頁不是給你一個標籤就結束。官方釋出的結果截圖顯示,頁面最上方是新聞原文,接著是總判定與可信度評分,下方三個可展開的區塊分別是聲明抽取結果、檢索到的證據清單與多步驗證過程。證據清單裡每條都帶來源網頁的標題與摘錄,驗證區塊攤開每個原子聲明被判支援或反駁的理由。查核歷史會存進本機資料庫,報告可以匯出成 PDF。它還內建一套多帳號系統:註冊、登入、記住我都有,每個帳號的查核紀錄彼此隔離,幾個人共用一套部署時紀錄不會混在一起,對實驗室或小團隊一起用算是貼心。

輸出語言跟著輸入自動切換,中文、英文、日文、韓文輸入都認得,判定報告也能指定語言輸出。多語言不只是介面皮:fact_checker.py 裡有個專門的語言多樣性最佳化步驟,選證據時會在候選之間平衡不同語言的配額,避免清一色同語言來源。實際意義是查一則中文新聞,證據清單有機會混進英文媒體的報導,交叉比對的價值比全中文來源高。要注意的是介面的中文是簡體版,繁體使用者操作不會有障礙,但視覺上需要一點適應。
資料流向是我翻原始碼時最想確認的一件事,結論是預設路徑相當乾淨。模型推論走本機 Ollama,新聞全文只進到你自己機器上的模型;歷史紀錄寫進本機 SQLite 檔案;帳號系統的密碼用 SHA-256 加鹽儲存;app.py 一千兩百多行裡沒有任何遙測或分析程式碼,所有對外連線的預設對象都是 localhost。
要說完全不上網也不對。改寫過的搜尋查詢會出門,預設送到 DuckDuckGo,查詢內容是從你的新聞聲明改寫出來的關鍵字組合。換句話說,新聞原文不出門,但它的摘要片段會以搜尋查詢的形式離開你的機器。對多數人這在可接受範圍,但如果你查的內容本身敏感,記得這條路存在,或者把搜尋換成自己架的 SearXNG 執行個體。搜尋層同時是它對外部世界唯一的依賴,DuckDuckGo 呼叫不順時整條管線就跟著卡住,這件事下面的限制段還會回來。
另外它準備了多種模型供應商可以切:Ollama、LM Studio、OpenAI 官方 API,以及任何相容 OpenAI 格式的自訂端點。切到雲端供應商的那一刻,新聞全文就會出門,隱私帳要自己重算。
官方給的路徑有三條。最單純的是 Python 直跑:Python 3.12 以上,裝好 requirements.txt 的依賴後用 Streamlit 啟動,瀏覽器開本機 8501 連接埠。第二條是 Docker,儲存庫裡附了 docker-compose 與啟動指令檔,但前提是宿主機上已經跑著 Ollama(連接埠 11434)或 LM Studio。第三條給想接程式的人:另外附了一支 FastAPI 服務,對 POST /check 端點送新聞全文就能拿 JSON 結果,請求裡可以逐次指定模型端點、對話模型、嵌入模型與搜尋引擎,等於把整套查核當成可編排的元件,適合塞進更大的審稿或輿情流程。依賴清單本身很節制,核心就是 Streamlit、OpenAI 相容客戶端、ddgs 搜尋程式庫加報表用的 reportlab,沒有大型框架。
跑之前有兩個前置作業容易踩坑。模型要先自己拉:ollama pull qwen2.5:3b 與 ollama pull bge-m3,兩個模型加起來大約幾個 GB 的下載量。PDF 匯出需要系統裝好中文字型,否則報告裡的中文會變方框,官方文件對 Ubuntu 給的字型安裝指令寫得很清楚。
看 commit 歷史可以讀出這個專案的性格。2025 年 3 月建立,5 月加入 API 服務與修 PDF 匯出,9 月底一口氣推進到 v2.0.0,加了設定精靈、Docker 支援與持久登入,期間也收過並合併一個外部貢獻者的功能增強拉取請求,然後沉寂了整整十個月。2026 年 8 月 7 日回來,帶的是重寫過的三節點管線、手繪流程圖與動圖預覽,儲存庫裡還留著那兩份圖的設計規格文件,看得出作者把這次改版當成論文成果的展示櫥窗在經營。這是研究者把論文方法持續打磨成可用工具的節奏,也是斷更風險真實存在的節奏。
社群數字方面,截至 2026 年 8 月累積約四百多顆星、一百個 fork。全部五個 issue 都處於關閉狀態,主題相當分散:有人卡在依賴版本裝不起來,有人碰到 DuckDuckGo 經代理連線失敗,有人質疑證據搜尋的品質,有人問本地 Qwen 模型怎麼接,還有一個是本地模型服務回 502 的求助。這份清單本身就是自架這類工具的真實摩擦面,環境、網路、模型對接每一環都會咬人。它沒有發布過任何 GitHub release,版本資訊只存在於程式碼裡,想鎖版本只能認 commit。
查核準確率沒有人背書。儲存庫裡沒有基準測試結果,我也沒有實際跑過測試集,所以「它判得準不準」這個最重要的問題,目前唯一誠實的回答是不知道。它給的是可追溯的查核過程,讓你能檢查每個判斷背後的證據,這跟判得準是兩件事。
幾個具體的限制列出來:
同樣想降低單一模型回答風險的思路,站上介紹過的 ai-doctor 多模型會診面板 走的是讓多個模型互評淘汰的路線,Make It Heavy 則是把同一個問題丟給多個智能體同時作答再整合。AI Fake News Detector 跟它們的差別在於它不信任何模型的記憶,只信檢索得到、且通過相似度與實體雙重門檻的外部證據。做投研的人也可以對照 FinSight-AI 的證據追蹤設計,同樣是把 AI 結論掛在可回溯證據上的嘗試。
MIT 授權,商用修改都沒有限制,唯一的義務是保留授權聲明。專案位置在 GitHub 上的 CaptainYifei/fake-news-detector,原始碼、文件與部署指令檔都齊全。以 2026 年 8 月的狀態看,它最適合的使用者是想自架查核原型來改的開發者,以及想研究「證據門控加小模型」這條路線的人;想找一個開箱即用、結論有人背書的測謊工具,目前它還不到位,把它的報告當查核的起點,最終裁決留給人,是比較健康的用法。