weiwill88/Local_Pdf_Chat_RAG

🧠 纯原生 Python 实现的 RAG 框架 | FAISS + BM25 混合检索 | 支持 Ollama / SiliconFlow | 适合新手入门学习

해결하고자 하는 문제

이 프로젝트는 Retrieval‑Augmented Generation(RAG)을 이해하고 구현하려는 개발자를 위해 설계된 로컬화된 지능형 Q&A 시스템을 제공합니다. 투명하고 모듈화된 파이프라인을 제공함으로써 "블랙 박스" RAG 구현 문제를 해결하고, 로컬 문서와 채팅하면서 다양한 LLM 백엔드를 지원합니다.

작동 방식

시스템은 구조화된 RAG 파이프라인을 따릅니다:

  1. 문서 처리: 여러 형식(.pdf, .txt, .docx, .md, .html, .csv, .xls, .xlsx)에서 텍스트를 추출하고, 청크로 분할한 뒤 벡터로 변환합니다.
  2. 하이브리드 검색: FAISS 의미 검색과 BM25 키워드 검색을 결합해 재현율과 정확성을 향상시킵니다.
  3. 재정렬: CrossEncoder 또는 LLM을 사용해 검색 결과를 정제합니다.
  4. 생성: 검색된 컨텍스트를 프롬프트로 구성하고, 설정된 LLM(Ollama, SiliconFlow 또는 Magick API)으로 전송해 최종 답변을 생성합니다.
  5. 선택적 강화: SerpAPI를 통합해 실시간 웹 검색을 수행할 수 있으며, DeepSeek‑R1을 통한 Chain‑of‑Thought 처리도 지원합니다.

대상 사용자

주로 개발자와 RAG 초보자를 위한 것으로, 문서 로드, 벡터화, 하이브리드 검색 및 LLM 통합을 실습할 수 있는 학습 플랫폼을 제공합니다.

주요 특징

  • 하이브리드 검색 전략: FAISS(의미)와 BM25(키워드) 검색을 모두 통합.
  • 유연한 LLM 백엔드: Ollama를 통한 로컬 추론과 SiliconFlow, Magick API와 같은 클라우드 API를 지원하며 자동 백엔드 감지를 제공합니다.
  • 고급 RAG 기술: CrossEncoder를 이용한 결과 재정렬 및 재귀 검색을 구현.
  • 인터랙티브 UI: Gradio 기반 웹 인터페이스를 제공하며, 문서 청크 시각화를 포함합니다.