📘 Pragmatic LLM Search : 프로젝트 구상
프로젝트 개요
7B~14B급 오픈소스 LLM을 기반으로 실시간 검색(RAG) + 요약 + 번역 기능을 제공하는 AI 검색·요약 챗봇입니다.
- 사용자는 자연어로 질문 → 모델이 검색 쿼리로 변환 → 검색 결과를 종합해 답변 생성
- 최신 정보는 **웹 검색 API(Google Custom Search)**로 보완
- 모델은 추론 단계에서 프롬프트 체계를 통해 **플래너(검색 결정/쿼리 리라이트)**와 생성기(최종 답변 합성) 역할을 분리해 호출합니다.
목표
- 중규모 LLM(7B~14B)로 대형 모델 수준의 검색 정확도 추구
- RAG + RLHF(DPO)로 신뢰성/근거 충실한 답변 생성
- 실시간 검색 API로 최신성 확보
- 프롬프트 체계, 디코딩 정책, RAG 컨텍스트 설계 최적화
- Hugging Face Space 배포로 SaaS 형태 시연
- 연구적 확장(아키텍처 수준)을 통해 확장 가능성 탐구
기술 스택
- 모델
- LLM: Qwen 3 8B (메인 LLM, QLoRA SFT + DPO)
- 임베더: bge-small / e5-small
- 리랭커: monoT5-small / e5-reranker
- 프레임워크: PyTorch, Transformers, PEFT, TRL
- 검색: FAISS/Weaviate + BM25, Google Custom Search API
- 서빙/배포: Docker, HF Space
- 백엔드/프론트: FastAPI, gradio
데이터셋 설계
- 코퍼스(소규모): 기술 블로그/위키/FAQ/공개 RAG 데이터셋
- Query–Doc 쌍: 자연어 질문 ↔ 관련 문서 매핑
- Answer 데이터: 검색 결과 기반 요약/답변(출처 포함)
- Preference 데이터(DPO): Faithfulness/Completeness 기준의 좋은 vs 나쁜 답변 비교
- 참고: 역할 분리(플래너/생성기)는 학습 데이터로 분리하지 않고, 추론 단계 프롬프트 체계로 처리합니다.
개발 파이프라인
1차 개발 ― 서비스 중심 MVP
- Base 모델(Qwen 3 8B)을 그대로 활용
- RAG 파이프라인 구축: 로컬 벡터DB + Google Search API 결합
- 프롬프트 체계 설계: 플래너(검색 쿼리 생성/검색 여부 결정)와 생성기(최종 답변 합성) 역할 분리 (prompt engineering)
- Hugging Face Space에 배포하여 실제 SaaS 형태로 동작하는 검색·요약 챗봇 MVP 시연
2차 개발 ― 모델 학습 확장
- SFT (KorQuAD v2 기반): 검색 결과 기반 답변 형식(요약/핵심/출처 포함)을 학습
- DPO (Direct Preference Optimization): Faithfulness/Completeness 기준으로 선호 학습 → 환각 감소 및 출처 준수 강화
- Synthetic 데이터 소량 추가:
- 다국어 입력 → 내부 db search 결과 검증 및 planning → plannig결과에 따라 0~5개 범위의 다국어 검색 쿼리 생성
- 다중 컨텍스트 종합 + 출처 포함 답변
- A/B 테스트를 통해 Base vs Fine-tuned 모델 비교, 서비스 품질 개선 수치화
3차 확장 ― 모델 튜닝 및 연구적 확장
- Cross-attention, multimodal head, encoder 추가, layer추가, MoE Tuning 등 아키텍처 수준의 확장
- LoRA 타깃 다양화(Q/K/V/FFN 조합 비교), speculative decoding, KV-cache, model quantization 등의 최적화 실험
- custom forward, custom attn calculate logic 연구 및 서비스 내 적용
추론 파이프라인(프롬프트 체계 포함)
- Rate limit/캐시 확인
- LLM(플래너 프롬프트)
- 질문 의도를 분석하고, 필요 시 검색용 쿼리를 2–3개 생성
- 최신/불확실한 경우 검색을 권장
- 로컬 검색 + 웹 검색 API
- 벡터DB(BM25+Dense) → Top-k, 필요 시 Google Custom Search API 호출
- 리랭킹
- 교차 인코더로 Top-50 → Top-5~10
- 컨텍스트 구성
- 핵심 구절/제목/URL/토큰 예산 내 정규화
- LLM(생성기 프롬프트)
- 컨텍스트를 근거로 요약/핵심/출처 포함 답변 생성
- 근거 부족 시 “정보 부족” 표기
- 사후 검증/재검색
- 출처 누락/충돌 시 재시도
- 응답 스트리밍/메타 표시
- 남은 검색 횟수/소스 링크/타임스탬프
- 캐시 저장/로그 수집
현재 진행 상황
-
1차 개발 ― 서비스 중심 MVP
- 프로젝트 기획 및 전체 아키텍처 설계 완료
- 데이터 구조 설계 (코퍼스 구축, Query–Doc 매핑, Preference 데이터 정의)
- 코드 스켈레톤 작성 (모델 로드 및 추론 관련 모듈, 검색 모듈, 파이프라인, API 엔드포인트)
- RAG 파이프라인 초기 구현 (로컬 벡터DB + Google Search API 연동)[mvp단계에서는 적용 안 함]
- 프롬프트 체계 설계 및 테스트 (플래너/생성기 역할 분리)
- HF Space 배포 및 MVP 데모 페이지 공개
-
2차 개발 ― 모델 학습 확장
- KorQuAD v2 기반 QLoRA SFT 진행
- DPO 학습 및 리랭커 적용 (선호 데이터셋 기반)
- Synthetic 데이터 추가 (검색 쿼리 생성, 다중 컨텍스트 종합/출처 포함 답변)
- A/B 테스트 (Base vs Fine-tuned 모델 성능 비교 및 리포트 작성)
- 서비스 품질 개선 지표화 (정확도, 출처 포함률, 환각 감소율)
- service 로직 update[로컬 벡터 db 검색 활성화 등 적용]
-
3차 개발 ― 모델 튜닝 및 연구적 확장
- Cross-attention, multimodal head, encoder 확장 실험
- LoRA 타깃 다양화(Q/K/V/FFN 조합 비교)
- Speculative decoding, KV-cache 최적화 실험 및 서비스 적용
- 연구 성격의 확장 결과 정리 및 포트폴리오 반영
향후 계획
- 1st: 1차 개발 마무리 → 코드 스켈레톤 완성, RAG 파이프라인 초기 구현, HF Space MVP 배포
- 2nd: 2차 개발 착수 → KorQuAD v2 기반 QLoRA SFT, DPO 학습, Synthetic 데이터 반영, 추론 단계 프롬프트/디코딩 정책 최적화
- 3rd: Retrieval 튜닝 (BM25+Dense 하이브리드, 리랭커 최적화), 성능 평가 및 개선 리포트 작성
- 4th: 3차 개발 단계 → 모델 튜닝(아키텍처 레벨), LoRA 타깃 다양화, speculative decoding, KV-cache 최적화 등 연구적 확장 실험 진행
기대 효과
- 소규모 모델로 대형 모델 수준의 검색 정확도에 접근
- 근거 충실/출처 포함 응답으로 신뢰성 확보
- Fine-tuning과 추론 단계 최적화 역량을 모두 증명
- 후속 아키텍처 확장 가능성을 제시