12.4.2 컬럼 순서 및 별칭(Alias) 불일치 시 매핑 전략

12.4.2 컬럼 순서 및 별칭(Alias) 불일치 시 매핑 전략

관계형 데이터베이스의 SELECT 구문은 철저하게 사용자가 코드로 지시한 컬럼명(Column Name)의 서술 배치 순서를 그대로 쫓아, 반환되는 결과 텐서 테이블의 X축(가로축) 벡터 인덱스를 1:1로 결합시켜 출력하도록 설계되어 있다. 하지만 우리의 평가 대상인 Text-to-SQL AI 모델 에이전트는, 인간 정답자와는 완전히 다른 기상천외한 컬럼 순서를 배치하거나 예측할 수 없는 창의적인 별칭(Alias)을 사용하여 쿼리 구조체를 자유롭게 생성해 낼 확률이 극도로 높다.

1. 컬럼 순서의 무작위성(Column Order Randomness)과 인덱스 충돌 구조

가장 원초적으로 빈번하게 발생하는 불일치 오류는 컬럼 순서의 도치 현상이다. “사원의 이름과 나이를 모두 조회하라“는 아주 단순한 자연어 지시 사항에 대하여 오라클의 샌드박스는 다음과 같은 두 가지 텐서를 마주치게 된다.

  • 정답 쿼리 (Golden): SELECT name, age FROM employees \rightarrow 결과 텐서 스냅샷: [['Alice', 30], ['Bob', 45]]
  • AI 쿼리 (Predicted): SELECT age, name FROM employees \rightarrow 결과 텐서 스냅샷: [[30, 'Alice'], [45, 'Bob']]

위의 두 행렬(Matrix)은 요구사항을 완벽히 이행한 논리적 완전 동치(True Equivalence) 상태를 띈다. 하지만 0번 인덱스와 1번 인덱스의 스키마 위치가 물리적으로 뒤집혀 있기 때문에, 단순 튜플 배열 매칭(Tensor_A == Tensor_B)으로 채점하는 소프트웨어를 구동할 경우 시스템은 즉각적으로 기계적인 False 예외를 내뱉으며 모델을 학살해 버리고 만다.

2. 환각적 별칭(Hallucinated Alias)과 스키마 불투명성

게다가 최신 LLM들은 사용자의 가독성을 극대화하려는 RLHF 미세조정(Fine-Tuning)의 부작용으로, 컬럼 파커의 이름 스키마 영역마저도 친절하고 화려한 별칭(Alias)으로 무단 덮어 씌워버리는 성향을 강하게 띤다.

  • 정답 컬럼 헤더명: [name, age]
  • AI가 재창조한 컬럼 헤더명: [employee_full_name, current_age_years] (예: SELECT name AS employee_full_name)

이러한 헤더 변형이 일어나는 순간, 파이썬의 사전 객체(Dictionary)나 데이터 사이언스의 핵심인 Pandas DataFrame 환경에서 컬럼명(Key) 자체를 브리지(Bridge) 삼아 두 텐서를 결합(Join)하거나 직접 비교하려던 기존의 모든 정적 평가 전략은 완벽하게 셧다운(Shut-down)되어 버린다.

3. 값 기반의 유향 이분 매칭(Value-based Bipartite Matching) 위상 수학 전략

이러한 극단적인 X축의 파동과 뒤틀림을 수학적으로 영구 해결하기 위해, 오라클 내부의 전처리 정규화기(Normalizer) 엔진은 컬럼이 내세우는 얄팍한 ’이름표(Header Alias)’나 쿼리에서 타건 된 ’생성 순서 인덱스(Index Order)’를 철저하게 불신하고 묵살(Agnostic)해야 한다. 대신, 오직 **‘컬럼 뼈대 내부에 들어찬 실제 데이터 값들의 위상적 분포(Value Distribution)’ 하나만을 유일한 나침반으로 삼아 컬럼들을 서로 매핑(Mapping)**하는 고도의 대수학적 이분 매칭 알고리즘을 가동한다.

  1. 차원 일치 검증 (Dimension Check): 정답 텐서 행렬과 AI 텐서 행렬의 전체 컬럼 단면 개수(N)와 룩업 행 개수(M)가 물리적으로 동일한지 1차원 검증한다. (차원 N \times M이 다르면 파싱을 멈추고 즉시 EX = 0으로 탈락시킨다.)
  2. 컬럼 벡터의 집합(Set) 추출: 정답 텐서의 각 i번째 컬럼 벡터 전체와, AI 텐서의 각 j번째 컬럼 벡터 전체를 내려받아 중복이 제거된 파이썬 순수 1차원 해시 Set(집합)으로 압착 변환한다.
  3. 교차 이분 매칭 (Bipartite Graph Matching): 정답의 i번째 컬럼 집합과 AI의 j번째 컬럼 집합 사이에서 하나씩 교집합을 대조하며 유사도를 측정한다. (때로는 허용 오차를 반영하여) 이 값 집합의 Jaccard 교집합 유사도가 1.0에 수렴하는 쌍(Pair)을 찾아내어, 서로가 본질적으로 같은 데이터 혈통임을 증명하고 동적 딕셔너리 그래프(Mapper[j] = i)로 연결해 버린다.
  4. 강제 X축 재배치 (Re-indexing & Swap): 찾아낸 이 확정적 매핑 사전을 바탕으로, AI 예측 텐서의 열(Column) 물리적 순서를 정답 텐서의 열 기준 축에 맞추어 통째로 강제 스왑(Swap) 조작하여 재생성한다.

이 피가 튀는 ‘값 기반 컬럼 매핑(Value-based Column Mapping)’ 파이프라인 지옥을 완전히 통과한 직후에야, 두 행렬(Matrix)은 비로소 인덱스의 어긋남과 헤더(Alias) 껍데기의 방해 공작에서 벗어나 極단적으로 순수하고 투명한 1:1 값 배틀을 치를 수학적 준비 태세를 마치게 된다.