# 기존-01 MCP/RAG 진단 리포트 ## 대상 시나리오 - 질문 번호: 기존-01 - 분류: 권한 + RAG 질문형 - 이해관계자: 설계사 `FC00789` - 질의: `C1001006 고객 자동차보험 갱신 상담 전에, 현재 KB 계약(41048)과 삼성화재 보유 자동차보험 약관을 비교해서 고객에게 설명할 차별 포인트를 정리해줘.` ## 정형 MCP 확인 결과 정형 MCP 경로는 복구 확인됐다. - MCP endpoint: `https://kb.cloud-handson.com/mcp` - tool: `ords.query.kb_select_ai_vpd` - Select AI profile: `KB_AIDP_SELECTAI_GPT55_OCI_PROFILE_V2` - 검증 결과: - `HTTP_STATUS=200` - `MCP_HAS_ERROR=FALSE` - `MCP_IS_ERROR=FALSE` - `ITEM_COUNT=1` 생성 SQL은 `41048`을 `CONTRACT_NO`가 아니라 `PRODUCT_CD`로 해석했다. ```text KC.CUST_ID = 'C1001006' KC.PRODUCT_CD = '41048' EH.EXT_INSURER = '삼성화재' EH.EXT_PRODUCT_GRP = '자동차' ``` 대표 반환값: ```text CUSTOMER_ID=C1001006 KB_CONTRACT_NO=CT2699001 KB_PRODUCT_CODE=41048 KB_PRODUCT_NAME=41048_KB개인용자동차보험 KB_PREMIUM=1350000 EXTERNAL_INSURER=삼성화재 EXTERNAL_PRODUCT_GROUP=자동차 EXTERNAL_PRODUCT_TYPE=개인용 EXTERNAL_CLAUSE_NAME=개인용애니카다이렉트자동차보험 ``` ## 적용한 정형 MCP 보완 - `POC_2` KB 업무 테이블/컬럼 comment를 보강했다. - Select AI `showprompt` 확인 결과, comment와 annotation이 실제 모델 프롬프트에 포함됨을 확인했다. - SQL 정규화/검증 로직을 보완했다. - 마크다운 fence와 선행 wrapper comment를 제거한다. - 문자열 리터럴 내부의 세미콜론/금지어를 실행 문법으로 오판하지 않도록 검사한다. - DDL/DML/PLSQL/system object 차단은 유지한다. 변경 스크립트: - `sql/adb/65_kb_select_ai_vpd_query_api.sql` ## RAG 근거 검색 확인 결과 RAG corpus는 `POC_2` 스키마에 존재한다. ```text POC_2.KB_OWN_TERMS_DOCUMENTS POC_2.KB_OWN_TERMS_CHUNKS POC_2.KB_COMPETITOR_TERMS_DOCUMENTS POC_2.KB_COMPETITOR_TERMS_CHUNKS POC_2.KB_TERMS_CHUNKS_ALL_V ``` 건수: ```text TOTAL_CHUNKS=38772 OWN_CHUNKS=28506 COMP_CHUNKS=10266 ``` KB 41048 약관 근거는 존재한다. ```text DOC_41048|KB손해보험|OWN||KB개인용자동차보험|b5b680222361c4cde7a54855925333a3 SAMPLE_41048|KB손해보험|OWN||KB개인용자동차보험|...|자동차26-41048-1-04 KB개인용자동차보험 ... ``` ## RAG 측 원인 판단 KB 41048 약관 chunk는 있지만 `PRODUCT_CODE` 메타데이터가 비어 있다. ```text company_name=KB손해보험 company_type=OWN product_code= product_name=KB개인용자동차보험 chunk_text contains 자동차26-41048-1-04 ``` 따라서 RAG 검색/필터가 `PRODUCT_CODE = '41048'` 또는 상품코드 기반 필터를 사용하면 KB 근거가 제외될 수 있다. 본문 텍스트에는 `41048`이 있으므로 순수 텍스트 검색으로는 찾을 수 있지만, 메타데이터 필터 기준 검색에서는 빠질 가능성이 높다. ## 권고 RAG/약관 적재 담당 영역에서 아래 중 하나를 처리해야 한다. 1. `KB_OWN_TERMS_DOCUMENTS` / `KB_OWN_TERMS_CHUNKS` 적재 시 `자동차26-41048-1-04`에서 업무 상품코드 `41048`을 추출해 `PRODUCT_CODE`에 저장한다. 2. 기존 적재분에 대해 `KB개인용자동차보험` 또는 `자동차26-41048-1-04` 문서를 대상으로 `PRODUCT_CODE='41048'` backfill을 수행한다. 3. 검색 필터가 상품코드만 보지 말고 `PRODUCT_NAME`, `CHUNK_TEXT`의 약관 승인번호 패턴도 fallback으로 보도록 보강한다. VPD 관리 인스턴스에서는 이 영역을 직접 수정하지 않고, 정형 데이터/Select AI 쪽 table comment와 annotation 관리 기능으로 메타데이터 품질을 운영 가능하게 한다.