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 모델 호출개념 있음파이프라인 구성 필요
🗃️ 벡터 DBpgvector + 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 FormattingRAG 결과를 보기 좋게 포맷해 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 SearchChroma, Qdrant, Weaviate, FAISS
Embeddingbge-m3, text-embedding-3-small, ko-simcse
Rerankingbge-reranker-large, colBERT, cross-encoder
LLM InferenceLlama.cpp, OpenRouter, vLLM, HF text-generation-inference
FrameworkLangChain, LlamaIndex, or 직접 FastAPI 구성

유료/무료 구분된 추천 개발 도구 세트 요약표:

용도도구유료/무료
Vector SearchChroma무료
Qdrant무료 (호스팅 유료 가능)
Weaviate무료 (호스팅 유료 가능)
FAISS무료
Embeddingbge-m3무료 (HF 모델)
text-embedding-3-small유료 (OpenAI)
ko-simcse무료
Rerankingbge-reranker-large무료 (HF 모델)
colBERT무료
cross-encoder무료
LLM InferenceLlama.cpp무료 (로컬 추론)
OpenRouter유료 (API 단가)
vLLM무료 (로컬 배포)
HF text-gen-inference무료 (모델 자체는 유료일 수 있음)
FrameworkLangChain무료
LlamaIndex무료
FastAPI (직접 구성)무료

Was this page helpful?