Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

RAG 파이프라인을 구축하다 보면 시맨틱 검색만으로는 항상 최상의 결과를 반환하지 않는다는 것을 금방 알게 됩니다. 때로는 시맨틱 검색이 놓칠 수 있는 정확한 용어 일치가 필요합니다. 해결책은 BM25라는 기법을 사용하여 시맨틱 검색과 어휘 검색을 결합하는 것입니다.

시맨틱 검색만 사용할 때의 문제점

문서에서 "INC-2023-Q4-011"과 같은 특정 인시던트 ID를 검색한다고 가정해 보겠습니다. 시맨틱 검색은 맥락과 의미를 이해하는 데 뛰어나지만, 의미적으로는 관련이 있지만 실제로 찾고 있는 정확한 용어를 포함하지 않는 섹션을 반환할 수 있습니다.

위 예시에서 시맨틱 검색은 (인시던트 ID를 실제로 포함하는) 사이버보안 섹션을 반환했지만, 해당 인시던트를 전혀 언급하지 않는 재무 분석 섹션도 반환했습니다. 이는 시맨틱 검색이 정확한 용어 일치보다는 개념적 유사성에 초점을 맞추기 때문에 발생합니다.

하이브리드 검색 전략

해결책은 시맨틱 검색과 어휘 검색을 병렬로 실행한 다음 결과를 병합하는 것입니다. 이렇게 하면 두 가지 방식의 장점을 모두 얻을 수 있습니다:

  • 시맨틱 검색은 임베딩을 사용하여 개념적으로 관련된 콘텐츠를 찾습니다
  • 어휘 검색은 고전적인 텍스트 검색을 사용하여 정확한 용어 일치를 찾습니다
  • 병합된 결과는 더 나은 정확도를 위해 두 접근 방식을 결합합니다

BM25의 작동 방식

BM25(Best Match 25)는 RAG 시스템에서 어휘 검색을 위한 널리 사용되는 알고리즘입니다. 검색 쿼리를 처리하는 방식은 다음과 같습니다:

1단계: 쿼리 토큰화 사용자의 질문을 개별 용어로 분리합니다. 예를 들어, "a INC-2023-Q4-011"은 ["a", "INC-2023-Q4-011"]이 됩니다.

2단계: 용어 빈도 계산 각 용어가 모든 문서에서 얼마나 자주 나타나는지 확인합니다. "a"와 같은 일반적인 단어는 5번 나타날 수 있지만, "INC-2023-Q4-011"과 같은 특정 용어는 한 번만 나타날 수 있습니다.

3단계: 중요도에 따른 용어 가중치 부여 덜 자주 나타나는 용어는 더 높은 중요도 점수를 받습니다. "a"라는 단어는 흔하기 때문에 낮은 중요도를 받고, "INC-2023-Q4-011"은 희귀하기 때문에 높은 중요도를 받습니다.

4단계: 최적의 일치 항목 찾기 더 높은 가중치를 가진 용어의 인스턴스를 더 많이 포함하는 문서를 반환합니다.

기본적인 BM25 검색 시스템을 설정하는 방법은 다음과 같습니다:

python
# 1. 텍스트를 섹션별로 청크로 나눕니다
chunks = chunk_by_section(text)

# 2. BM25 스토어를 생성하고 문서를 추가합니다
store = BM25Index()
for chunk in chunks:
    store.add_document({"content": chunk})

# 3. 스토어를 검색합니다
results = store.search("What happened with INC-2023-Q4-011?", 3)

# 결과를 출력합니다
for doc, distance in results:
    print(distance, "\n", doc["content"][:200], "\n----\n")

이 검색을 실행하면 시맨틱 검색만 사용할 때보다 훨씬 더 나은 결과를 얻을 수 있습니다. BM25 알고리즘은 특정 검색어, 특히 인시던트 ID와 같은 희귀한 용어를 실제로 포함하는 섹션에 우선순위를 부여합니다.

이제 결과가 검색 중인 인시던트 ID를 실제로 포함하는 소프트웨어 엔지니어링 섹션과 사이버보안 섹션에 제대로 우선순위를 부여하는 것을 확인할 수 있습니다.

이 방식이 더 잘 작동하는 이유

BM25는 다음과 같은 이유로 정확한 일치를 찾는 데 뛰어납니다:

  • 희귀하고 구체적인 용어에 더 높은 가중치를 부여합니다
  • 검색 가치를 더하지 않는 일반적인 단어를 무시합니다
  • 의미적 의미보다는 용어 빈도에 초점을 맞춥니다
  • 기술 용어, ID, 특정 문구에 특히 잘 작동합니다

핵심은 두 검색 방법이 상호 보완적인 강점을 가지고 있다는 것입니다. 시맨틱 검색은 맥락과 의미를 이해하는 반면, 어휘 검색은 정확한 용어 일치를 놓치지 않도록 보장합니다. 이 둘을 결합하면 개념적 쿼리와 특정 조회를 모두 효과적으로 처리하는 더 견고한 검색 시스템을 만들 수 있습니다.

다음 단계에서는 두 검색 시스템의 결과를 병합하여 통합된 하이브리드 검색 경험을 만드는 방법을 배우게 됩니다.