개요
Genie Space의 품질은 체계적인 테스트와 반복 개선 으로 결정됩니다. 벤치마크 기능을 활용하면 Space가 다양한 질문에 얼마나 정확하게 응답하는지 정량적으로 측정하고, 개선 포인트를 식별할 수 있습니다.왜 벤치마크가 필수인가
Genie Space는 LLM 기반 시스템이기 때문에 비결정적(non-deterministic) 입니다. 같은 인스트럭션을 수정해도 예상치 못한 부작용이 생길 수 있습니다. 예를 들어, “매출”의 정의를 인스트럭션에 추가했더니 기존에 잘 되던 “고객 수” 관련 질문이 틀리게 되는 경우가 있습니다. 벤치마크는 소프트웨어 개발의 회귀 테스트(Regression Test) 와 동일한 역할을 합니다:| 소프트웨어 개발 | Genie Space |
|---|---|
| 코드 변경 | 인스트럭션/테이블/SQL Expression 변경 |
| 단위 테스트 | 벤치마크 질문-응답 쌍 |
| 회귀 테스트 실행 | 벤치마크 Run All |
| 테스트 실패 → 버그 수정 | Incorrect → 원인 분석 → 수정 |
| CI/CD 파이프라인 | 변경 후 자동 벤치마크 실행 |
주의 벤치마크 없이 운영하면 생기는 문제: 인스트럭션을 변경할 때마다 수십 개의 질문을 수동으로 테스트해야 합니다. 실수로 기존에 잘 되던 질문이 깨져도 발견하지 못합니다. 벤치마크는 이 문제를 자동화합니다.
샘플 질문
샘플 질문은 사용자가 채팅 창을 열었을 때 표시되는 예시 질문입니다. 테스트의 첫 단계이기도 합니다. 설정 방법:- Configure > Settings 에서 Sample Questions 섹션으로 이동합니다.
- Space가 다루는 주제를 대표하는 질문을 추가합니다.
- 각 질문을 직접 실행하여 결과가 정확한지 검증합니다.
좋은 샘플 질문 vs 나쁜 샘플 질문
| 좋은 예시 | 나쁜 예시 | 이유 |
|---|---|---|
| ”지난 달 매출 상위 5개 지역은?" | "매출” | 구체적인 기간, 집계, 정렬 조건 포함 |
| ”올해 신규 고객 수 추이를 보여줘" | "고객 데이터 보여줘” | 분석 유형(추이)이 명확 |
| ”제품 카테고리별 반품률을 비교해줘" | "반품” | 비교 기준이 명시됨 |
| ”이번 분기 목표 대비 달성률은?" | "목표” | 비즈니스 맥락이 포함 |
팁 샘플 질문은 Genie가 Space의 의도를 이해하는 컨텍스트 로도 활용됩니다. 잘 작성된 샘플 질문은 유사한 패턴의 다른 질문에도 긍정적인 영향을 줍니다. 샘플 질문을 등록한 후 반드시 직접 실행해보고, 결과가 정확한지 검증하세요.
주의 샘플 질문의 응답이 틀리면 안 됩니다. 사용자가 가장 먼저 시도하는 것이 샘플 질문입니다. 첫 번째 질문의 답이 틀리면 Space에 대한 신뢰가 바로 무너집니다. 샘플 질문은 반드시 정확한 응답이 보장된 질문만 등록하세요.
벤치마크 개요
벤치마크는 검증된 질문-응답 쌍의 집합입니다. Space를 변경한 후 벤치마크를 실행하면 변경이 기존 응답의 정확도에 미치는 영향을 즉시 확인할 수 있습니다.벤치마크 질문 설계 원칙
좋은 벤치마크는 단순히 “질문을 많이 만드는 것”이 아니라, Space의 다양한 능력을 고르게 평가 하는 것입니다:- 커버리지: 모든 테이블과 주요 컬럼이 최소 1개 벤치마크에 포함되어야 함
- 난이도 분포: 단순 질문(50%), 중간 질문(30%), 복잡한 질문(20%) 비율 유지
- 비즈니스 용어 포함: “활성 고객”, “순매출” 같은 도메인 용어 사용 질문 반드시 포함
- 엣지 케이스: “데이터가 없는 기간”, “NULL 값이 있는 컬럼” 관련 질문
- 다국어: 한국어/영어로 같은 질문을 각각 만들어 매핑 정확도 확인
벤치마크의 구성 요소
| 구성 요소 | 설명 |
|---|---|
| 질문(Question) | 사용자가 입력하는 자연어 질문 |
| 기대 SQL(Expected SQL) | 이 질문에 대한 정답 SQL 쿼리 |
| 기대 결과(Expected Result) | 정답 SQL의 실행 결과 (자동 생성) |
| 채점 결과(Grade) | Correct / Incorrect / Partial |
벤치마크 생성 방법
팁 가장 효과적인 벤치마크 생성 순서: (1) 먼저 채팅에서 다양한 질문을 테스트 → (2) 정확한 응답을 바로 벤치마크로 추가 → (3) 부정확한 응답은 올바른 SQL을 직접 작성하여 벤치마크 탭에서 추가. 이 순서로 하면 가장 빠르게 충분한 벤치마크를 만들 수 있습니다.
방법 1: 채팅에서 직접 추가
- 채팅에서 질문을 입력하고 응답을 확인합니다.
- 응답이 정확한 경우, 응답 우측의 케밥 메뉴(…)를 클릭합니다.
- Add as benchmark 를 선택합니다.
- 화면 설명: 질문 텍스트와 생성된 SQL이 벤치마크 항목으로 저장됩니다.
- 필요하면 기대 SQL을 수정합니다.
방법 2: 벤치마크 탭에서 직접 추가
- Configure > Benchmarks 탭으로 이동합니다.
- Add benchmark 버튼을 클릭합니다.
- 질문 텍스트를 입력합니다.
- 기대 SQL을 작성합니다.
- Save 를 클릭합니다.
방법 3: 모니터링에서 추가
- Monitoring 탭에서 사용자 질문을 검토합니다.
- 정확한 응답의 케밥 메뉴에서 Add as benchmark 를 선택합니다.
- 이 방법은 실제 사용자 질문 패턴을 벤치마크에 반영할 수 있어 가장 실용적입니다.
참고 벤치마크는 최소 10-20개의 핵심 질문 으로 시작하는 것을 권장합니다. 다양한 질문 유형(집계, 필터, 조인, 시계열, 랭킹)을 포함해야 Space의 전반적인 품질을 평가할 수 있습니다.
채점 기준
벤치마크를 실행하면 각 질문에 대해 다음 3가지 등급으로 채점됩니다:| 등급 | 의미 | 판단 기준 |
|---|---|---|
| Correct | 정확함 | 생성된 SQL의 결과가 기대 결과와 일치 |
| Incorrect | 부정확함 | 결과가 완전히 다르거나 오류 발생 |
| Partial | 부분 정확 | 일부 값은 맞지만 정렬, 필터, 집계 등이 다름 |
주의 채점은 결과 데이터 기반 으로 이루어집니다. SQL 구문이 다르더라도 결과가 같으면 Correct로 판정됩니다. 반대로, SQL이 비슷해 보여도 결과가 다르면 Incorrect입니다.
테스트 권장 프로세스
Phase 1: 초기 벤치마크 구성 (10-20개)
참고 왜 10-20개인가: 10개 미만이면 Space의 품질을 충분히 평가할 수 없고, 초기에 20개 이상을 만들려면 시간이 너무 많이 걸립니다. 10-20개로 시작하고, 운영하면서 실제 사용자 질문을 기반으로 30-50개까지 확장하는 것이 현실적입니다.다양한 질문 유형을 포함한 핵심 벤치마크를 만듭니다:
| 질문 유형 | 예시 | 권장 개수 |
|---|---|---|
| 단순 집계 | ”총 매출은 얼마인가?“ | 2-3개 |
| 필터링 | ”서울 지역 매출은?“ | 2-3개 |
| 조인 | ”고객별 주문 금액 합계는?“ | 2-3개 |
| 시계열 | ”월별 매출 추이를 보여줘” | 2-3개 |
| 랭킹 | ”매출 상위 10개 제품은?“ | 2-3개 |
| 비교 | ”전년 대비 매출 증감률은?“ | 2-3개 |
| 비즈니스 용어 | ”활성 고객 수는?” (활성 = 최근 90일 내 구매) | 2-3개 |
Phase 2: 벤치마크 실행 및 분석
- Configure > Benchmarks 탭에서 Run all 버튼을 클릭합니다.
- 화면 설명: 각 질문의 채점 결과가 Correct/Incorrect/Partial로 표시되며, 전체 정확도 비율이 상단에 나타납니다.
- 전체 정확도(Correct 비율)를 확인합니다.
- Incorrect 와 Partial 항목을 클릭하여 생성된 SQL과 기대 SQL을 비교합니다.
Phase 3: 오답 분석 및 개선
Incorrect 항목의 원인을 분석하고, 적절한 위치에서 수정합니다.오답 원인별 수정 위치 가이드
| 오답 원인 | 증상 | 수정 위치 | 수정 방법 |
|---|---|---|---|
| 잘못된 테이블 선택 | 엉뚱한 테이블에서 쿼리 | Configure > Data | 불필요한 테이블 제거 또는 설명 보강 |
| 컬럼 의미 혼동 | 비슷한 이름의 컬럼을 잘못 사용 | Configure > Data > 컬럼 설명 | 컬럼별 명확한 설명과 동의어 추가 |
| 비즈니스 용어 미인식 | ”활성 고객”의 정의를 모름 | Configure > Instructions | 텍스트 인스트럭션으로 용어 정의 |
| 집계 로직 오류 | SUM 대신 COUNT, 잘못된 GROUP BY | Configure > Data > SQL Expressions | Measure로 정확한 집계 공식 정의 |
| 필터 조건 누락 | 삭제된 데이터 포함, 기간 필터 누락 | Configure > Data > SQL Expressions | Filter로 기본 조건 정의 |
| 조인 오류 | 잘못된 키로 조인 | Configure > Data > Join Relations | 명시적 조인 관계 정의 |
| 한국어-영어 매핑 실패 | ”서울”을 “Seoul”로 매칭 못함 | Configure > Data > Prompt Matching | 프롬프트 매칭 활성화 |
반복 개선 사이클
효과적인 Space 품질 관리는 아래 사이클을 반복하는 것입니다:점수 해석과 개선 전략
벤치마크 정확도에 따라 취해야 할 전략이 다릅니다:| 정확도 범위 | 상태 | 우선 조치 |
|---|---|---|
| 90% 이상 | 우수 | 엣지 케이스와 새로운 질문 유형 추가. 현 상태 유지에 집중 |
| 80-89% | 양호 | 사용자 공유 가능. Incorrect 항목 개별 분석 후 인스트럭션/SQL Expression 보강 |
| 60-79% | 미흡 | 공유하기 이른 단계. 컬럼 설명 부족이나 동의어 누락이 주 원인인 경우가 많음 |
| 60% 미만 | 심각 | 근본적 구조 문제. 테이블 선택이 잘못되었거나, 핵심 메타데이터가 거의 없는 상태 |
참고 정확도가 60% 미만이면 인스트럭션 튜닝보다 데이터 구성을 먼저 점검하세요. 테이블이 너무 많거나, 컬럼 설명이 없거나, 핵심 비즈니스 지표의 SQL Expression이 없는 것이 원인인 경우가 대부분입니다.
변경 시 벤치마크 활용 워크플로
Space를 수정할 때 다음 워크플로를 따르면 품질 저하를 방지할 수 있습니다:- 변경 전: 벤치마크 전체 실행 → 현재 점수 기록 (예: 85%)
- 변경 적용: 인스트럭션/SQL Expression/컬럼 설명 등 수정
- 변경 후: 벤치마크 전체 재실행 → 점수 비교
- 점수 하락 시: 새로 Incorrect가 된 항목을 확인하고, 변경을 원복하거나 추가 수정
- 점수 유지/상승 시: 변경 확정
팁 벤치마크 정확도가 80% 이상 이면 사용자에게 공유할 준비가 된 것입니다. 공유 후에도 모니터링 탭의 실제 사용자 질문을 벤치마크에 추가하며 지속적으로 개선하세요.
오답 분석 심화 — Partial 결과의 의미
Partial은 “완전히 틀린 것은 아니지만, 기대와 다른 결과”를 의미합니다. Partial이 많다면 다음을 점검하세요:| Partial의 흔한 원인 | 예시 | 해결 방법 |
|---|---|---|
| 정렬 차이 | 결과 데이터는 맞지만 ORDER BY가 다름 | 예제 쿼리에서 정렬 기준 명시 |
| 집계 수준 차이 | 일별 vs 월별 집계가 다름 | 인스트럭션에 기본 집계 단위 정의 |
| 필터 범위 차이 | NULL 포함/제외가 다름 | 컬럼 설명에 NULL 처리 규칙 명시 |
| 컬럼 선택 차이 | 원하는 컬럼이 빠지거나 추가됨 | 예제 쿼리에서 SELECT 컬럼 패턴 시연 |
팁 Partial은 “거의 맞지만 미세 조정이 필요한 상태”입니다. 대부분 인스트럭션이나 예제 쿼리 1-2개 추가로 해결됩니다. Incorrect보다 수정이 쉬우므로, Incorrect를 먼저 해결한 후 Partial을 개선하세요.
벤치마크 관리 베스트 프랙티스
| 항목 | 권장 사항 |
|---|---|
| 벤치마크 수 | 초기 10-20개, 운영 중 30-50개로 확장 |
| 질문 다양성 | 한 유형에 편중되지 않도록 다양한 패턴 포함 |
| 정기 실행 | 인스트럭션이나 테이블 구성 변경 후 반드시 실행. 최소 주 1회 |
| 실제 질문 반영 | 모니터링에서 자주 묻는 질문을 벤치마크로 등록 |
| 오답 우선 대응 | Incorrect부터 해결 후 Partial 개선 |
| 기대 SQL 업데이트 | 데이터 스키마 변경 시 기존 벤치마크의 기대 SQL도 업데이트 |
| 벤치마크 분류 | 태그나 명명 규칙으로 질문 유형별 분류 (집계, 필터, 조인, 시계열 등) |