도메인 특화 벡터 검색: 모델 선정부터 이중 검증까지

범용 임베딩 모델은 전문적인 텍스트에서 실패하는 경우가 많습니다.

최근 진행한 ESG 프로젝트에서 OpenAI의 ada-002 모델을 사용했을 때 두 가지 주요 문제가 발생했습니다:

  • 관련 콘텐츠의 18%를 전혀 찾지 못했습니다.
  • 결과의 12%가 잘못되었습니다. 예를 들어, "Scope 1 emissions"를 검색했을 때 "Scope 3 emissions"가 반환되었습니다.

문제는 유사도 임계값(similarity threshold)이 아니었습니다. 바로 의미론적 드리프트(semantic drift)였습니다. 범용 모델은 ESG, 법률, 의료 텍스트와 같은 전문 도메인의 미세한 차이를 이해하지 못합니다.

이를 해결하기 위한 3단계 솔루션을 소개합니다.

1. 모델 선정 네 가지 모델을 테스트했습니다. BGE-M3를 자체 호스팅하는 것이 더 저렴해 보일 수 있지만, 실제로는 GPU 서버 비용과 개발 시간 때문에 6배 더 많은 비용이 들었습니다.

저희는 다음과 같은 이유로 text-embedding-3-large를 선택했습니다:

  • 91%의 재현율(recall)을 달성했습니다.
  • 긴 텍스트에서도 안정적입니다.
  • 최고의 ROI를 제공합니다.

2. 의미론적 드리프트 완화 최고의 모델조차 "low-carbon"과 "zero-carbon"을 혼동합니다. 저는 다음과 같은 3단계 증강 전략을 구현했습니다:

  • 도메인 사전(Domain Dictionary): 정의와 "구분 규칙"이 포함된 500개 이상의 용어 맵.
  • 프롬프트 힌트(Prompt Hints): 인코딩 과정에서 모델에 사전 컨텍스트를 주입.
  • 검색 후 재순위화(Post-retrieval Reranking): 유의어의 점수는 높이고 관련 없는 용어의 점수는 낮춤.

이를 통해 오탐률(false positive rate)을 12%에서 3%로 줄였습니다.

3. 이중 검증 벡터 유사도는 수학적 거리를 측정할 뿐, 비즈니스 관련성을 측정하지 않습니다. 정확성을 보장하기 위해 다음과 같은 이중 체크 시스템을 추가했습니다:

  • 레이어 1: 키워드 하드 매치(Keyword hard match). 결과에 핵심 필수 용어가 반드시 포함되어야 합니다.
  • 레이어 2: LLM 의미론적 교차 검증(LLM semantic cross-validation). LLM이 해당 청크가 실제로 쿼리에 답변하는지 확인합니다.
  • 레이어 3: 수동 샘플 점검(Manual spot-checks). 시스템 성능 저하를 방지하기 위한 월간 검토.

이를 통해 정확도를 70%에서 94%로 향상시켰습니다.

핵심 요약 데이터에 전문 용어가 사용된다면 단일 벡터 검색에만 의존하지 마십시오. 수학적 유사도를 넘어 비즈니스 관련성을 확보하려면 사전, 도메인 힌트, 그리고 이중 검증 레이어가 필요합니다.

Source: https://dev.to/jamesli/part-3-vector-retrieval-in-domain-specific-terminology-scenarios-from-model-selection-to-dual-3485

Optional learning community: https://t.me/GyaanSetuAi