Files
ExperionCrawler/plans/결정보류2건-사용자액션.md
windpacer 302183c97e feat: P&ID 연결 분석, LLM 에이전트 모드, KB 확장, MCP 서버 리팩토링
- P&ID: 연결 분석 API, Prefix 규칙 관리, 카테고리 분류, DXF 그래프 빌드
- LLM: 대화 요약, tool card 영구 보존, 시계열 차트(uPlot), 에이전트 모드
- KB: 청크 미리보기, Field Instrument Inference, 인증/Qdrant 클라이언트
- MCP: 서버 기능 확장, 파이프라인 수정, timeout 개선
- Frontend: P&ID UI, LLM UI, KB UI, OPC UA Write 탭 추가
- 설정: AGENTS.md, plant_context, README, opencode.json 업데이트
- 정리: 진단 체크리스트 문서 삭제
2026-05-21 23:36:57 +09:00

7.2 KiB
Raw Blame History

결정 보류 2건 — 사용자 액션 가이드

작성일: 2026-05-14 대상: plans/빅피클-잔여작업-코딩계획.md 7번(현장 재고), 8번(BGE-M3) 상태: 코드 작업 불필요. 사용자 의사 결정과 운영 액션이 필요.


1. 현장 재고 데이터 출처 결정

현황

Phase 0 설계서(G3)에서 "현장 재고 데이터 자체가 시스템에 없음"으로 식별됨. 운전원이 "P-6201 펌프 예비품 재고", "교체용 PT100 센서 수량" 같은 질문을 했을 때 참조할 데이터 소스가 없어 답변 불가.

결정해야 할 것

옵션 설명 사용자 액션
A. KB 업로드 (권장) 엑셀/CSV/PDF 재고 대장을 plant_operation 또는 report 컬렉션에 업로드 → 즉시 RAG 검색 가능 1) 재고 대장 파일 확보 (관리부/구매팀 협조)
2) 컬럼 구조 정리 (품목·규격·수량·위치·재발주점)
3) 14번 탭 "RAG 관리" → 업로드
B. ERP/MES API 연동 외부 시스템에서 실시간 재고 조회 1) ERP 운영팀과 API 협의
2) 인증/네트워크 방화벽 정책
3) 별도 개발 필요 (Phase 8)
C. 수동 입력 테이블 PostgreSQL에 inventory_table 신설, 관리자 UI에서 직접 입력 1) 누가 어떻게 최신화할지 거버넌스 결정
2) 별도 개발 필요
D. 보류 유지 운전원 질문 시 "재고 정보는 별도 시스템 참조" 안내 운전원 교육

권장: 옵션 A

근거:

  • 현재 KB 시스템(Qdrant 5종 컬렉션)이 이미 운영 중
  • xlsx/pdf 자동 파싱 + 임베딩 + 한국어 검색 모두 동작
  • 코드 추가 0줄, 즉시 시도 가능
  • 부족하다면 그때 B 또는 C로 확장

