Files
vpd-permission-poc/docs/reports/2026-07-10-select-ai-profile-performance-report.md

10 KiB

Select AI 프로파일 전환 및 호출 시간 리포트

대상

  • 날짜: 2026-07-10
  • 대상 서비스: VPD 관리 인스턴스 MCP / ORDS Select AI 조회
  • MCP endpoint: https://kb.cloud-handson.com/mcp
  • MCP tool: ords.query.kb_select_ai_vpd
  • ORDS endpoint: /ords/cb-ords/kb-select-ai-vpd/query
  • 테스트 질의:
C1001006 고객 자동차보험 갱신 상담 전에, 현재 KB 계약(41048)과 삼성화재 보유 자동차보험 약관을 비교해서 고객에게 설명할 차별 포인트를 정리해줘.

결론

기존 openai.gpt-5.5 기반 Select AI 프로파일은 SQL 생성 시간이 길고, 같은 질의에서도 SQL 생성 실패/거절 응답이 간헐적으로 발생했다.

최종 적용 프로파일은 아래로 변경했다.

KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1

이 프로파일은 openai.gpt-5.4-mini를 사용하고, comments=true를 켜서 테이블/컬럼 comment 기반 SQL 생성을 유지한다. 최종 ORDS 직접 호출은 약 4.1초, MCP 호출은 약 4.6~8.2초 범위로 확인됐다.

기존 호출 시간

기존 운영 프로파일:

KB_AIDP_SELECTAI_GPT55_OCI_PROFILE_V2
model=openai.gpt-5.5
provider=oci
region=us-chicago-1
provider_endpoint=https://inference.generativeai.us-chicago-1.oci.oraclecloud.com
comments=true
annotations=true
constraints=true
conversation=true
enforce_object_list=true

관찰된 기존 병목:

측정 구간 시간 결과
VPD context 설정 282ms 정상
확정 SQL + VPD 실행 50ms 정상
showprompt metadata/prompt 생성 43.817초 prompt 18,806자
showsql 1차 38.770초 SQL 생성 성공
showsql 2차 105.505초 non-SQL refusal
SQLcl direct package 호출 61.123초 SQL 생성 및 2건 반환
MCP 경로 호출 54.3초 ORA-20813, Select AI가 유효 SELECT 생성 실패
GPT-5.5 재비교 호출 72초 SQL 대신 refusal 메시지 반환

판단:

  • DB/VPD/ORDS 자체가 느린 것이 아니다.
  • 주 병목은 DBMS_CLOUD_AI.GENERATE 내부의 Select AI prompt 구성과 LLM SQL 생성 단계다.
  • comments, annotations, constraints, conversation, enforce_object_list가 모두 켜진 GPT-5.5 프로파일은 prompt가 커지고 응답 편차가 컸다.

후보 프로파일 테스트 결과

1. 단순 모델 교체 후보

프로파일 모델 설정 결과
KB_AIDP_SELECTAI_GPT5_MINI_PROFILE_V1 openai.gpt-5-mini 기존 GPT-5.5와 유사 ORA-20404 ... /actions/chat
KB_AIDP_SELECTAI_GPT41_MINI_PROFILE_V1 openai.gpt-4.1-mini 기존 GPT-5.5와 유사 ORA-20404 ... /actions/chat
KB_AIDP_SELECTAI_GROK43_PROFILE_V1 xai.grok-4.3 기존 GPT-5.5와 유사 ORA-20404 ... /actions/chat
KB_AIDP_SELECTAI_GPT54_MINI_PROFILE_V1 openai.gpt-5.4-mini 기존 GPT-5.5와 유사 ORA-20404 ... /actions/chat

오류:

ORA-20404: Object not found - oci://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/chat

단순히 모델명만 바꾸는 방식은 안정적이지 않았다.

2. 기존 성공 프로파일 방식 확인

기존에 성공한 프로파일:

POC_SELECT_AI_ALL
model=xai.grok-4.3

확인된 차이:

  • oci_compartment_id가 있음
  • comments, annotations, constraints, conversation, enforce_object_list 플래그가 없음

비교 결과:

프로파일 시간 결과
KB_AIDP_SELECTAI_GPT55_OCI_PROFILE_V2 72초 refusal 메시지 반환
POC_SELECT_AI_ALL 16초 SQL 생성 성공

3. FAST 프로파일 테스트

POC_SELECT_AI_ALL 구조를 기준으로 oci_compartment_id를 포함하고, 무거운 메타데이터 플래그를 제거한 FAST 후보를 만들었다.

프로파일 모델 showprompt prompt 크기 showsql 결과
KB_AIDP_SELECTAI_GROK43_FAST_PROFILE_V1 xai.grok-4.3 3초 5,049자 7초 성공
KB_AIDP_SELECTAI_GPT54_MINI_FAST_PROFILE_V1 openai.gpt-5.4-mini 0초 5,049자 4초 성공

FAST 방식은 빠르지만, 테이블/컬럼 comment 활용이 약해진다. 따라서 최종 적용용으로는 comments=true만 추가한 절충형을 별도 테스트했다.

4. Full metadata 프로파일 테스트

comments=true에 더해 annotations=true, constraints=true까지 켠 후보를 추가 테스트했다.

프로파일:

KB_AIDP_SELECTAI_GPT54_MINI_FULLMETA_PROFILE_V1
model=openai.gpt-5.4-mini
comments=true
annotations=true
constraints=true
enforce_object_list=true

