CaptainYifei/fake-news-detector
基于LLM和证据检索的虚假新闻自动检测系统
📚 项目概述
AI 虚假新闻检测器 – 一个基于 Streamlit 的网页应用,允许用户验证新闻文章的真实性。它将大语言模型(LLM)提示、语义嵌入检索和多步骤主张验证串联起来。系统支持中文、英文、日文和韩文,可与任何 OpenAI 兼容的模型服务(本地 Ollama、LM Studio、OpenAI 或自定义 API)配合使用。
🔑 核心功能
| 功能 | 说明 |
|---|---|
| 多语言支持 | 自动检测输入语言,并可输出中文、英文、日文或韩文结果。 |
| 三节点事实核查流水线 | 1️⃣ 使用 LLM 从文章中提取核心主张。2️⃣ 重写查询,检索网络证据(默认使用 DuckDuckGo,可选 SearXNG),使用 BGE‑M3 嵌入进行排序,按相似度和实体匹配过滤。3️⃣ 将主张分解为原子语句,基于证据回答,并聚合最终结论。 |
| 模型无关后端 | 支持 Ollama(默认 Qwen2.5‑3B + BGE‑M3)、LM Studio、OpenAI GPT 模型,或任何遵循 OpenAI API 模式的服务。 |
| 证据门控 | 可配置的 top‑K、相似度阈值和实体门控,确保只有高质量来源进入验证步骤。 |
| 用户与数据管理 | 多用户登录,历史记录持久化存储于本地数据库,支持验证报告的 PDF 导出。 |
| API | 提供轻量级 REST 端点(/check),与网页 UI 功能一致,支持程序化调用。 |
🛠️ 快速开始(Linux/macOS)
# 1. 克隆
git clone https://github.com/CaptainYifei/fake-news-detector.git
cd fake-news-detector
# 2. 安装 Python 依赖(需 Python 3.12+)
pip install -r requirements.txt
# 3. 安装并运行 Ollama(推荐)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:3b # LLM
ollama pull bge-m3:latest # 嵌入模型
# 4. (可选)在 model_config.json 中配置不同的搜索后端
# 5. 启动 UI
streamlit run app.py
在浏览器中打开 http://localhost:8501。
📡 使用 API
python api.py # 在端口 8080 启动服务器
curl -X POST http://localhost:8080/check \
-H "Content-Type: application/json" \
-d '{
"text": "新闻正文…",
"api_base": "http://localhost:11434/v1",
"model": "qwen2.5:3b",
"embedding_model": "bge-m3:latest",
"search_engine": "duckduckgo"
}'
响应包含提取的主张、检索到的证据和最终结论(TRUE、FALSE 或 UNVERIFIABLE)。
📂 仓库结构
fake-news-detector/
├─ app.py # Streamlit 前端
├─ api.py # REST 服务
├─ fact_checker.py # 协调三个节点
├─ fact_checking/ # 节点实现
├─ model_manager.py # 加载配置并创建 LLM/嵌入客户端
├─ model_config.json # 提供商、模型和搜索默认值
├─ auth.py, db_utils.py # 用户认证与 SQLite 辅助工具
├─ pdf_export.py # 生成 PDF 报告
├─ requirements.txt
└─ docs/ … # 使用指南、API 文档、截图
📦 配置亮点(model_config.json)
- 提供商 – 定义 Ollama、LM Studio 等的基地址和模型 ID。
- 默认值 – 选择使用的 LLM/嵌入模型、搜索引擎、输出语言以及证据过滤阈值(
evidence_top_k、evidence_min_similarity、evidence_entity_gate)。 - 切换提供商只需编辑 JSON 文件;代码在启动时自动读取。
🐞 已知问题与故障排除
- 模型卡顿或返回空值 – 确认 Ollama 服务正在运行(
ollama list),并检查model_config.json中的base_url是否正确。 - 无搜索结果 – 检查网络连接;
ddgs包装器会自动回退到多个 DuckDuckGo 后端。若全部失败,可启用可选的 SearXNG 后端。 - 无法验证的结论 – 可能由相似度阈值过高或实体门控过滤掉所有候选者导致;请调整
evidence_min_similarity或将evidence_entity_gate设为false。 - 多语言输出问题 – 确保所选 LLM 支持目标语言;较大的 OpenAI 模型通常更可靠地处理四种语言。
📄 许可证
MIT – 详见 LICENSE。
TL;DR – 本仓库提供一个开箱即用、本地托管的 AI 事实核查系统,结合 LLM 提示、语义搜索和多步骤验证,具备网页 UI、API 和多语言支持。这是一个真实、可运行的 AI 软件项目。
相关
- 项目
- 项目
- Dispatch
- 项目
- 项目