사용자가 해야 할 일 (옵션 A 채택 시)

  1. 재고 대장 파일 확보
    • 관리부/구매팀에서 최신 재고 엑셀 입수
    • 민감정보(가격·공급사 단가 등) 제외 또는 가공 결정
  2. 업로드
    • 앱 접속 → 14번 "RAG 관리" 탭
    • 관리자 비밀번호 로그인
    • 컬렉션 = plant_operation (또는 신규 inventory 컬렉션을 원하면 DB 시드 확장 요청)
    • 태그 = inventory, 예비품 등 일관된 태그 부착
  3. 검증
    • 채팅(#13)에서 "PT100 센서 재고 알려줘" 같은 질문으로 검색 결과 확인
    • 결과가 부정확하면 청크 미리보기(🔍 버튼)로 인덱싱 품질 확인
  4. 운영 룰
    • 월 1회 or 분기 1회 최신 파일 재업로드 (이전 버전은 "🚫 비활성화" 후 "🗑 정리")
    • 갱신 주체 1명 지정

사용자가 해야 할 일 (옵션 B/C로 갈 경우)

이 문서 범위 밖. 별도 요건 정의서가 필요. 본 항목은 옵션 결정만 요청.


2. 임베딩 모델 BGE-M3 마이그레이션 검토

현황

  • 현재 사용 중: nomic-embed-text (768-dim, Ollama 호스트)
  • 후보: bge-m3 (1024-dim, 다국어 SOTA, 특히 한국어 성능 우수)
  • 5개 Qdrant 컬렉션이 768-dim으로 생성된 상태

결정해야 할 것

전환 시 이득비용을 비교 후 GO/NO-GO/POSTPONE 결정.

이득 비용/위험
한국어 검색 품질 향상 (대시기관 평가 기준 +5~15%) Qdrant 컬렉션 5개 전부 재생성 → 기존 인덱스 일시 소실
멀티링구얼(영문 매뉴얼+한국어 SOP 혼합)에 강함 1024-dim → Qdrant 디스크 사용량 +33%
Dense + Sparse + ColBERT 통합 모델 임베딩 속도 ~30% 느려짐 (GPU 점유율 ↑)
청크 크기 8K 토큰까지 지원 (nomic은 2K) Ollama가 bge-m3 미지원 시 다른 호스트 필요 (HF transformers 등)

마이그레이션 절차 (실행 시)

  1. 사전 평가 ⚠️ (사용자 액션)
    • BGE-M3가 Ollama Library에 있는지 확인 (ollama pull bge-m3)
    • 없으면 대안 결정: HF transformers, sentence-transformers 또는 별도 임베딩 서버
    • 현재 KB 검색 품질에 실질 문제가 있는지 — 운전원 피드백 수집 (1~2주)
  2. 샘플 비교 (선택) (사용자 액션)
    • 동일 한국어 쿼리 10건을 두 모델로 비교
    • 한국어 정밀도에서 명백한 개선이 보일 때만 GO
  3. 백업 (사용자 액션)
    • storage/kb/ 전체 백업
    • pg_dumpkb_* 테이블 백업
  4. 코드 작업 (개발자 액션 — 본 문서 범위 아님)
    • appsettings.jsonKb:EmbeddingModel, Kb:VectorSize 설정 추가
    • KbEmbeddingClient.cs 에서 모델명/차원 환경변수 참조
    • KbStartupService.cs 에서 컬렉션 차원 mismatch 감지 시 재생성
  5. 컷오버 (사용자 액션)
    • 운영 외 시간대 선택 (KB 검색 일시 중단)
    • Qdrant 컬렉션 5개 삭제 → 새 차원으로 재생성
    • 모든 KB 문서 일괄 재인덱싱(↻) 트리거
    • 완료까지 모니터링 (문서 수 × 청크 수 × 임베딩 시간)

권장: POSTPONE (당분간 보류)

근거:

  • 현재 nomic-embed-text 검색 품질이 운영에 임계 미달이라는 정량 증거가 없음
  • BGE-M3 전환은 비가역적 비용(재인덱싱 시간, 디스크 +33%)이 큰 결정
  • Phase 7 신규 기능(채팅 통합·청크 미리보기·요약 등)이 운영에서 안정화된 후 사용자 피드백으로 검색 품질 이슈가 누적되면 그때 검토

사용자가 해야 할 일

  • 1~2개월간 운영하면서 KB 검색 결과가 부정확했던 사례를 메모
    • 질문 / 기대 답변 / 실제 검색된 문서 / 점수
    • 메모 위치: 별도 텍스트 파일 또는 본 문서에 추가
  • 사례가 5건 이상 누적되고 한국어 매칭 실패가 패턴화되면 마이그레이션 재검토 회의
  • 회의 시점에 다시 본 문서를 갱신 (GO/NO-GO 결정 기록)

즉시 가능한 대안 (개발자 액션 불필요)

검색 품질이 부족할 때 BGE-M3 전환 없이 시도해 볼 수 있는 것:

시도 방법
더 좋은 청킹 업로드 시 chunking_policy 옵션 조정 (현재는 자동)
태그 보강 KB 업로드 시 태그를 풍부하게 부착 → search_kb의 tags 필터로 정확도 ↑
컬렉션 분리 doc_type별 5개 컬렉션을 더 세분화
top_k 조정 채팅에서 검색 결과 수를 늘려 LLM이 더 많은 단서로 답하게

체크리스트 요약 (사용자가 해야 할 일)

단기 (이번 주 ~ 2주 내)

  • 재고 데이터: 옵션 A(KB 업로드) 채택 여부 결정 → 채택 시 관리부에 파일 요청
  • BGE-M3: 마이그레이션은 보류, 검색 품질 모니터링 시작

중기 (1~3개월)

  • 재고 KB 파일 1차 업로드 + 검증
  • KB 검색 부정확 사례 누적 (5건 임계)

장기 (3개월+)

  • BGE-M3 마이그레이션 재검토 회의 (사례 누적 시)
  • 재고 데이터를 ERP 연동으로 격상할지 검토 (옵션 A로 한계 도달 시)

본 문서 갱신 규칙

이 문서는 결정이 진행됨에 따라 사용자가 직접 갱신합니다.

  • 결정 완료 시: 해당 섹션에 "결정 결과", "결정자", "결정일" 추가
  • 보류 유지: "재검토 예정일" 추가
  • 옵션 변경: 새 옵션 행 추가 + 이전 결정 사유 보존