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=trueonly 구성이 더 적합하다.
최종 적용 프로파일
최종 적용:
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 기준으로 기존 61
72초 구간 대비 약 1017배 빠르다. - MCP 기준으로도 기존 54.3초 실패 사례 대비 성공 응답이 약 4.6~8.2초로 줄었다.
- DB/VPD 실행 병목이 아니라 Select AI 프로파일/모델/메타데이터 구성이 핵심 병목이었다.
남은 주의점
- 같은 자연어라도 Select AI 생성 SQL은 완전히 결정적이지 않다.
- 테스트에서도 반환 건수가 1~2건으로 흔들렸다.
- 이는 LLM SQL 생성 특성이다.
- 비즈니스 품질을 더 안정화하려면 table/column comment와 annotation을 계속 보강해야 한다.
- 특정 데모 질문은 deterministic SQL fallback 후보로 둘 수 있다.
- 예:
CUST_ID,PRODUCT_CD,EXT_INSURER,EXT_PRODUCT_GRP가 명확한 비교 질문.
- 예:
- 장기적으로는 profile을 설정값으로 분리하는 것이 좋다.
- 현재는 DB package 상수로 고정되어 있다.
- 운영 전환 시
CB_BACKOFFICE_SETTING또는 별도 Select AI 설정 테이블에서 profile을 읽도록 개선할 수 있다.
현재 권고
데모/PoC 운영 기준으로는 현재 적용한 아래 프로파일을 유지한다.
KB_AIDP_SELECTAI_GPT54_MINI_COMMENTS_PROFILE_V1
이유:
- 응답 시간이 데모 가능한 수준이다.
- comment 기반 스키마 설명을 유지한다.
- ORDS/MCP 양쪽 모두 실제 호출 성공을 확인했다.