CaptainYifei/fake-news-detector
基于LLM和证据检索的虚假新闻自动检测系统
📚 项目概述
AI 虚假新闻检测器 – 一个基于Streamlit的Web应用,允许用户验证新闻文章的事实性。它串联大型语言模型(LLM)和语义嵌入模型,以(1)从文本中提取核心主张,(2)将这些主张改写为搜索查询,(3)检索网络证据,以及(4)逐步分解和评估每个主张。该系统支持中文、英文、日文和韩文,并且可以在任何兼容OpenAI的模型服务上运行——从本地Ollama模型到OpenAI的GPT。
✨ 核心功能
| 功能 | 作用 |
|---|---|
| 多语言支持 | 自动检测输入语言(zh、en、ja、ko),并可以以这些语言中的任何一种输出。界面是双语的。 |
| 可插拔模型提供商 | 支持Ollama(默认Qwen2.5 3B + BGE-M3嵌入)、LM Studio、OpenAI,或任何遵循OpenAI架构的自定义API。 |
| 三节点事实核查流水线 | 1️⃣ 主张提取 – LLM从文章中提取核心可验证陈述。2️⃣ 查询重写与证据检索 – LLM创建多个搜索查询;DuckDuckGo(或SearXNG/Parallel)返回网页片段;BGE-M3嵌入对它们进行排序,应用相似性和实体门控过滤器。3️⃣ 多步骤主张验证 – LLM将复杂主张分解为原子陈述,与过滤后的证据匹配,并产生最终裁决。 |
| 证据门控 | 可配置的top_k、相似性阈值和实体命中要求确保只有高质量的网页片段进入验证步骤。 |
| 历史记录与PDF报告 | 所有检查按用户存储;结果可以导出为格式良好的PDF报告。 |
| 用户系统 | 多个用户可以登录并保持独立的历史记录。 |
| REST API | 相同的流水线通过轻量级FastAPI风格端点(/check)暴露。 |
🛠️ 快速开始
先决条件
- Python 3.12+
- Ollama(推荐)或任何暴露OpenAI兼容API的服务
- 互联网访问以使用DuckDuckGo(默认) – 可选本地SearXNG或Parallel搜索后端
安装步骤
# 1. 克隆仓库
git clone https://github.com/CaptainYifei/fake-news-detector.git
cd fake-news-detector
# 2. 安装Python依赖
pip install -r requirements.txt
# 3. (可选)安装Ollama并拉取默认模型
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:3b
ollama pull bge-m3:latest
运行Web界面
streamlit run app.py
在浏览器中打开http://localhost:8501。
运行API服务器
python api.py # 默认在端口8080启动服务器
然后您可以向http://localhost:8080/check发送JSON POST请求(有关确切负载,请参阅README)。
⚙️ 配置
所有可调参数都位于**model_config.json**中:
- 提供商 – 为每个服务定义基础URL和模型列表(例如,Ollama、OpenAI)。
- 默认值 – 选择默认LLM、嵌入模型、搜索引擎、输出语言和证据过滤参数(
evidence_top_k、evidence_min_similarity、evidence_entity_gate、evidence_ranker_multiplier)。 - 搜索提供商 – 无需更改代码即可在
duckduckgo、searxng或parallel之间切换。
📂 项目结构
fake-news-detector/
├─ app.py # Streamlit入口点(UI)
├─ api.py # FastAPI风格REST端点
├─ fact_checker.py # 编排三节点流水线
├─ fact_checking/ # 每个节点的实现
├─ model_manager.py # 加载`model_config.json`并创建客户端对象
├─ auth.py # 简单的用户认证
├─ db_utils.py # SQLite(或类似)持久化历史记录
├─ pdf_export.py # 从结果生成PDF报告
├─ model_config.json # 中央配置文件
├─ requirements*.txt # 核心+可选的Parallel搜索依赖
└─ docs/ … # 使用指南、API文档、截图
🚀 工作原理(高级流程)
- 主张提取 – 选定的LLM阅读文章并输出简洁、可验证的陈述列表以及关键实体。
- 查询重写与检索 – 对于每个主张,LLM创建多个搜索查询。查询被发送到选定的搜索后端;返回的片段使用BGE-M3嵌入,按相似性(默认≥0.45)和是否提及主张的实体进行排序和过滤,然后保留前K个(默认8)。
- 多步骤验证 – LLM将每个主张分解为原子子主张,向证据片段询问答案,汇总答案,并最终将原始主张标记为TRUE、FALSE或UNVERIFIABLE。
📖 文档与帮助
- 使用指南 –
docs/usage.md(逐步UI演练)。 - API参考 –
docs/api_doc.html。 - 问题跟踪器 – https://github.com/CaptainYifei/fake-news-detector/issues 用于错误和功能请求。
📜 许可证
MIT – 免费使用、修改和分发。
⭐ 快速总结
AI虚假新闻检测器是一个即用型、本地托管的事实核查系统,利用现代LLM和嵌入模型自动化多语言的主张提取、证据收集和验证。对于希望在不依赖专有云服务的情况下获得端到端流水线的开发人员或研究人员来说,它特别有用。
相关
- 项目
- 项目
- 项目
- 项目
- 项目