なぜ FactLens を作ったのか

フェイクニュース時代に必要な「検証の民主化」

2026年3月10日 · Yuki Hamada · 読了時間: 約8分

きっかけ: 「これ本当?」に答えられない AI

SNS を開けば毎日のように流れてくる情報。「〇〇が△△を発表」「研究で□□が判明」——でも、それは本当だろうか?

ChatGPT に「これは本当ですか?」と聞けばもっともらしい答えが返ってくる。でも、その答え自体が間違っているかもしれない。LLM(大規模言語モデル)はハルシネーション——事実と異なる内容を自信たっぷりに生成する——という根本的な問題を抱えている。

「LLM は知識の倉庫ではなく、パターンの生成器である。事実を『知っている』のではなく、事実らしい文章を『生成できる』にすぎない」

Huang et al. (2023) の大規模サーベイ論文 "A Survey on Hallucination in Large Language Models" では、LLM のハルシネーションが広範囲に存在し、特に事実の検証タスクでは深刻な問題になることが体系的に報告されている。

さらに、LLM には知識のカットオフがある。2024年の選挙結果も、先月の企業発表も、学習データに含まれていなければ「わかりません」としか答えられない。

FactLens は、この2つの問題を正面から解決するために作った。

アプローチ: 3つの学術的手法の融合

FactLens の核心は「LLM に直接聞く」のではなく、分解 → 検索 → 検証 → 集約の多段階パイプラインにある。

ユーザー入力 │ ▼ ┌─────────────────────────┐ │ 1. ウェブ検索 │ ← Jina AI Search │ 最新の証拠を取得 │ (RAG の応用) └───────────┬─────────────┘ ▼ ┌─────────────────────────┐ │ 2. 原子的分解 │ ← FActScore の手法 │ 文章→個別クレームに分解 │ (Min et al., 2023) └───────────┬─────────────┘ ▼ ┌─────────────────────────┐ │ 3. エビデンス付き判定 │ ← Chain-of-Thought │ 各クレームを出典付きで │ (Wei et al., 2022) │ supported/refuted/ │ │ unverifiable に判定 │ + FEVER の3ラベル体系 └───────────┬─────────────┘ ▼ ┌─────────────────────────┐ │ 4. 加重スコアリング │ ← ClaimBuster の着想 │ 0〜100点の信頼度スコア │ (Hassan et al., 2017) └─────────────────────────┘

この4段階それぞれに、査読付き論文に基づく設計根拠がある。順に見ていこう。

手法1: リアルタイム ウェブ検索 (RAG)

Lewis et al. (2020) が NeurIPS で発表した RAG (Retrieval-Augmented Generation) は、「LLM に外部知識を与えてから回答させる」パラダイムだ。FactLens はこれを検証タスクに適用している。

具体的には、入力テキストの先頭150文字をクエリとして Jina AI Search でウェブ検索を実行。最新のニュース記事、論文、公式発表を3000文字まで取得し、LLM の判定材料として与える。

なぜ Jina AI Search か? API キー不要・無料・クリーンなテキスト出力。Google や Bing は Cloud IP からのアクセスを CAPTCHA でブロックするが、Jina はボット利用を前提とした設計で安定動作する。

これにより、LLM が学習していない最新情報——たとえば先週の政策発表や最新の研究結果——にも対応できるようになった。

📄 Lewis, P., et al. "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks." NeurIPS 2020. arxiv.org/abs/2005.11401

手法2: 原子的事実分解 (FActScore)

「エッフェル塔は1889年に建設され、高さは500メートルある」——この文は半分正しくて半分間違っている。文全体に「本当/嘘」のラベルを付けても、有用な情報にならない。

Meta AI の Min et al. (2023) が EMNLP(Best Paper 受賞)で発表した FActScore は、この問題を「原子的事実への分解」で解決した。長文を個別に検証可能な最小単位のクレームに分解し、それぞれを独立に評価する。

FactLens はこの手法を採用し、入力テキストを自動的に原子的事実に分解する。これにより:

研究では、この分解アプローチが人間の判断と高い相関を示すことが実証されている。

📄 Min, S., et al. "FActScore: Fine-grained Atomic Evaluation of Factual Precision in Long Form Text Generation." EMNLP 2023 (Best Paper). arxiv.org/abs/2305.14251

手法3: エビデンス強制 (Chain-of-Thought)

