CaptainYifei/fake-news-detector

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

📚 프로젝트 개요

AI 가짜 뉴스 탐지기 – 사용자가 뉴스 기사의 사실성을 검증할 수 있는 Streamlit 기반 웹 앱입니다. 대규모 언어 모델(LLM) 프롬프팅, 의미적 임베딩 검색, 다단계 주장 검증을 연결하여 작동합니다. 중국어, 영어, 일본어, 한국어를 지원하며, Ollama, LM Studio, OpenAI 또는 OpenAI API 스키마를 따르는 사용자 정의 API와 함께 사용 가능합니다.


🔑 핵심 기능

기능 기능 설명
다국어 지원 입력 언어를 자동 감지하고, 중국어, 영어, 일본어, 한국어 중 하나로 결과를 출력할 수 있습니다.
3단계 사실 검증 파이프라인 1️⃣ LLM을 사용해 기사에서 핵심 주장을 추출합니다. 2️⃣ 쿼리 재작성, 웹 증거 검색(DuckDuckGo 기본, SearXNG 옵션), BGE‑M3 임베딩으로 순위 매기기, 유사도 및 엔티티 일치로 필터링. 3️⃣ 주장 분해 → 증거 기반 답변 → 최종 판단 집계.
모델 독립형 백엔드 Ollama(기본 Qwen2.5‑3B + BGE‑M3), LM Studio, OpenAI GPT 모델, 또는 OpenAI API 스키마를 따르는 모든 서비스와 호환됩니다.
증거 게이팅 사용자 정의 가능한 top‑K, 유사도 임계값, 엔티티 게이트를 통해 검증 단계에 도달하는 증거의 품질을 보장합니다.
사용자 및 데이터 관리 다중 사용자 로그인, 로컬 DB에 저장된 기록, 검증 보고서의 PDF 내보내기 기능.
API 프로그래밍적으로 사용 가능한 경량 REST 엔드포인트(/check)를 제공합니다.

🛠️ 빠른 시작 (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       # 3단계 노드 조율
├─ 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 등에 대한 기본 URL과 모델 ID 정의.
  • 기본값 – 사용할 LLM/임베딩 모델, 검색 엔진, 출력 언어, 증거 필터링 임계값(evidence_top_k, evidence_min_similarity, evidence_entity_gate) 선택.
  • 다른 제공자로 전환은 JSON 편집만으로 가능. 코드는 시작 시 자동으로 읽음.

🐞 알려진 문제 및 문제 해결

  • 모델이 멈추거나 빈 응답 – Ollama 서비스가 실행 중인지 확인(ollama list)하고, model_config.jsonbase_url이 올바른지 확인.
  • 검색 결과 없음 – 네트워크 연결 확인. ddgs 래퍼는 여러 DuckDuckGo 백엔드로 자동 포괄. 모두 실패 시 옵션 SearXNG 백엔드 활성화.
  • 검증 불가 판단 – 유사도 임계값이 너무 높거나 엔티티 게이트로 모든 후보가 필터링된 경우. evidence_min_similarity 조정 또는 evidence_entity_gatefalse로 설정.
  • 다국어 출력 문제 – 선택한 LLM이 대상 언어를 지원하는지 확인. 더 큰 OpenAI 모델은 네 언어를 더 신뢰성 있게 처리.

📄 라이선스

MIT – LICENSE 참조.


TL;DR – 이 리포지토리는 LLM 프롬프팅, 의미 검색, 다단계 검증을 통합한 로컬 호스팅 가능한 AI 사실 검증 시스템을 제공합니다. 웹 UI, API, 다국어 지원을 갖춘 실용적인 AI 소프트웨어 프로젝트입니다.

관련

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