도메인 전문가를 코드화하기: Spotify 데이터 어시스턴트를 뒷받침하는 컨텍스트 레이어 | Spotify Engineering (새 탭에서 열림)
Spotify의 데이터 어시스턴트가 신뢰할 만한 답변을 제공하는 핵심은 거대한 스키마를 LLM에 모두 넣는 것이 아니라, 도메인 전문가가 선별한 맥락 계층을 구축하는 데 있다. 이 맥락은 관련 데이터셋, 검증된 질문-SQL 예시, 업무 문서로 구성되며 각 도메인 팀이 소유하고 관리한다. 결국 AI는 전문가를 대체하기보다 전문가의 지식을 여러 사용자에게 확장하는 역할을 한다.
대규모 데이터 환경에서 스키마만으로 부족한 이유
- Spotify에는 7만 개 이상의 데이터셋과 페타바이트 규모의 데이터가 있다.
- 모든 스키마를 LLM의 컨텍스트에 넣는 방식은 다음과 같은 한계가 있다.
- 컨텍스트 윈도우가 전체 데이터 웨어하우스를 담기에 부족하다.
- 컬럼 타입만으로는 실제 업무 의미를 알 수 없다.
- 예를 들어
INT64컬럼만 보고는 테스트 데이터와 실제 데이터의 구분, 또는 “활성 사용자”의 정의를 알 수 없다.
- 테이블 수가 많을수록 모델은 비슷한 테이블 중 잘못된 대상을 선택하면서도 자신 있게 답할 수 있다.
- 따라서 스키마와 LLM 사이에 도메인별 의미와 사용법을 담은 별도의 맥락 계층이 필요하다.
Spotify 데이터 에이전트의 동작 방식
- 사용자가 자연어로 질문하면 에이전트가 다음 과정을 수행한다.
- 적절한 데이터 맥락을 선택한다.
- SQL을 생성한다.
- 데이터 웨어하우스에서 쿼리를 실행한다.
- 답변, 생성된 SQL, 사용한 출처를 함께 반환한다.
- ReAct 루프를 사용해 도구 호출 결과에 따라 추론과 행동을 반복하고, 필요하면 쿼리를 수정한다.
- 사용자는 결과뿐 아니라 답변이 어떻게 만들어졌는지도 확인할 수 있다.
- Slack 봇, IDE와 AI 도구에서 사용할 수 있는 MCP 서버, 전용 웹 UI로 제공된다.
- 관련 지식 기반이 없을 경우에도 이를 명시해 답변의 한계를 투명하게 드러낸다.
- 2025년 8월 기준 2,100명 이상의 사용자가 13,000건 이상의 대화에서 활용했으며, 광고·팟캐스트·음악·오디오북·재무 등 177개 클러스터를 지원한다.
도메인별 클러스터 모델
Spotify는 데이터 도메인을 “클러스터”라고 부른다. 클러스터는 특정 조직, 프로젝트, 이니셔티브 또는 관심 주제를 중심으로 구성되며, 각 클러스터는 이름이 지정된 전문가 팀이 소유한다.
- 데이터셋
- 관련 웨어하우스 테이블과 전체 스키마를 포함한다.
- 컬럼 카디널리티, 자주 등장하는 값의 샘플, 파티션 구조 등을 프로파일링한다.
- 예를 들어
country컬럼에US,GB,SE등이 존재한다는 정보는 모델이 적절한WHERE조건을 작성하는 데 도움을 준다.
- 질문-SQL 쌍
- 전문가가 작성하거나 검토한 질문과 SQL의 조합이다.
- 단순한 예시가 아니라 해당 도메인에서 권장되는 쿼리 패턴과 데이터 의미를 가르치는 few-shot 자료로 사용된다.
- 문서
- 업무 용어, 팀별로 달라지는 정의, 데이터 사용 시 주의점 등을 기록한다.
- 어떤 컬럼을 사용해야 하고 어떤 컬럼을 피해야 하는지도 설명할 수 있다.
- 클러스터의 범위, 포함할 테이블, 중요한 예시는 데이터 과학자와 애널리틱스 엔지니어 등 도메인 전문가가 결정한다.
자동 생성보다 전문가 검토가 중요한 이유
- Spotify는 데이터 웨어하우스의 과거 쿼리 기록에서 질문-SQL 쌍을 자동으로 생성하는 방법을 검토했다.
- 실제 쿼리이므로 유용할 것처럼 보였지만, 큐레이터가 승인한 예시는 전체의 12.5%에 불과했다.
- 나머지 87.5%에는 다음과 같은 쿼리가 포함되어 있었다.
- 일회성 탐색이나 디버깅 쿼리
- 다시 사용하지 않을 임시 분석
- 잘못된 테이블을 사용한 쿼리
- 기술적으로는 맞지만 다른 사용자에게 잘못된 패턴을 가르치는 쿼리
- 쿼리 기록에는 정보가 많지만, 어떤 쿼리가 표준적인 지식인지는 자동으로 표시되지 않는다.
- 따라서 AI가 데이터의 진실을 결정하도록 하지 않고, 전문가가 예시를 검토하고 정식 사례로 승인한다.
- 목적은 전문가를 대체하는 것이 아니라 전문가의 판단을 재사용 가능한 형태로 확장하는 것이다.
클러스터의 지속적인 건강 관리
데이터 스키마와 업무 규칙은 계속 변하기 때문에, 한 번 만든 맥락이 영원히 정확한 것은 아니다.
- 테이블이 교체되거나 폐기될 수 있다.
- 컬럼명이 변경될 수 있다.
- 비즈니스 정의와 분석 방식이 달라질 수 있다.
- 기존 질문-SQL 쌍이 변경된 스키마와 호환되지 않을 수 있다.
- Spotify는 여러 신호를 종합해 클러스터 건강 점수를 계산한다.
- 기반 데이터의 상태
- 최근 스키마 변경 이후에도 curated pair가 유효한지 여부
- 실제 사용자가 묻는 질문을 충분히 다루는지
- 생성된 SQL을 재현할 수 있는지
- 기타 품질 및 활용 지표
- 문제가 발생하면 건강 점수가 낮아지고, 전문가에게 필요한 정비 작업이 제안된다.
- 클러스터 소유자는 대시보드의 점수와 세부 신호를 보고 우선적으로 관리할 영역을 결정한다.
사용자 대화로 이어지는 피드백 루프
- 모든 대화와 쿼리는 기록되어 클러스터 소유자에게 전달된다.
- 소유자는 질문, 답변, 생성된 SQL, 사용자 피드백을 확인할 수 있다.
- 전문가가 질문-SQL 쌍을 승인하거나 문서를 보완할 때마다 이후 사용자에게 제공되는 맥락이 개선된다.
- 즉, 실제 사용 과정이 새로운 품질 관리와 지식 축적의 자료가 된다.
- 어시스턴트의 신뢰도는 모델 자체보다 그 모델이 참조하는 맥락의 품질과 최신성에 달려 있다.
실용적인 시사점
데이터 AI를 구축할 때는 모든 스키마를 한꺼번에 제공하기보다, 도메인별로 범위를 나누고 전문가가 검증한 예시와 업무 규칙을 함께 관리하는 것이 효과적이다. 또한 자동 생성된 지식은 그대로 신뢰하지 말고 사람의 검토를 거치며, 스키마 변경·사용 패턴·쿼리 재현성을 기반으로 지속적인 품질 관리를 해야 한다.