쿼리나 결과를 보지 않고 검색 품질 개선하기
(canva.dev)- Canva가 MAU 2억 명을 달성, 300억 개 이상의 디자인을 보유하고 있으며 매초 약 300개의 새로운 디자인을 생성
- 사용자가 디자인을 검색하고 공유받은 파일을 찾는 것은 점점 더 중요한 문제로 대두됨
- 퍼블릭 검색(웹/제품 검색) 에서는 사용자 쿼리와 검색 항목의 고정 세트를 기반으로 데이터셋을 구성
- 전문 심사자가 각 쿼리와 항목의 연관성을 평가해 레이블 지정
- 리콜(Recall) 및 정밀도(Precision) 메트릭을 통해 검색 엔진 성능 평가
- 개인 검색에서는 (프라이버시를 보호하기 위해) 개인 디자인을 열람하지 않고, 사용자의 데이터를 평가 데이터셋으로 활용할 수 없음
- 해결책으로 생성형 AI(GPT-4o 등)를 사용해 현실적이면서도 완전히 합성된 콘텐츠와 쿼리를 생성
- 개인정보를 전혀 침해하지 않으면서도 검색 파이프라인 개선을 평가할 수 있는 방법 제공
기존 상태: 제한적인 테스트 방법
-
기존 테스트 프로세스
- 엔지니어는 제한된 오프라인 테스트 방식을 사용
- 알려진 문제 쿼리를 Canva 계정에서 실행하여 코드 변경 전후의 성능을 비교
- 예: 철자 교정 개선 작업에서 "desgin" 같은 잘못된 쿼리를 테스트
- 변경 전: 결과 없음
- 변경 후: "design" 관련 문서 반환
- 예: 철자 교정 개선 작업에서 "desgin" 같은 잘못된 쿼리를 테스트
- 오프라인 테스트를 통과한 변경사항은 온라인 테스트 단계로 진행
- Canva의 실험 프레임워크를 활용한 A/B 테스트 실행
- 변경사항 적용 사용자와 표준 검색 사용자 간의 검색 성공률 비교
-
한계점
-
오프라인 테스트의 통계적 유효성 부족
- 제한된 쿼리로는 다양한 검색 동작을 대표하기 어려움
-
사용자에게 잠재적 악영향
- 오프라인 테스트에서 검출되지 않은 성능 저하가 온라인 실험에 노출될 가능성 존재
-
온라인 실험의 시간 소모
- 통계적 유의성을 확보하려면 최소 수일에서 수주가 필요
- 동시 실행 가능한 실험 수와 아이디어 테스트 속도 제한
-
오프라인 테스트의 통계적 유효성 부족
이상적인 상태: 새로운 데이터셋과 평가 파이프라인 구축
- 목표 : 엔지니어가 온라인 테스트로 넘어가기 전에 변경 사항을 객관적으로 평가할 수 있는 맞춤형 데이터셋과 평가 파이프라인 필요
- 주요 요구사항:
- 재현성: 언제든 동일한 결과 제공
- 빠른 반복: 엔지니어가 코드 변경 후 결과를 신속히 테스트 가능. 프로덕션 배포까지 기다릴 필요 없이 바로 평가 가능
- 생산 환경과 유사: 실제 프로덕션 동작과 일치하는 결과 제공
- 비차단적 작업: 팀원이 서로 방해받지 않고 독립적으로 코드 변경 사항을 실험 가능
현실적인 데이터셋 생성: 생성형 AI 활용
-
프라이버시를 준수한 평가 데이터셋
- GPT-4o를 사용해 실제 사용자 데이터를 대체할 수 있는 합성 데이터를 생성
- 사용자 디자인을 복제하지 않고, 텍스트 길이와 같은 통계적 분포를 반영하여 현실적인 데이터를 만듦
-
리콜 평가용 테스트 케이스 생성
- 주제와 디자인 타입(문서, 프레젠테이션 등)을 기반으로 GPT-4o를 사용해 쿼리 및 대응 콘텐츠 생성
- 쿼리 난이도 조정:
- 철자 오류 포함
- 동의어로 대체
- 쿼리를 재구성
-
정밀도 평가용 테스트 케이스 생성
- 관련성과 비관련성 디자인을 포함한 데이터셋 생성
- 비관련성 디자인 생성 방법:
- 일부 키워드만 포함
- 디자인 템플릿 또는 초안 형태로 수정
- 오래된 디자인으로 설정
생성형 AI 사용 시 발생한 문제
-
LLMs의 장점과 한계
-
장점: 대규모 텍스트 데이터를 효율적으로 생성 가능
- 생성된 정적 평가 데이터셋은 반복 사용 가능하며, 일관되고 결정적인 평가 결과를 빠르게 제공
- 한계 제거: 데이터셋 생성 후에는 LLM의 지연(latency)과 무작위성(randomness) 문제를 배제
-
장점: 대규모 텍스트 데이터를 효율적으로 생성 가능
-
문제점
-
긴 제목 생성 거부
- 12-15단어 길이의 제목을 생성하도록 요청했으나 더 짧은 제목 반환
- 예:
- "Exploring the Latest Advancements in Screen Technology and Applications" (9단어)
- "Best Practices for Teachers: Presentation Tips for Meet the Teacher" (10단어)
- 예:
- 이 문제는 실제 문서에서 긴 제목이 드물다는 점을 반영한 것일 가능성이 있음
- 결과적으로 제목 길이에 대한 기준을 재검토하게 됨
- 12-15단어 길이의 제목을 생성하도록 요청했으나 더 짧은 제목 반환
-
반복 및 환각 오류
- 단어의 다양한 철자 오류를 생성하도록 요청했으나 중복 또는 비현실적 결과 반환
- 예: "Calendar"의 다른 철자 오류 생성 요청 시 반복적 결과 생성
- 단어의 다양한 철자 오류를 생성하도록 요청했으나 중복 또는 비현실적 결과 반환
-
비관련성 제목 생성 문제
- 비관련성(nonrelevant) 디자인 제목 생성 시 지침을 정확히 따르지 못하는 사례 발생
- 반환된 제목 중 일부는 지정된 키워드를 포함하지 않거나, 단순히 "title string"을 포함하는 등 부정확한 결과 반환
-
긴 제목 생성 거부
평가 실행: 로컬 환경에서의 테스트와 분석
-
평가 데이터셋 활용
- 생성된 합성 데이터셋을 검색 파이프라인에 적용하여 평가 메트릭을 산출
- 여러 실행 방법을 탐구한 결과, Testcontainers를 활용한 로컬 실행 방식을 채택
-
Testcontainers 기반 로컬 파이프라인
-
기존 Testcontainer 지원 활용
- Canva의 서비스 지향 RPC 아키텍처에 Testcontainer 지원이 이미 구현되어 있음
- Elasticsearch와 같은 외부 컴포넌트를 내부 Testcontainer와 결합하여 파이프라인 구축
-
프로덕션 설정의 완전한 재현
- 검색 파이프라인 및 지원 ML 모델을 로컬에서 실행하여 프로덕션과 동일한 환경 구성
- 엔지니어가 다양한 모델 변형을 실험 가능
-
기존 Testcontainer 지원 활용
-
테스트 케이스 처리 과정
- 각 테스트 케이스에 필요한 상태(state) 생성
- Canva 디자인을 생성하는 대신 검색 인덱스에 필요한 데이터만 추출 및 삽입
- 로컬 검색 파이프라인 실행
- 테스트 쿼리와 함께 데이터셋을 실행하여 검색 결과 생성
- 결과를 평가 모듈에 전달
- 리콜(Recall) 및 정밀도(Precision) 메트릭 계산
-
데이터 흐름 다이어그램
- 평가 도구를 통해 데이터를 처리하는 전체 흐름을 시각적으로 보여주는 다이어그램 제공
결과 시각화하기
-
시각화 도구 개발
- Streamlit 기반 커스텀 도구를 사용하여 평가 결과를 효과적으로 시각화하고 비교할 수 있도록 지원
- 엔지니어가 다양한 구성(configurations) 간의 리콜(Recall) 및 정밀도(Precision) 메트릭을 한눈에 비교 가능
-
주요 기능
-
구성별 비교
- 결과를 집계하여 다양한 설정의 성능을 나란히 비교
-
쿼리 유형 및 난이도별 성능 세분화
- 특정 쿼리 타입이나 난이도에 따른 성능 분리 분석 가능
-
개별 쿼리 디버깅
- 각 쿼리의 출력 결과를 확인하여 특정 사용 사례를 정밀히 디버깅 가능
-
구성별 비교
-
빠른 의사결정 지원
- 평가가 완료되면 도구가 즉시 실행되며, 엔지니어가 성능 결과를 기반으로 신속히 의사결정을 내릴 수 있도록 도움
- 엔지니어가 다른 팀원의 작업에 의존하지 않고 독립적으로 반복 실험 및 개선 가능
영향 및 향후 계획
-
이상적인 상태에 얼마나 근접했는가?
- 평가 데이터셋과 도구는 완전한 재현 가능성을 제공하며, 몇 분 내로 결과를 생성
- 엔지니어는 현지(production) 동작과 일치하는 결과를 로컬에서 독립적이고 객관적으로 평가 가능
- 고객의 디자인이나 쿼리를 전혀 열람하지 않고 프라이버시를 완벽히 보장
-
성과 요약
- 빠른 반복
- 1000개 이상의 테스트 케이스를 10분 이내에 처리
- 2~3일이 걸리는 온라인 실험 기간 동안 300회 이상의 오프라인 평가 가능
- 오프라인-온라인 결과의 상관관계
- 오프라인 평가 결과는 부적합한 아이디어를 배제하고 성공 가능성이 높은 변경사항만 온라인 실험으로 진행 가능하도록 설계
- 개발 중 오프라인-온라인 결과 간의 동기화를 확인하는 여러 실험 수행
- 성능 긍정적 또는 부정적 변경 모두 강력한 일치성 확인
- 로컬 디버깅 기능
- 검색 파이프라인의 각 컴포넌트를 통한 테스트 케이스 흐름을 관찰할 수 있는 디버깅 지원
- 기존 프로덕션 로그에 의존했던 디버깅 방식보다 훨씬 효율적
-
향후 계획
-
데이터셋 확장
- 협업 그래프와 같은 더 현실적인 기능 추가
-
도구 개선
- 엔지니어가 필요에 따라 맞춤형 합성 데이터를 생성할 수 있도록 툴링 강화
-
생성형 AI 활용 극대화
- 합성 데이터가 제공하는 가능성을 활용하여 Canva의 검색 도구를 커뮤니티에 최적의 경험으로 발전시키는 목표 지속
-
데이터셋 확장