Hybrid Search 핵심 기능 — Weaviate의 벡터 + BM25F 결합
Hybrid Search 핵심 기능
Weaviate의 Hybrid 검색은 벡터 검색과 키워드(BM25F) 검색 결과를 융합해서 하나의 결과 집합으로 돌려줘요. 퓨전 방식과 상대 가중치가 모두 설정 가능해요.
기본 개념
import weaviate
client = weaviate.connect_to_local()
collection = client.collections.get("Document")
response = collection.query.hybrid(
query="자동차 보험 최저가",
alpha=0.5,
)
for obj in response.objects:
print(obj.properties)
alpha는 벡터 검색과 키워드 검색의 상대 가중치예요.
alpha=1: 벡터(의미) 검색만 사용alpha=0: 키워드(BM25) 검색만 사용alpha=0.5: 두 결과를 균등하게 혼합
퓨전 방법 바꾸기
기본 융합은 두 결과 세트를 합쳐서 순위를 만드는 방식인데, 퓨전 방법을 명시적으로 바꿀 수도 있어요. RRF(Reciprocal Rank Fusion)처럼 순위 기반으로 합치는 방법이 대표적이에요.
자연어 질의 지원
Weaviate에서는 자연어 질의를 기본으로 하고 싶다면 Query Agent 등을 써서 질의를 해석하게 할 수도 있어요. 하이브리드 검색 자체는 밀집 벡터와 희소 신호를 모두 가진 컬렉션에서 동작해요.