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 문서, 스크린샷
🚀 작동 방식(높은 수준의 흐름)
- 주장 추출 – 선택된 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과 임베딩 모델을 활용하여 여러 언어로 주장 추출, 증거 수집 및 검증을 자동화하는 즉시 실행 가능한 로컬 호스팅 팩트체크 시스템입니다. 독점 클라우드 서비스에 의존하지 않고 엔드투엔드 파이프라인을 원하는 개발자나 연구자에게 특히 유용합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트