성경적 창조론과 젊은 지구 연대설을 바탕으로 질문에 답변하는 하이브리드 RAG(Retrieval-Augmented Generation) 시스템입니다.
- Python: 3.9 이상
- Ollama: 로컬 LLM 및 임베딩 모델 실행을 위해 설치 필요
- LLM 모델:
qwen2.5:14b(Ollama) - Embedding 모델:
qwen3-embedding:8b(Ollama)
- LLM 모델:
- Hugging Face Reranker:
BAAI/bge-reranker-v2-m3(HuggingFace에서 자동 다운로드)- 참고: Mac 메모리 최적화를 위해 16-bit (
float16) 정밀도를 사용하며, Apple Silicon(MPS) 및 일반 CPU 환경에 최적화되어 있습니다.
- 참고: Mac 메모리 최적화를 위해 16-bit (
- Vector Store: ChromaDB를 사용하여
chroma_db/폴더에 임베딩 데이터 저장. - Source Data:
rag_preprocessed_data.json기반 (제목, 내용 청크, URL 포함). - Metadata:
chunk_id,title,url정보를 포함하여 답변 시 출처 표기 가능.
- BM25 Retriever: 키워드 기반의 전통적인 텍스트 검색 (Top 10).
- Vector Retriever: 의미적 유사성 기반의 벡터 검색 (Top 10).
- Ensemble: 두 검색 결과를 0.5:0.5 가중치로 결합하여 검색 정확도 극대화.
- Cross-Encoder:
BAAI/bge-reranker-v2-m3모델을 사용하여 검색된 문서의 연관성 재평가. - Top-N: 재정렬된 문서 중 가장 관련성이 높은 상위 5개 문서만 선별하여 컨텍스트로 사용.
- Tag Filtering: 모델이 생성하는 불필요한 XML/HTML 태그(
<think>,<answer>등)를 자동 제거하여 깔끔한 답변 제공. - Persona: 창조과학 전문가 페르소나 적용 (젊은 지구 연대설, 노아의 홍수 기반 해석, 확신에 찬 어조).
- Hyperlink References: 답변 마지막에
[제목](URL)형식의 마크다운 하이퍼링크를 포함하는 🔗 참고 자료 섹션을 시스템이 자동으로 추가 (중복 URL 제거 로직 포함).
pip install -r requirements.txt-
데이터 정제 + 전처리 (Data Pipeline):
creation_science_data.csv를 정제하고, 청크로 나누어rag_preprocessed_data.json을 생성합니다.python data_pipeline.py
-
벡터 DB 적재 (Vector DB Ingestion): 생성된 JSON 데이터를
chroma_db폴더에 임베딩하여 저장합니다. (Ollama에서qwen3-embedding:8b모델이 실행 중이어야 합니다.)python ingest_vector_db.py
2.1 Google Drive에서 chroma_db 파일 다운 1,2 뛰어 넘어도 됨. https://drive.google.com/file/d/1zdxkGgW2R2mLA_XRxAENbLTTPSnNydI2/view?usp=drive_link
- 애플리케이션 실행 (Run App):
Streamlit 웹 인터페이스를 실행합니다.
streamlit run app.py
config.py: 모델명, 경로, 파라미터 등 설정값 중앙 관리app.py: Streamlit 챗봇 UItext_utils.py: 텍스트 클리닝 및 태그 분리 유틸리티retriever.py: 문서 로딩, 벡터DB, 하이브리드 검색 및 Reranker 로직chain.py: LLM 프롬프트 및 생성 체인data_pipeline.py: 데이터 정제 + RAG 전처리/청킹 통합 파이프라인ingest_vector_db.py: ChromaDB 생성 및 Ollama 기반 임베딩 적재creation_science_data.csv: 원본 데이터셋chroma_db/: 벡터 데이터베이스 저장 폴더