DeepNexus Quick Start
Initial Idea는 RAG, Fine-tuning, and more. 공인 중개사 시험 문제 생성기로 발전하여 (Idea Expansion and Development), 다양한 공인 시험의 문제 생성기로 범용화
1. 현재 상태 평가
1. FT-only용 데이터셋 완비
문제 + 보기 + 정답 + 해설
구조가 모두 포함된 JSON 구조llama3_prompt
필드까지 구성해 실제 prompt 재현에 최적화- 주제 다양화(중개업자의 의무, 중개대상물 등)도 잘 되어 있음
2. prompt 기반의 학습 컨셉 명확
- system / user / assistant 구조로 prompt 구성
- 모델 학습 시 instruction-following에 적합하게 세팅됨 (LLaMA 3 계열 모델에 잘 맞음)
3. 추후 RAG로 확장할 전제까지 고려
- “기출 문제 스타일”은 FT로 학습
- 법령은 RAG로 연결 (벡터 DB, SQL까지 계획됨)
2. FT+RAG 전환/병행을 위한 다음 단계 설계
구성 요소 | 설명 | 지금 상태 | 필요 작업 |
---|---|---|---|
🔎 법령/시행령 DB | 조문 단위 chunking, 출처 포함 | 개념 있음 | ✅ chunk 스키마 설계, ✅ 벡터화 |
📥 Embedding | 예: text-embedding-3-small , bge-m3 , KoSimCSE | 계획 중 | 모델 선택 및 chunk 적용 |
🧠 RAG 프롬프트 템플릿 | 법령 + 출제 지시로 구성 | 일부 내장 중 | ✔️ separate 템플릿 설계 필요 |
🎯 FT 모델 역할 분리 | “문제 스타일 재현”에 집중 | ✅ 완료 | 유지 |
🧪 Inference flow | 사용자 입력 → 법령 grounding → FT 모델 호출 | 개념 있음 | 파이프라인 구성 필요 |
🗃️ 벡터 DB | pgvector + SQL or FAISS | 언급됨 | 설계 착수 단계 |
3. 예시: FT+RAG 기반 문제 생성 흐름
사용자가 입력:
"중개업자가 간판 철거해야 하는 요건에 대한 문제 만들어줘"
🔍 RAG 처리:
{
"text": "공인중개사법 제18조 제2항: 중개업자가 폐업신고를 한 경우에는 그 등록관청에 간판을 지체 없이 철거하여야 한다.",
"source": "공인중개사법",
"id": "law-18-2"
}
🧠 Prompt 구성 (템플릿 예):
다음 법령을 참고하여 공인중개사 시험 스타일의 객관식 문제를 만들어주세요.
- 문제 유형: basic
- 보기: 5개
- 정답: 1개 이상 가능
- 해설 포함
[법령 내용]
공인중개사법 제18조 제2항: 중개업자가 폐업신고를 한 경우에는 그 등록관청에 간판을 지체 없이 철거하여야 한다.
🤖 FTed 모델 출력 (예상):
{
"question": "...",
"options": { ... },
"answer": [...],
"explanation": "...",
...
}
4. RAG 최적화 시스템 아키텍처 제안 (효과 + 효율 중심)
🌐 전체 흐름 요약
사용자 입력 → Query Rewrite (선택) → Vector Search (Chroma or HF-compatible)
→ [Optional] Re-ranking → Prompt 구성 → FTed 모델 호출 → 문제 JSON 생성
🔹 1. 효과 중심 설계 (정확한 문제 생성)
기술 요소 | 설명 | 추천 도구/기법 |
---|---|---|
✅ 법령 기반 chunking | 문단 or 조문 단위로 자르되, 의미 단위 유지 | 문장 유사도 기반 스플리터 (e.g. Langchain recursive_text_splitter with chunk_overlap) |
✅ Query Rewriting | 사용자 질의의 검색 성능 향상 (의역, 법령화) | T5 계열, ko-mt5 , or llm-r-ag |
✅ Re-ranking | 최종 grounding 문서 재정렬 (정확도 향상) | bge-reranker , koSimCSE , ColBERT |
✅ Prompt Injection 방지 | 사용자가 쓴 질문을 검증 | input sanitation 또는 guardrails (LLM 쿼리 검증) |
✅ Prompt Formatting | RAG 결과를 보기 좋게 포맷해 FT 모델에 전달 | 명시적 지시 포함: [법령 내용] ~ 문제 유형: basic 등 |
🔹 2. 효율 중심 설계 (빠른 응답 + 비용 절감)
기술 요소 | 설명 | 추천 방식 |
---|---|---|
⚡ Caching (Query/Embedding) | 동일한 질문, 동일한 문서 벡터화 방지 | Qdrant , Redis , or Langchain InMemoryCache , TTLCache |
⚡ Embedding 모델 경량화 | 문서 + 질의 임베딩 비용 줄이기 | bge-m3 , text-embedding-3-small , e5-small |
⚡ RAG DB 분리 또는 압축 | 자주 쓰는 법령만 우선 로딩 | hot chunks DB + cold storage 분리 |
⚡ Prompt 크기 최적화 | LLM token 줄이기 (속도, 비용 ↓) | chunk 압축 → 요약 후 전달 (LLaMA3 + summarizer ) |
⚡ Parallel processing | 검색 + Rerank + Prompt 구성을 병렬 처리 | asyncio , FastAPI 기반 비동기 처리 |
5.아키텍처 다이어그램 (요약)
[사용자 입력]
│
▼
[Query Rewrite] ← Optional (질문 정제)
│
▼
[Vector Search (Chroma or HF-compatible)]
│
├──> [Cache Hit] → 결과 재사용
▼
[Reranker (bge-reranker or KoSimCSE)]
▼
[Prompt Formatter]
▼
[FTed LLaMA3 모델]
▼
[시험 문제 JSON 출력]
6. 예시 Prompt (FT 모델 입력용)
당신은 공인중개사 문제 출제 전문가입니다. 다음 법령을 참고하여 객관식 문제를 만들어주세요.
[법령 발췌]
공인중개사법 제18조 제2항: 중개업자가 폐업신고를 한 경우에는 등록관청에 간판을 지체 없이 철거하여야 한다.
조건:
- 문제 유형: basic
- 보기 5개
- 정답 1개 이상 가능
- 해설 포함
- 형식: JSON {"question": "...", "options": {...}, "answer": [...], "explanation": "..."}
문제:
7. Deploy: Hugging Face Spaces 운영 시 고려사항
고려 요소 | 내용 |
---|---|
💾 DB 적재 방식 | Hugging Face는 서버 상태 유지가 어렵기 때문에, Chroma DB는 로컬 캐시 + embedding 재생성 자동화 필요 |
🛡️ 보안 및 자원 제한 | Hugging Face에서 long-running task 제한 → embedding async 처리 권장 |
⚙️ 추론 속도 최적화 | embedding + rerank는 worker thread 분리 or queue 처리 고려 |
💵 API 비용 고려 | embedding/LLM inference는 openrouter , groq , ollama , llama-cpp 등 대안 고려 가능 |
8. 추천 개발 도구 세트
용도 | 추천 도구 |
---|---|
Vector Search | Chroma , Qdrant , Weaviate , FAISS |
Embedding | bge-m3 , text-embedding-3-small , ko-simcse |
Reranking | bge-reranker-large , colBERT , cross-encoder |
LLM Inference | Llama.cpp , OpenRouter , vLLM , HF text-generation-inference |
Framework | LangChain , LlamaIndex , or 직접 FastAPI 구성 |
유료/무료 구분된 추천 개발 도구 세트 요약표:
용도 | 도구 | 유료/무료 |
---|---|---|
Vector Search | Chroma | 무료 |
Qdrant | 무료 (호스팅 유료 가능) | |
Weaviate | 무료 (호스팅 유료 가능) | |
FAISS | 무료 | |
Embedding | bge-m3 | 무료 (HF 모델) |
text-embedding-3-small | 유료 (OpenAI) | |
ko-simcse | 무료 | |
Reranking | bge-reranker-large | 무료 (HF 모델) |
colBERT | 무료 | |
cross-encoder | 무료 | |
LLM Inference | Llama.cpp | 무료 (로컬 추론) |
OpenRouter | 유료 (API 단가) | |
vLLM | 무료 (로컬 배포) | |
HF text-gen-inference | 무료 (모델 자체는 유료일 수 있음) | |
Framework | LangChain | 무료 |
LlamaIndex | 무료 | |
FastAPI (직접 구성) | 무료 |