Policy DB 처리 순서도

사용자 쿼리 입력부터 응답까지 Policy DB가 적용되는 시점

사용자 입력
"6인치 GaN 에피 성장 장비 추천해줘"
1
쿼리 파싱
query_parser.py

웨이퍼 사이즈, 재료, 온도 등 하드 조건 추출

입력
"6인치 GaN 에피 성장..."
출력
wafer_size: "6 inch"
material: "GaN"
2
공정↔장비 매핑
policy.py
process_equipment_mapping.json 조회
"에피 성장" 키워드 → ["MOCVD", "MBE"] 카테고리 추가
매핑 전
wafer_size: "6 inch"
material: "GaN"
매핑 후
mapped_categories:
["MOCVD", "MBE"]
3
RAG 벡터 검색
rag.py

임베딩 생성 → ChromaDB 검색 → 메타필터 → 카테고리 부스팅

검색 조건
wafer = "6 inch"
material = "GaN"
boost: MOCVD, MBE
출력
[장비1, 장비2, ...]
(Top 20, rag_score 포함)
4
정책 필터 적용
policy.py
policy_settings.json 조회
• maintenance_exclude = true → 점검중 장비 제거
• external_visible = true → 외부 기관 포함
• min_rag_score = 0.3 → 낮은 점수 제거
5
기관 우선순위 적용
policy.py
institution_priority.json 조회
• 사용자 소속 기관 → priority = 0 (최우선)
• 나노종합기술원: 10 | 한국나노기술원: 20 | KIST: 30

정렬: priority ASC → rag_score DESC

6
리랭킹
filters.py

최종 점수 계산

final_score = rag_score × 0.7 + priority_score × 0.3
7
결과 제한
policy.py
max_recommendations = 5
→ 상위 5개 장비만 LLM에 전달
8
LLM 응답 생성
llm.py

시스템 프롬프트 + Top 5 장비 → 추천 이유 설명 생성

응답 반환
"GaN 에피 성장에는 MOCVD 장비를 추천드립니다..."

Policy DB 적용 시점 요약

단계 구분 적용 내용 목적 데이터 소스
STEP 1 쿼리 파싱 하드 조건 추출 웨이퍼, 재료, 온도 파싱 -
STEP 2 공정↔장비 매핑 키워드 → 카테고리 변환 검색 정확도 향상 process_equipment_mapping.json
STEP 3 RAG 검색 벡터 검색 + 메타필터 후보 장비 추출 ChromaDB
STEP 4 정책 필터 비즈니스 룰 적용 점검중 제외, 최소점수 등 policy_settings.json
STEP 5 기관 우선순위 기관별 정렬 소속 기관 우선 표시 institution_priority.json
STEP 6 리랭킹 최종 점수 계산 RAG + 우선순위 조합 -
STEP 7 결과 제한 Top N 추출 LLM 입력 최적화 policy_settings.json
STEP 8 LLM 생성 추천 설명 생성 자연어 응답 prompts/

Policy DB 데이터 파일

institution_priority.json

기관별 우선순위 설정

  • 나노종합기술원: 10
  • 한국나노기술원: 20
  • KIST: 30

policy_settings.json

시스템 정책 ON/OFF

  • maintenance_exclude: ON
  • max_recommendations: 5
  • min_rag_score: 0.3

process_equipment_mapping.json

공정 키워드 → 장비 매핑

  • 에피 성장 → MOCVD, MBE
  • 박막 증착 → Sputter, PECVD
  • 열처리 → RTA, Furnace