검색 품질은 어떻게 개선할까? 사전, 데이터, 랭킹, 그리고 반복
지난 글에서는 검색이 어떻게 동작하는지, 그리고 검색 품질을 정밀도·재현율·nDCG 같은 지표로 어떻게 평가하는지 살펴봤습니다. 이번 글에서는 마지막으로 평가 결과를 바탕으로 검색 품질을 어떻게 개선하는지 정리해 보겠습니다.
1. 개선은 진단에서 시작합니다
"검색이 별로다"라는 같은 증상도 원인은 제각각입니다. 무작정 사전을 고치거나 랭킹을 바꾸기보다, 지표를 조합해서 어느 단계가 문제인지 먼저 찾는 것이 중요합니다.
| 지표 패턴 | 무슨 뜻인가 | 먼저 볼 곳 |
|---|---|---|
| 재현율 ↓, 정밀도 ↑ | 나온 건 맞는데 놓친 게 많음 | 사전 누락, 문서 데이터의 빈 값 |
| 재현율 ↑, 정밀도 ↓ | 많이 찾지만 엉뚱한 게 섞임 | 너무 넓은 동의어, 분류 오류 |
| 정밀도는 괜찮은데 nDCG ↓ | 정답은 있는데 아래에 묻힘 | 랭킹 |
| MRR ↓ (상품명·브랜드 검색) | 찾는 그 상품이 위에 안 뜸 | 브랜드 표기, 랭킹 |
| 무결과율 ↑ | 아예 결과가 없음 | 신조어, 오타, 표기 변형 |
특히 ”매칭 문제인가, 랭킹 문제인가" 를 구분하는 게 첫걸음입니다. 원하는 상품이 결과 어딘가에 있긴 한데 아래에 있다면 랭킹 문제이고, 아예 없다면 사전이나 데이터 문제입니다.
이제 단계별로 개선 방법을 살펴보겠습니다.
2. 검색어 이해 개선: 사전 다듬기
검색어가 문서와 맞아떨어지도록 다듬는 사전은 가장 직접적인 개선 수단입니다.
| 방법 | 예시 | 주로 개선되는 지표 |
|---|---|---|
| 동의어 추가 | 후리스 = 플리스, 보라 = 퍼플 | 재현율 |
| 동의어 방향 조정 | 아우터 → 코트 (단방향) | 정밀도 |
| 사용자 사전 등록 | 신조어를 한 단어로 유지 | 재현율, 정밀도 |
| 불용어 등록 | "무료배송", “1+1” 무시 | 정밀도 |
| 오타·띄어쓰기 교정 | 트랜치코트 → 트렌치코트 | 무결과율, 재현율 |
동의어는 방향이 중요합니다
동의어를 무조건 양방향으로 묶으면 문제가 생깁니다.
- 양방향: 후리스 ↔ 플리스. 어느 쪽으로 검색해도 둘 다 나와야 하는 경우
- 단방향: 아우터 → 코트, 패딩, 점퍼. "아우터"를 검색하면 코트도 나와야 하지만, "코트"를 검색했을 때 패딩이 나오면 안 되는 경우
상하위 관계를 양방향으로 묶으면 재현율은 오르지만 정밀도가 크게 떨어집니다.
단어를 묶는 것만으로는 부족할 때도 있습니다
신조어를 사용자 사전에 등록해 한 단어로 유지하게 해도, 문서에 그 단어가 적혀 있지 않으면 결과는 거의 나오지 않습니다. 예를 들어 어떤 스타일 키워드가 "특정 색상 + 특정 품목"을 뜻한다면, 그 단어를 실제 상품의 속성과 연결해 주는 규칙까지 있어야 의도에 맞는 결과가 나옵니다.
사전은 양쪽에 영향을 줍니다
사전은 검색어뿐 아니라 문서를 색인할 때도 쓰입니다. 그래서 사전 하나를 바꾸면 검색어 처리와 색인 양쪽이 바뀌고, 종류에 따라 재색인이 필요할 수도 있습니다. 반영 전에 다른 검색어의 결과를 망가뜨리지 않는지 확인하는 과정이 꼭 필요합니다.
3. 문서 데이터 개선: 색인되는 재료 정리
아무리 사전이 좋아도, 찾아야 할 문서(상품) 자체의 데이터가 부정확하면 검색이 제대로 될 수 없습니다.
| 방법 | 예시 | 주로 개선되는 지표 |
|---|---|---|
| 빈 속성 채우기 | 소재 정보가 없는 니트에 "울" | 재현율 |
| 표기 통일 | 라벤더·바이올렛·퍼플 → 보라 계열 | 재현율 |
| 분류 오류 수정 | 티셔츠 카테고리에 섞인 원피스 | 정밀도 |
| 상품명 정리 | 홍보 문구, 키워드 도배 걸러내기 | 정밀도 |
특히 여러 판매자가 각자 상품을 등록하는 플랫폼에서는 같은 정보도 판매자마다 다르게 적기 때문에, 플랫폼 쪽에서 기준을 정해 정리하는 작업이 계속 필요합니다. 그리고 문서 속성이 정확해야 색상·소재 같은 필터도 제대로 동작합니다.
4. LLM 활용: 후보는 LLM이, 판단은 사람이
사전 후보를 찾거나 수많은 상품의 속성을 채우는 일은 사람이 하나하나 하기에는 양이 너무 많습니다. 그래서 최근에는 LLM을 활용하는 경우가 많습니다.
검색 기록·상품 데이터
↓
LLM이 후보 제안 (동의어·신조어 후보, 상품 속성)
↓
사람이 검수
↓
통과한 것만 사전·상품 데이터에 반영왜 사람의 검수가 필요할까요?
LLM은 그럴듯하지만 틀린 결과를 자신 있게 내놓기도 합니다.
- 너무 넓게 묶습니다: 비슷해 보이는 단어를 같은 뜻으로 묶어 정밀도를 떨어뜨림
- 트렌드의 뉘앙스를 모릅니다: 스타일 키워드를 단순한 색상이나 단어로만 해석
- 없는 정보를 지어냅니다: 상품명에 소재가 없는데 그럴듯한 소재를 채움
- 홍보 문구에 휩쓸립니다: "겨울필수" 같은 문구를 보고 속성을 잘못 붙임
모든 결과를 볼 수 없을 때
수만 개의 결과를 전부 사람이 볼 수는 없으니, 검수도 전략이 필요합니다.
- 불확실한 것부터 보기: LLM이 확신하지 못한다고 표시한 결과를 우선 검수
- 샘플링: 카테고리별로 고르게 표본을 뽑아 오류율을 추정
- 규칙으로 충돌 찾기: 상품명에 "아크릴"이 있는데 소재가 "울"로 채워졌다면 자동으로 표시
- 기준 데이터(골든셋): 정답이 확정된 데이터를 만들어 두고, 프롬프트를 바꿀 때마다 같은 기준으로 비교
5. 매칭 방식 개선
사전과 데이터를 다듬는 것 외에, 후보를 찾는 방식 자체를 개선할 수도 있습니다.
- 하이브리드 검색: 키워드 검색으로 정확한 조건을 찾고, 임베딩 검색으로 의미가 비슷한 결과를 보완합니다. 상품명에 없는 상황·스타일 검색어에 특히 효과적입니다.
- 필드별 가중치: 상품명에 있는 단어를 상세 설명에 있는 단어보다 중요하게 다루는 식으로, 어디에서 매칭됐는지에 따라 점수를 다르게 줍니다.
6. 랭킹 개선
후보를 잘 찾았다면, 이제 순서를 잘 정해야 합니다.
- 여러 신호 조합: 검색어와의 관련성, 클릭률·판매량 같은 인기도, 최신성, 사용자 취향을 함께 반영합니다.
- 구매할 수 없는 상품은 아래로: 관련성이 높아도 품절 상품이 맨 위에 있으면 좋은 경험이 아닙니다.
- 신상품에 기회 주기: 클릭 기록이 없는 신상품은 불리하므로 일정 기간 노출 기회를 줍니다.
- 위치 편향 보정: 위에 있는 상품은 위에 있다는 이유만으로 더 클릭됩니다. 클릭을 그대로 학습하면 원래 위에 있던 상품이 계속 위에 남는 문제가 생깁니다.
- 표본이 적은 상품 보정: 두 번 노출되어 한 번 클릭된 상품의 클릭률 50%를 그대로 믿으면 안 됩니다.
여러 신호를 사람이 정한 규칙으로 섞을 수도 있고, 클릭·구매 데이터를 바탕으로 모델이 최적의 조합을 배우게 할 수도 있습니다(Learning to Rank). 어느 쪽이든 학습에 쓰이는 문서 속성과 정답 데이터가 정확해야 좋은 랭킹이 나옵니다.
7. 검색 경험 개선
검색 엔진 바깥의 화면 경험도 품질에 큰 영향을 줍니다.
- 무결과일 때 대안 제시: "혹시 이것을 찾으셨나요?"로 이탈을 줄입니다.
- 자동완성: 입력 중에 올바른 표기로 유도해 오타와 표기 변형을 줄입니다.
- 필터: 결과가 많을 때 원하는 조건으로 빠르게 좁힐 수 있게 합니다.
8. 측정하고 반복하기
마지막이자 가장 중요한 단계입니다. 측정은 랭킹만의 작업이 아니라, 어느 단계가 문제인지 찾고, 고친 뒤 효과를 확인하는 전 과정의 작업입니다.
문제가 있는 검색어 찾기 (무결과, 낮은 클릭률, 급상승 검색어)
↓
원인 분류 (사전 / 문서 데이터 / 랭킹 / 의도)
↓
개선
↓
같은 기준으로 다시 측정
↓
반복예시: 동의어 하나를 추가했을 때
"후리스 = 플리스"를 동의어로 추가하고 같은 검색어로 다시 측정했다고 해보겠습니다. (숫자는 이해를 돕기 위한 예시입니다)
| 정밀도 | 재현율 | |
|---|---|---|
| 추가 전 | 90% | 30% |
| 추가 후 | 88% | 75% |
재현율이 크게 오르고 정밀도는 거의 유지됐으니 좋은 변경이라고 판단할 수 있습니다. 만약 정밀도가 크게 떨어졌다면 너무 넓게 묶은 것이니 다시 검토해야 합니다.
전후 비교와 A/B 테스트
전후 비교는 간단하지만, 그 사이에 시즌이 바뀌거나 할인 행사가 있었다면 지표 변화가 변경 때문인지 알 수 없습니다. 그래서 중요한 변경은 사용자를 무작위로 나눠 기존 방식과 새 방식을 같은 기간에 동시에 비교하는 A/B 테스트로 확인하는 것이 좋습니다.
지표는 함께 읽어야 합니다
- 무결과율이 줄었는데 재검색률이 올랐다면, 결과는 나오지만 원하는 결과가 아니라는 뜻일 수 있습니다.
- 클릭률은 높은데 구매 전환율이 낮다면, 눈길은 끌지만 실제로 원하던 상품은 아니었을 수 있습니다.
- 체류시간이 늘었다면, 만족해서 오래 본 것인지 못 찾아서 헤맨 것인지 다른 지표와 함께 봐야 합니다.
마치며
세 편의 글을 정리하면 다음과 같습니다.
- 검색의 동작: 사전으로 다듬고, 역인덱스로 찾고(매칭), 순서를 정한다(랭킹)
- 검색의 평가: 빠짐없이 찾았는지(재현율), 엉뚱한 게 없는지(정밀도), 좋은 걸 위에 보여줬는지(nDCG)
- 검색의 개선: 지표로 원인을 진단하고, 사전·데이터·랭킹 중 맞는 곳을 고친 뒤, 다시 측정한다
검색 품질 개선은 한 번의 큰 변화보다 작은 진단과 개선의 반복에 가깝습니다. 그리고 그 모든 과정의 바탕에는, 검색어와 문서를 같은 기준으로 연결해 주는 정확하고 일관된 데이터가 있다고 생각합니다.
Comments