「科学的に否定されています」——こういう曖昧な根拠では検証のしようがない。FactLens では、各クレームの判定に具体的な出典の引用を強制している。

Wei et al. (2022) の Chain-of-Thought (CoT) プロンプティングは、LLM に中間推論ステップを明示させることで、複雑な推論タスクの精度を大幅に向上させた。FactLens はこの知見を応用し、以下のルールをプロンプトに埋め込んでいる:

たとえば「脳は10%しか使われない」というクレームに対しては、「神経科学の教科書(Kandel et al., Principles of Neural Science)は、脳全体が常に活動していることを示している」のように、具体的な出典を引用した判定を返す。

📄 Wei, J., et al. "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models." NeurIPS 2022. arxiv.org/abs/2201.11903

手法4: 3ラベル判定体系 (FEVER)

世の中のクレームは「本当か嘘か」の二択で割り切れないものが多い。政治的主張、将来の予測、非公開情報に基づくクレームなど、現時点では検証しようがないものが存在する。

Thorne et al. (2018) の FEVER (Fact Extraction and VERification) は、18万件以上のクレームを含む大規模ベンチマークで、3ラベル体系を提唱した:

FactLens はこの体系を採用しつつ、重要なルールを追加した:広く知られた誤り(科学的神話)は「検証不能」ではなく「否定」と判定すること。「金魚の記憶は3秒」「適度な飲酒は健康に良い」といったクレームは、科学的に明確に否定されているからだ。

📄 Thorne, J., et al. "FEVER: a Large-scale Dataset for Fact Extraction and VERification." NAACL 2018. arxiv.org/abs/1803.05355

スコアリング: なぜ「検証不能」を50点にするのか

FactLens のスコアは以下の加重平均で算出する:

なぜ unverifiable を50点にするのか? これは意図的な設計だ。

もし unverifiable を無視して supported だけでスコアを計算すると、「1つ支持 + 5つ検証不能」のテキストが100点になってしまう。政治的主張のように検証困難なクレームが多い文章が、根拠なく高スコアを得ることを防ぐための設計だ。

ClaimBuster (Hassan et al., VLDB 2017) の「チェック価値スコアリング」の考え方を参考にしている。

なぜオープンソースにしたのか

ファクトチェックツールこそ、透明であるべきだ。

ブラックボックスなファクトチェッカーは、それ自体がバイアスの源になりうる。Quelle & Bovet (2024) は "The Perils and Promises of Fact-Checking with Large Language Models" で、LLM ベースの判定が政治的・文化的バイアスの影響を受ける可能性を指摘している。

だからこそ、FactLens は:

「AI が正しいと言っているから正しい」ではなく、「AI はこの根拠でこう判断した。あなたはどう思うか?」——これが FactLens の設計思想だ。

技術的な選択とその理由

なぜ Rust なのか

FactLens は Rust + Axum で書かれている。Python + Flask で書いた方が早く作れたが、Rust を選んだ理由は:

なぜ Kimi-K2 がデフォルトなのか

Moonshot AI の Kimi-K2 は MoE(Mixture of Experts)アーキテクチャで、1兆パラメータのうち32Bのみがアクティブになる。Groq の高速推論インフラで動作するため:

なぜ SQLite なのか

PostgreSQL や MySQL ではなく SQLite を選んだ理由:

限界と今後

FactLens は万能ではない。正直に限界を述べておく:

だからこそ、FactLens は結果を「最終判定」ではなく「初期スクリーニング」として位置づけている。人間の本格的なファクトチェックは数時間〜数日かかるが、FactLens はその最初の一歩を数秒で提供する。

まとめ: 検証の民主化

誰もが簡単にファクトチェックできる世界。それが FactLens の目指すところだ。

フェイクニュースの拡散速度は、真実の訂正速度をはるかに上回る(Vosoughi et al., "The spread of true and false news online," Science, 2018)。だからこそ、個人が数秒で事実を検証できるツールが必要なのだ。

FactLens はオープンソースだ。コードをフォークし、改善し、自分のプロジェクトに組み込むことができる。ファクトチェックの技術をより良くするために、一緒に取り組んでくれる人を歓迎する。

シェア: 𝕏 でシェア GitHub で見る

実際にファクトチェックを体験してみてください

🔍 FactLens を使う ⭐ GitHub