Files
vpd-permission-poc/docs/reports/2026-07-10-existing-01-mcp-rag-diagnosis.md

3.7 KiB

기존-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은 41048CONTRACT_NO가 아니라 PRODUCT_CD로 해석했다.

KC.CUST_ID = 'C1001006'
KC.PRODUCT_CD = '41048'
EH.EXT_INSURER = '삼성화재'
EH.EXT_PRODUCT_GRP = '자동차'

대표 반환값:

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 스키마에 존재한다.

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

건수:

TOTAL_CHUNKS=38772
OWN_CHUNKS=28506
COMP_CHUNKS=10266

KB 41048 약관 근거는 존재한다.

DOC_41048|KB손해보험|OWN||KB개인용자동차보험|b5b680222361c4cde7a54855925333a3
SAMPLE_41048|KB손해보험|OWN||KB개인용자동차보험|...|자동차26-41048-1-04 KB개인용자동차보험 ...

RAG 측 원인 판단

KB 41048 약관 chunk는 있지만 PRODUCT_CODE 메타데이터가 비어 있다.

company_name=KB손해보험
company_type=OWN
product_code=<empty>
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 관리 기능으로 메타데이터 품질을 운영 가능하게 한다.