홈으로 돌아가기

Manticore 하이브리드 검색: BM25 + KNN

Manticore Search의 하이브리드 검색은 RRF를 사용하여 BM25와 KNN을 결합하여 최적의 관련성을 제공합니다. RAG, 지원 및 전자상거래에 적합. 코드 예제와 설정 제공.

Manticore의 하이브리드 검색: RRF 및 예제
Advertisement 728x90

Manticore Search의 하이브리드 검색: BM25와 KNN의 결합

Manticore Search의 하이브리드 검색은 전체 텍스트 BM25 검색과 벡터 KNN 검색을 단일 쿼리로 결합합니다. 이를 통해 정확한 키워드와 의미적 유사성을 동시에 고려할 수 있습니다. 예를 들어 "저렴한 러닝화"라는 쿼리에 대해 BM25는 토큰 기반 일치를 제공하고, KNN은 "조깅용 편안한 신발"과 같은 구문의 의미를 포착합니다.

이 방법은 순위 목록을 병합하기 위해 Reciprocal Rank Fusion(RRF)을 사용합니다. 각 검색에서 높은 순위를 차지하는 문서가 최종 순위에서 우선순위를 받습니다.

하이브리드 접근법의 장점

전체 텍스트 검색은 희귀 용어, SKU, 오류 코드에 효과적입니다. 벡터 검색은 유의어와 자연어를 포착하며, 관련 개념의 임베딩이 벡터 공간에서 가까이 위치합니다.

Google AdInline article slot

각 방법의 약점:

  • BM25는 유의어 처리에 어려움을 겪습니다.
  • KNN은 의미 없는 정확한 식별자를 무시합니다.

하이브리드 검색은 복잡한 로직의 필요성을 최소화하면서 혼합 쿼리에 대한 재현율을 향상시킵니다.

사용 사례

하이브리드 검색은 다음과 같은 시나리오에서 유용합니다:

Google AdInline article slot
  • 의도와 세부 정보가 포함된 쿼리, 예: python error 403 forbidden — 오류 코드는 BM25로, 설명은 KNN으로 처리.
  • LLM을 위한 RAG 파이프라인 — 가장 관련성 높은 텍스트 청크 제공.
  • 구조화된 데이터(제품 모델)와 비구조화된 데이터(설명)가 있는 카탈로그.
  • 예측 불가능한 사용자 패턴 — 정확한 구문 또는 서술적 언어.

전자상거래에서 하이브리드 검색은 이름, 설명, 시각적 임베딩을 병렬로 처리합니다.

RRF 메커니즘

RRF는 점수를 정규화하지 않고 순위를 집계합니다. 공식: 1 / (rank_constant + rank). 기본 rank_constant=60.

상위 3개 병합 예시:

Google AdInline article slot

| 문서 | BM25 순위 | KNN 순위 | RRF 점수 |

|----------|-----------|----------|-----------|

| 문서 A | 1 | 2 | 0.0325 |

| 문서 C | 3 | 1 | 0.0323 |

| 문서 B | 2 | - | 0.0161 |

| 문서 D | - | 3 | 0.0159 |

문서 A는 두 목록 모두에서 높은 순위로 선두를 차지합니다. RRF는 규모 보정이 필요 없어 점수 기반 병합보다 선호됩니다.

하위 쿼리(MATCH 및 KNN)는 병렬로 실행되며, 필터는 모두에 적용됩니다.

지식 기반을 활용한 실용적 예시

지원 데이터베이스에서 "서버에 연결할 수 없음" + 오류 코드 E-5020 쿼리.

KNN 결과:

| # | 제목 | 거리 |

|---|-------|----------|

|1| E-5030: DNS | 0.572 |

|2| E-2091: 타임아웃 | 0.583 |

|3| E-5020: SSL | 0.605 |

MATCH('E-5020')와 KNN을 사용한 하이브리드:

SELECT title, hybrid_score()
FROM support_articles
WHERE knn(embedding, '서버에 연결할 수 없음')
  AND MATCH('E-5020')
LIMIT 5
OPTION fusion_method='rrf';

| # | 제목 | 하이브리드 점수 |

|---|-------|--------------|

|1| 오류 E-5020: SSL 인증서 불일치 | 0.032 |

|2| E-5030 | 0.016 |

|3| E-2091 | 0.016 |

E-5020이 1위로 상승: BM25가 정확한 코드를 포착하고, KNN이 컨텍스트를 포착합니다.

하이브리드 검색 실행

hybrid_match()를 사용한 자동 모드:

SELECT id, hybrid_score()
FROM products
WHERE hybrid_match('러닝화');

JSON API:

POST /search
{
  "table": "products",
  "hybrid": { "query": "러닝화" }
}

Manticore는 임베딩을 생성하고, 검색을 수행하며, 결과를 병합합니다.

명시적 제어:

SELECT id, hybrid_score()
FROM products
WHERE match('러닝화')
  AND knn(embedding, (0.12, 0.45, 0.78, ...))
OPTION fusion_method='rrf';

사용 가능한 메트릭: hybrid_score(), weight() (BM25), knn_dist().

퓨전 설정

  • rank_constant: 상위 순위의 지배력(값이 낮을수록 강조 증가).
  • fusion_weights: 하위 쿼리 가중치, 예: (text=0.5, knn=0.3).
  • window_size: 중간 결과의 양.

다중 KNN:

SELECT id, hybrid_score()
FROM products
WHERE match('러닝화') AS text
  AND knn(title_vec, (0.12, 0.45, ...)) AS title_sim
  AND knn(image_vec, (0.88, 0.21, ...)) AS image_sim
OPTION fusion_method='rrf',
       fusion_weights=(text=0.5, title_sim=0.3, image_sim=0.2);

핵심 요약

  • 하이브리드 검색은 신호를 분배: 식별자는 BM25로, 의미는 KNN으로 처리.
  • RRF는 보정 없이 안정적인 병합을 보장.
  • 다중 벡터 공간 지원으로 멀티모달 데이터 처리 가능.
  • 병렬 실행으로 지연 시간 최소화.
  • 자동 임베딩 생성으로 통합 단순화.

— Editorial Team

Advertisement 728x90

다음 읽기