처리 흐름도

사용자 쿼리부터 추천 결과까지의 상세 처리 과정

💬
사용자 쿼리 입력
"6인치 GaN MOCVD 장비 추천해줘"
🔍
Query Parser
자연어 → 구조화된 조건 추출
ParsedQuery 객체
📋
파싱 결과
wafer: 6inch, material: GaN, category: 증착
📚
RAG 벡터 검색
ChromaDB 유사도 검색 (top_k * 2)
후보 장비 6개
🎯
필터 & 리랭킹
하드 조건 필터 + 점수 재계산
필터 통과 장비 3개
🤖
LLM 추천 생성
Ollama (Qwen2.5) 스트리밍 응답
장비 정보
📦
Equipment Cards
ID, 이름, 점수, 스펙
AI 설명
📝
Explanation
추천 이유, 비교 분석
SSE 스트리밍
✅
결과 출력
챗봇 UI에 실시간 표시
🔍 Query Parser 상세

웨이퍼 사이즈 추출

inch/mm 표기 모두 인식하여 정규화

"6인치" → "6 inch"
"200mm" → "8 inch"

온도 조건 추출

범위, 이상/이하, 고온/저온 키워드 인식

"400도 이상" → temp_min: 400
"고온" → temp_min: 500

재료 추출

75개 재료 매핑 (한글/영문)

"갈륨비소" → "GaAs"
"실리콘" → "Si"

카테고리 추출

73개 키워드 → 10개 카테고리

"MOCVD" → "증착"
"ICP 식각" → "식각"
🎯 필터 & 리랭킹 상세

하드 필터 조건

필터 항목
웨이퍼 사이즈 온도 범위 지원 재료

점수 계산

combined_score =
vector_score * 0.4 +
filter_score * 0.6
🤖 LLM 프롬프트 구조

시스템 프롬프트 (prompts/recommendation_stream.txt)

포맷 지시
1. **[장비ID]** 장비명 - 특징 설명
2. **[장비ID]** 장비명 - 특징 설명
3. **[장비ID]** 장비명 - 특징 설명

따라서 **[최적 장비ID]** 장비명를 추천드립니다.