DBMS_CLOUD_AI 단독 측정:

회차 showprompt prompt 크기 showsql 결과
1 32초 19,816자 15초 성공
2 3초 19,816자 6초 성공
3 4초 19,816자 13초 성공

ORDS 실제 경로 측정:

회차 HTTP 총 시간 오류 반환 건수
1 200 8.224초 없음 2
2 200 7.288초 없음 2
3 200 6.217초 없음 2

평균:

7.243초

비교:

구성 ORDS 평균 상대
comments=true only 4.156초 1.0x
comments + annotations + constraints 7.243초 약 1.7x 느림

판단:

  • Full metadata 구성은 동작한다.
  • 단, prompt 크기가 12,520자에서 19,816자로 증가한다.
  • ORDS 기준 평균 응답 시간이 4.156초에서 7.243초로 늘어난다.
  • 데모 응답성 기준으로는 comments=true only 구성이 더 적합하다.

최종 적용 프로파일

최종 적용:

KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1
model=openai.gpt-5.4-mini
comments=true
enforce_object_list=true
oci_compartment_id=<configured>

테스트 결과:

구간 시간 결과
showprompt 6초 성공
prompt 크기 12,520자 comment 포함
showsql 4초 성공

선택 이유:

  • GPT-5.5 대비 훨씬 빠르다.
  • FAST 프로파일보다 prompt가 크지만, 테이블/컬럼 comment를 유지한다.
  • VPD 관리 인스턴스에서 보강한 table/column comment 운영 효과가 Select AI에 반영된다.

적용 내용

DB 패키지

POC_2.KB_SELECT_AI_VPD_QUERY_API의 Select AI profile 상수를 변경했다.

c_profile_name CONSTANT VARCHAR2(128) := 'KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1';

대상 스크립트:

sql/adb/65_kb_select_ai_vpd_query_api.sql

ORDS 응답 표시

ORDS JSON 응답의 profile 표시도 새 프로파일로 변경했다.

profile=KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1

대상 스크립트:

sql/adb/66_kb_select_ai_vpd_query_ords.sql

MCP 응답 표시

MCP tool 응답 payload의 profile 표시와 화면 설명을 새 프로파일 기준으로 변경했다.

대상 소스:

src/main/java/com/cloudhandson/vpdbackoffice/service/McpSseService.java
src/main/resources/templates/mcp-sse.html

최종 속도 측정

ORDS 직접 호출

호출 대상:

https://g329127dfd380ad-kbaipoc.adb.ap-osaka-1.oraclecloudapps.com/ords/cb-ords/kb-select-ai-vpd/query
회차 HTTP 총 시간 응답 profile 오류 반환 건수
1 200 4.058초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 2
2 200 4.216초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 2
3 200 4.195초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 1

평균:

4.156초

MCP 호출

호출 대상:

https://kb.cloud-handson.com/mcp
회차 HTTP 총 시간 MCP payload profile ORDS profile 오류 반환 건수
1 200 4.632초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 2
2 200 8.213초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 2
3 200 7.279초 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1 없음 1

평균:

6.708초

참고:

  • MCP time_starttransfer는 약 0.008~0.012초였지만, 최종 응답 body 완료 기준은 time_total이다.
  • MCP 경로는 백오피스 HTTP 처리와 ORDS 호출 wrapping이 추가되므로 ORDS 직접 호출보다 약간 느릴 수 있다.

개선 효과

비교 항목 기존 GPT-5.5 최종 GPT-5.4-mini comments
SQLcl direct package 61.123초 4초대 SQL 생성
기존 MCP 실패 사례 54.3초 후 실패 4.6~8.2초 성공
GPT-5.5 재비교 72초 후 refusal 4.1초대 ORDS 성공
prompt 크기 18,806~21,776자 12,520자

정리:

  • 최종 ORDS 기준으로 기존 6172초 구간 대비 약 1017배 빠르다.
  • MCP 기준으로도 기존 54.3초 실패 사례 대비 성공 응답이 약 4.6~8.2초로 줄었다.
  • DB/VPD 실행 병목이 아니라 Select AI 프로파일/모델/메타데이터 구성이 핵심 병목이었다.

남은 주의점

  1. 같은 자연어라도 Select AI 생성 SQL은 완전히 결정적이지 않다.
    • 테스트에서도 반환 건수가 1~2건으로 흔들렸다.
    • 이는 LLM SQL 생성 특성이다.
  2. 비즈니스 품질을 더 안정화하려면 table/column comment와 annotation을 계속 보강해야 한다.
  3. 특정 데모 질문은 deterministic SQL fallback 후보로 둘 수 있다.
    • 예: CUST_ID, PRODUCT_CD, EXT_INSURER, EXT_PRODUCT_GRP가 명확한 비교 질문.
  4. 장기적으로는 profile을 설정값으로 분리하는 것이 좋다.
    • 현재는 DB package 상수로 고정되어 있다.
    • 운영 전환 시 CB_BACKOFFICE_SETTING 또는 별도 Select AI 설정 테이블에서 profile을 읽도록 개선할 수 있다.

현재 권고

데모/PoC 운영 기준으로는 현재 적용한 아래 프로파일을 유지한다.

KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1

이유:

  • 응답 시간이 데모 가능한 수준이다.
  • comment 기반 스키마 설명을 유지한다.
  • ORDS/MCP 양쪽 모두 실제 호출 성공을 확인했다.