@@ -67,3 +67,46 @@ credential, region, compartment, object list와 metadata instructions를 복제
|
||||
형식을 기록한다. 품질·지연시간 결과를 검토하기 전에는
|
||||
`sg_game_extract_mentions`와 `sg_game_match_candidate`의 운영 프로파일을 바꾸지
|
||||
않는다.
|
||||
|
||||
후보 모델 비교는 `sql/adb/114_sgmp_create_scope_chat_candidate_profiles.sql`과
|
||||
`sql/adb/115_sgmp_scope_chat_candidate_benchmark.sql`으로 수행한다. 후보는
|
||||
운영과 분리된 `SGMP_SCOPE_*` 프로파일로 생성한다. 각 모델은 `NONE`, `SINGLE`,
|
||||
`MULTI`, `ALL` 질문에서 다음을 기록한다.
|
||||
|
||||
- 초 단위 Chat 응답시간
|
||||
- 설명문·Markdown 없이 raw JSON만 반환했는지
|
||||
- `scope_hint`와 `game_mentions` 수가 기대값과 일치하는지
|
||||
- 생성 또는 Chat 호출 오류
|
||||
|
||||
## 게임명 추출과 벡터 점수 판정
|
||||
|
||||
게임명과 조회 범위 추출은 짧은 JSON Chat 작업이므로 운영 프로파일
|
||||
`SGMP_POC_OCI_COHERE_COMMAND` (`cohere.command-latest`)을 사용한다.
|
||||
게임 카탈로그의 `ALIASES_JSON`에는 게임명, 영문명, 약칭, 게임 ID, prefix와
|
||||
운영 등록 별칭을 JSON 배열로 저장한다. 이 JSON 배열 전체를 게임당 하나의
|
||||
임베딩으로 생성한다. 추출된 각 게임명은 해당 게임 벡터의 cosine distance와
|
||||
`SG_GAME_SCOPE_POLICY`에 저장된 최대값을 비교해 `MATCHED` 또는 `UNMATCHED`로
|
||||
판정한다. 후보 동일성 확인을 위한 별도 LLM 호출은 사용하지 않는다.
|
||||
|
||||
정책값은 코드가 아니라 DB 설정 테이블에 저장한다. 게임 카탈로그·임베딩 모델이
|
||||
변경되면 운영자가 그 기준값을 조정할 수 있다. `NONE`/`SINGLE`/`MULTI`/`ALL`
|
||||
계약, Few-shot NL2SQL 전달 형식, Text2SQL 프로파일은 유지한다.
|
||||
|
||||
### 검증 기준
|
||||
|
||||
- 추출 결과는 JSON 파싱 가능하고 `game_mentions`, `scope_hint`만 반환한다.
|
||||
- `NONE`, `SINGLE`, `MULTI`, `ALL`에서 canonical `targets`,
|
||||
`dataEligibleTargets`, `unresolvedTargets`가 유지된다.
|
||||
- 동일성 판정을 위한 추가 OCI Chat 호출이 발생하지 않는다.
|
||||
|
||||
### 후보 프로파일 비교 결과
|
||||
|
||||
동일한 JSON 추출 프롬프트로 `NONE`, `SINGLE`, `MULTI`, `ALL`을 호출한 결과,
|
||||
`cohere.command-latest`, `cohere.command-plus-latest`, `cohere.command-a-vision`은
|
||||
기본 4건에서 모두 범위와 게임명 수를 맞췄다. `google.gemini-2.5-flash-lite`는
|
||||
JSON 파싱이 일관되지 않았고, Grok과 Llama Maverick은 게임 미지정 또는 전체 게임
|
||||
질의에서 범위 오류가 있었다.
|
||||
|
||||
게임명 추출은 짧은 단일 JSON 요청이므로 `cohere.command-latest`를 선택했다.
|
||||
이 측정값은 ADB 내부 Chat 호출 시간이며, Portal의 MCP·ReAct·답변 합성 시간을
|
||||
포함한 전체 체감시간과는 별도로 관리한다.
|
||||
|
||||
@@ -105,9 +105,17 @@
|
||||
- 운영 registry에만 존재하는 게임도 카탈로그에 동기화하고 임베딩을 생성한다.
|
||||
- 게임별 물리 객체가 없으면 컬럼은 `null`이다.
|
||||
|
||||
`SG_GAME_CATALOG.ALIASES_JSON`에는 게임명, 영문명, 약칭, 게임 ID, prefix와
|
||||
운영 registry 별칭을 JSON 배열로 저장한다. 배열 전체를 게임당 하나의 벡터로
|
||||
임베딩한다. `SG_GAME_SCOPE_POLICY.GAME_ALIAS_MAX_COSINE_DISTANCE`는 벡터 검색
|
||||
점수의 신뢰도 기준이며, 후보·점수·원 질문은 `queryPlan`에 함께 보존해 다음
|
||||
Select AI가 이름 근거를 보조 판단할 수 있게 한다. 별도 LLM 후보 동일성 판정은
|
||||
사용하지 않는다.
|
||||
|
||||
`SG_GAME_CATALOG_SEARCH`는 물리 객체명을 후보 결과에 포함한다.
|
||||
`SG_GAME_QUERY_PLAN`은 추출된 mention마다 후보 선택 결과를 `targets`로 만들며,
|
||||
`ALL`은 벡터 선택 없이 전체 카탈로그를 사용한다.
|
||||
`SG_GAME_QUERY_PLAN`은 추출된 mention마다 벡터 점수 기반 후보 결과를 `targets`와
|
||||
`mentionResults.candidateGames`로 만들며, `ALL`은 벡터 선택 없이 전체 카탈로그를
|
||||
사용한다.
|
||||
|
||||
## 5. MCP와 NL2SQL 설계
|
||||
|
||||
|
||||
Reference in New Issue
Block a user