> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 하이브리드 검색

> 의미 유사도와 키워드 매칭을 함께 씁니다. 둘의 장점을 다 챙깁니다

Nora 리트리벌은 기본으로 **하이브리드 검색**을 씁니다. 독립된 두 랭킹 패스(벡터와 키워드)를 하나의 최종 점수로 융합하죠. 둘 중 하나만 쓰는 것보다 잘 됩니다.

## 왜 하이브리드인가

* **벡터 검색**은 뜻이 비슷한 청크를 찾습니다. 표현이 달라도요. 바꿔 쓴 질문, 언어 사이, 개념 매치에 좋습니다. 드물고 정확한 용어(SKU, 에러 코드, 고유명사)에는 약합니다.
* **키워드(BM25) 검색**은 같은 리터럴 용어가 든 청크를 찾습니다. 식별자, 전문 용어, 정확한 문자열 조회에 좋습니다. 동의어와 바꿔 쓰기에는 약합니다.

실제 질문은 대부분 둘 다 필요합니다.

## 융합 원리

벡터와 키워드가 각각 랭크된 목록을 냅니다. Nora는 \*\*Reciprocal Rank Fusion(RRF)\*\*로 합칩니다. 두 목록 모두에서 3위인 청크가, 한 목록에서 1위지만 다른 목록에서 100위인 청크보다 높게 잡힙니다. RRF는 점수 스케일 차이에 강하고, 손볼 매직 상수가 없습니다.

융합된 목록이 Agent가 보는 것입니다.

## 균형 맞추기

RRF를 써도 패스에 가중치를 줄 수 있습니다. 리트리벌 프리셋에서요.

* **Vector weight** 0.0\~1.0. 기본 0.5.
* **Keyword weight** 0.0\~1.0. 기본 0.5.

대화형 도메인(지원, 법률 Q\&A)은 벡터 쪽으로, 코드·부품 번호·제품명은 키워드 쪽으로 기울이세요.

한 가중치를 0으로 두면 그 패스가 완전히 꺼집니다(순수 벡터 또는 순수 키워드).

## 쿼리 확장

짧고 모호하고 키워드 하나뿐인 어려운 쿼리에는, Nora가 쿼리를 작은 변형 묶음으로 다시 써 각각 검색할 수 있습니다. 결과는 다시 융합합니다. 지연과 비용이 더해져 기본은 꺼짐입니다.

프리셋에서 켭니다. **Query expansion → on**이고, 확장 개수(2\~5)를 정합니다. 작은 모델을 씁니다.

## 다국어

임베딩 모델이 다국어면 벡터 검색이 언어 사이에서 됩니다. 키워드 검색은 표면 언어만 맞춥니다. 데이터가 다국어면 다국어 모델로 임베딩하고 가중치를 벡터 쪽으로 두세요.

## 테스트

리트리벌 프리셋마다 **Test query** 패널이 있습니다. 쿼리를 넣고 랭크된 결과를 보며, 벡터 전용 / 키워드 전용 / 하이브리드를 토글해 견줍니다. 돌아온 청크마다 점수 내역이 뜹니다.

## 하이브리드가 과할 때

아주 작은 컬렉션(1000 청크 미만)은 키워드만으로 충분하고 추가 비용도 없습니다. 아주 짧고 키워드 위주인 쿼리(SKU 조회)는 키워드만으로 같은 리콜에 더 빠릅니다. 그런 프리셋은 벡터를 끄세요.
