본문으로 건너뛰기
5분

시맨틱 레이어

자연어 질문과 실제 데이터 사이에서 시맨틱 레이어가 무엇을 번역하는지 설명합니다.

사람은 "지난달 계약 금액"이라고 묻지만 데이터에는 amt_krw와 ctr_dt 같은 열이 있을 뿐입니다. 시맨틱 레이어는 이 둘 사이의 해석을 미리 적어 두는 층입니다. 어떤 표현이 어떤 열과 지표를 가리키는지 정해 두면, 같은 질문이 매번 다르게 해석되지 않습니다.

시맨틱 레이어는 하나의 파일이 아니라 세 가지 자원으로 나뉩니다. 테이블은 물리 테이블 중 질의에 노출할 열과 그 의미를 정하고, 값 사전은 사람이 쓰는 표현을 실제 값으로 잇고, 질의 템플릿은 자주 나오는 질문 형태를 미리 정의합니다. 이 층이 비어 있으면 모델이 열 이름과 값을 추측하게 되고, 같은 질문에 다른 답이 나옵니다.

추측이 만드는 문제

이 층이 없으면 모델은 열 이름과 값을 문맥에서 짐작합니다. 짐작은 자주 맞지만 언제 틀렸는지 알기 어렵다는 점이 문제입니다.

amt_krw와 amt_total 중 무엇이 계약 금액인지 모델이 고를 때, 답은 그럴듯한 숫자로 나옵니다. 틀린 열을 골랐다는 사실은 숫자를 검증하기 전에는 드러나지 않습니다. 같은 질문을 다시 물었을 때 다른 열을 고를 수도 있고, 그러면 어제와 오늘의 답이 달라집니다. 시맨틱 레이어는 정확도를 조금 올리는 장치가 아니라, 해석을 한곳에 고정해 답이 흔들리지 않게 하는 장치입니다.

세 자원이 맡는 서로 다른 번역

세 자원은 각각 다른 종류의 간극을 메웁니다.

자원메우는 간극예
테이블물리 열과 그 의미 사이질의에 amt_krw를 노출하고 계약 금액이라고 적어 둡니다
값 사전사람이 쓰는 표현과 저장된 값 사이데이터플랫폼팀이라는 말이 코드 T-01을 가리킵니다
질의 템플릿반복되는 질문 형태와 실제 조회 사이거래처별 계약 금액 집계처럼 자주 나오는 형태를 미리 정의합니다

테이블만 있고 값 사전이 없으면 열은 맞게 골라도 조건 값이 어긋납니다. 반대로 값 사전만 채우면 어떤 표를 봐야 하는지가 남습니다. 세 자원을 함께 보아야 한 질문이 끝까지 번역됩니다.

온톨로지와 무엇이 다른가

두 층은 모두 데이터에 의미를 붙이지만 향하는 방향이 다릅니다.

온톨로지는 데이터가 무엇이고 서로 어떻게 이어지는지를 정합니다. 사람이 어떤 단어로 부르는지와 무관하게 성립합니다. 시맨틱 레이어는 사람의 말과 데이터 사이의 번역을 정합니다. 같은 개념을 부르는 표현이 조직마다 다르면 시맨틱 레이어만 달라지고 온톨로지는 그대로입니다.

그래서 둘은 대체 관계가 아닙니다. 온톨로지가 정리되어 있으면 시맨틱 레이어가 가리킬 대상이 분명해지고, 시맨틱 레이어가 있으면 그 구조를 자연어로 꺼낼 수 있습니다.

무엇을 넣고 무엇을 빼는가

질문에 반복해서 등장하는 표현부터 넣습니다. 계약 금액, 팀, 투입 인원처럼 조직이 매일 쓰는 말이 우선입니다. 한 번 쓰고 말 표현까지 채우면 관리 비용만 늘고 답의 일관성은 나아지지 않습니다.

정의가 갈리는 표현은 넣기 전에 합의가 필요합니다. 중도 해지 건을 포함한 계약 금액과 제외한 계약 금액이 팀마다 다르다면, 그 차이를 정하지 않은 채 사전에 올리면 틀린 답을 일관되게 내놓게 됩니다. 시맨틱 레이어는 합의를 기록하는 자리이지 합의를 대신하는 자리가 아닙니다.