KION RAG 파이프라인

Hybrid RAG: BM25 + 벡터 검색 + 의도 파악 + 세션 관리

BM25 + Vector Intent Parser Session
BGE-M3 ChromaDB Qwen 2.5 32B
사용자 질의 (User Query)
"6 inch Si 웨이퍼, 게이트 산화막 5nm, RTA 필요, 400℃ 이상"
1
질의 분석 (Query Analysis)
자연어에서 의도와 조건 추출

🔍 키워드 추출

6 inch Si 게이트 산화막 RTA 400℃ 5nm

🏷️ 메타데이터 매핑

웨이퍼 사이즈 → 6 inch 매핑됨
재료 → Si (Silicon) 매핑됨
공정 카테고리 → 열처리 매핑됨
1.5
의도 파악 (Intent Parsing) NEW
복잡한 질의 분석 (부정문, 복합, 연계 질의)

🧠 빠른 의도 체크

❌ 부정문: "800도 이하로만" 감지
➕ 복합: "MOCVD랑 PECVD 둘 다" 감지
🔗 연계: "8인치로 바꿔줘" 세션

🎯 LLM 의도 분석 (복잡한 경우만)

// quick_intent_check() → needs_llm_parsing { query_type: "negative", exclude_temp_min: 800, search_query: "800도 이하 열처리" }
app/intent_parser.py | app/conversation.py
2A
임베딩 생성
BGE-M3 → 1024차원 벡터
💬
질의
→
🤖
BGE-M3
→
📐
Vector
[0.0234, -0.0891, 0.1523, ...] // 1024 dim
2B
Policy DB 조회
공정-장비 매핑, 기관 정책
🏭 RTA → 열처리 카테고리 매핑
📋 게이트 산화막 → Oxidation 매핑
🏢 기관 우선순위 적용 적용
3
하이브리드 검색 (Hybrid Search) NEW
BM25 키워드 검색 + 벡터 시멘틱 검색 결합

🔤 BM25 (키워드)

기술 용어 정확 매칭 MOCVD
스펙 매칭 6inch
온도 단위 400℃

📐 Vector (시멘틱)

의미 기반 유사도 Cosine
동의어 처리 ✓
문맥 이해 ✓
// hybrid_search() hybrid_score = vector_score × 0.5 + bm25_score × 0.5 // app/hybrid_search.py
102
전체 장비
→
20
하이브리드 Top-K
4
메타데이터 필터링 (Post-filtering)
벡터 검색 결과에서 Hard 조건 필터

🔴 Hard 조건 (필수)

웨이퍼
6 inch ✓
온도
≥400℃ ✓

🟡 Soft 조건 (유연)

재료
Si (가중치)
카테고리
열처리 (가중치)

📊 필터링 결과

20
벡터 검색 결과
→
8
Hard 조건 통과
// Hard 조건만 필터 results.filter(eq => eq.wafer_size == '6 inch' && eq.max_temp >= 400 )
5
리랭킹 (Reranking)
유사도 + Soft 조건 가중치로 최종 순위 결정
1
RTA (6인치) - KION-102
한국나노기술원 | 열처리 | Si, SiO2 | 400~1200℃
98%
2
Rapid Thermal Processor - KION-045
나노종합기술원 | 열처리 | Si | 300~1100℃
92%
3
Tube Furnace (6인치) - KION-078
광주나노기술집적센터 | 열처리 | Si, GaN | 500~1200℃
85%
0.98
최고 유사도
1.2s
검색 시간
3
추천 장비
6
LLM 응답 생성 (Response Generation)
Qwen 2.5 32B로 자연어 응답 생성

📥 프롬프트 구성

📋 시스템 프롬프트
💬 사용자 질의
🔧 검색된 장비 컨텍스트

📤 생성 파라미터

Temperature: 0.7
Max Tokens: 2048
Streaming: ON

요청하신 조건에 맞는 장비를 찾았습니다.

RTA (6인치) [KION-102]를 추천드립니다.
- 위치: 한국나노기술원
- 웨이퍼: 6인치 Si 지원
- 온도: 400~1200℃ (RTA 공정)
- 용도: 게이트 산화막 형성에 적합

매칭률: 98% | 예약 가능 | 예약하기 →

7
세션 저장 (Session Save) NEW
대화 이력 저장으로 연계 질의 지원

💾 저장 정보

🔑 session_id: abc12345 발급
📋 추출 조건 (웨이퍼, 온도, 재료)
🔧 추천 장비 ID 목록
💬 응답 요약

🔗 다음 질의 활용

👤 "8인치로 바꿔줘"
→ 이전 조건 + 웨이퍼=8인치 병합
👤 "비슷한 다른 장비는?"
→ 이전 카테고리 유지 참조
// conversation_manager.add_turn() { session_id: "abc12345", turn: 1, conditions: { wafer: "6 inch", temp_min: 400 } }