[AI]5단계_RAG_적용_설계_미션_생성 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
마니또 미션 생성 시스템의 RAG 적용 설계
1. 전체 데이터 흐름도 (LangGraph + RAG 기반 생성)
사용자 요청 (LangGraph 파이프라인 실행)
↓
select_query_node: 난이도 조건에 따라 쿼리 랜덤 선택
↓
rag_node: SBERT 임베딩 기반 유사 쿼리 검색 (ChromaDB)
↓
generate_mission_node: 프롬프트 구성 + LLM 미션 생성
↓
postprocess_node: 금지 키워드/중복 제거, 태그/이모지 추가
↓
evaluate_node: EXAONE 기반 자동 평가 (일관성/수행 가능성 등)
↓
check_completion_node: 난이도별 목표 개수 충족 여부 판단
↓
update_state_node: 상태 업데이트 및 반복 여부 판단
- LangGraph 기반 LangChain 파이프라인 사용
- ChromaDB + SBERT를 통한 Retrieval Augmented Generation (RAG)
- HyperCLOVA-X LoRA 모델로 LLM 생성, EXAONE 평가 모델 통합
2. 사용된 외부 지식 소스 및 구조적 선택
구성 요소 |
설명 |
선택 이유 |
ChromaDB |
유사 쿼리 검색을 위한 벡터 저장소 |
난이도 조건에 맞는 적절한 query context 제공 |
SBERT (KR) |
입력 쿼리 임베딩 생성 |
의미 기반 검색 정확도 확보 |
EXAONE 평가 모델 |
생성된 미션의 정량 평가 |
품질 통제 및 기준 이상 필터링 목적 |
HyperCLOVA-X LoRA |
LLM 기반 미션 생성기 |
경량화된 고성능 생성 모델 운영 가능 |
- Prompt + Retrieval + Generation + Evaluation까지 통합된 구조
- 사용자 조건 기반 반복 생성 → 품질 기준 만족까지 자동 반복
3. 생성 흐름 및 LangGraph 통합 방식
- 각 단계는 LangGraph에서 상태 기반 node로 분리되어 실행
- Retry 및 Loop 처리가
check_completion_node
와 update_state_node
를 통해 구현됨
# 초기 state 구성
initial_state = {
"attempt": 0,
"difficulty_idx": 0,
"difficulty_order": ["상", "중", "하"],
"current_diff": "상",
"mid_output": [],
"final_output": {"상": [], "중": [], "하": []},
"target_counts": {"상": 0, "중": 3, "하": 0},
"clean_tool": CleanMission(),
"emoji_generator": EmojiGen(),
"sbert_model": sbert_model,
"hated_mission_collection": hated_mission_collection,
"mission_collection": mission_collection,
"contents": contents,
"group_description": g_desc,
"user_query": None,
"random_queries": RANDOM_QUERIES,
"gen_llm_chain": gen_llm_chain,
"eval_llm_chain": eval_llm_chain
}
result = mission_graph.invoke(initial_state, config={"recursion_limit": 200})
4. RAG 방식 전/후 비교
항목 |
기존 방식 (단일 Prompt 기반) |
현재 방식 (LangChain + LangGraph + RAG) |
쿼리 다양성 |
제한적 |
SBERT 기반 의미 유사도 다양화 |
문맥 적합성 |
낮음 |
RAG 기반 query context 사용 |
생성 품질 |
불안정 |
평가 체인 도입으로 정량 통제 |
반복 제어 |
수동 반복 |
상태 기반 자동 반복 및 종료 판단 |
5. RAG 적용의 이점
- 생성 다양성 증가: 유사 쿼리를 다양하게 선택 → prompt context 풍부해짐
- 실패율 감소: 적절한 평가 기준 만족 시에만 미션 선택
- 기계적 반복 방지: 중복 제거, 금지 키워드 필터링으로 무의미한 생성 방지
- 확장성 보장: 평가 모델, 생성 모델, 임베딩 모델 교체가 독립적으로 가능
6. 운영 효율성과 목표 부합성
목표 |
적용 내용 |
품질 제어 |
평가 모델을 통한 통과 기준 만족 시에만 미션 채택 |
시스템 자동화 |
상태 기반 LangGraph 구조로 생성 루프 자동화 |
문맥 활용도 향상 |
RAG로 유사도 높은 쿼리를 활용해 문맥 적합도 상승 |
유지보수 용이성 |
각 단계가 모듈화되어 개별 수정 가능 (노드별 독립성 확보) |