CaptainYifei/fake-news-detector

基于LLM和证据检索的虚假新闻自动检测系统

📚 프로젝트 개요

AI 가짜 뉴스 탐지기 – 사용자가 뉴스 기사의 사실성을 검증할 수 있는 Streamlit 기반 웹 앱입니다. 대규모 언어 모델(LLM)과 의미론적 임베딩 모델을 연결하여 (1) 텍스트에서 핵심 주장을 추출하고, (2) 해당 주장을 검색 쿼리로 재작성하며, (3) 웹 증거를 검색하고, (4) 각 주장을 단계별로 분해하고 평가합니다. 이 시스템은 중국어, 영어, 일본어, 한국어로 작동하며 로컬 Ollama 모델부터 OpenAI의 GPT까지 모든 OpenAI 호환 모델 서비스에서 실행할 수 있습니다.


✨ 핵심 기능

기능 설명
다국어 지원 입력 언어(zh, en, ja, ko)를 자동 감지하고 해당 언어 중 하나로 출력할 수 있습니다. UI는 이중 언어입니다.
플러그 가능한 모델 제공자 Ollama(기본 Qwen2.5 3B + BGE-M3 임베딩), LM Studio, OpenAI 또는 OpenAI 스키마를 따르는 모든 사용자 정의 API에서 작동합니다.
3노드 팩트체크 파이프라인 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

웹 UI 실행

streamlit run app.py

브라우저에서 http://localhost:8501을 엽니다.

API 서버 실행

python api.py   # 기본적으로 포트 8080에서 서버 시작

그런 다음 http://localhost:8080/check에 JSON을 POST할 수 있습니다(정확한 페이로드는 README 참조).


⚙️ 구성

모든 조정 가능한 매개변수는 **model_config.json**에 있습니다:

  • 제공자 – 각 서비스(예: Ollama, OpenAI)에 대한 기본 URL 및 모델 목록을 정의합니다.
  • 기본값 – 기본 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        # 3노드 파이프라인 오케스트레이션
├─ 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 문서, 스크린샷

🚀 작동 방식(높은 수준의 흐름)

  1. 주장 추출 – 선택된 LLM이 기사를 읽고 간결하고 검증 가능한 진술과 주요 엔터티 목록을 출력합니다.
  2. 쿼리 재작성 및 검색 – 각 주장에 대해 LLM이 여러 검색 쿼리를 생성합니다. 쿼리는 선택된 검색 백엔드로 전송되고 반환된 스니펫은 BGE-M3로 임베딩되어 유사성(기본 ≥0.45) 및 주장의 엔터티를 언급하는지 여부로 순위가 매겨지고 필터링된 후 상위 K(기본 8)가 유지됩니다.
  3. 다단계 검증 – LLM이 각 주장을 원자적 하위 주장으로 분해하고 증거 스니펫에 답변을 요청하고 답변을 집계한 후 원래 주장을 TRUE, FALSE 또는 UNVERIFIABLE로 최종 레이블링합니다.

📖 문서 및 도움말


📜 라이선스

MIT – 자유롭게 사용, 수정 및 배포할 수 있습니다.


⭐ 빠른 요약

AI 가짜 뉴스 탐지기는 최신 LLM과 임베딩 모델을 활용하여 여러 언어로 주장 추출, 증거 수집 및 검증을 자동화하는 즉시 실행 가능한 로컬 호스팅 팩트체크 시스템입니다. 독점 클라우드 서비스에 의존하지 않고 엔드투엔드 파이프라인을 원하는 개발자나 연구자에게 특히 유용합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트