단위 4 / 11

검색 전략: Top-k, Hybrid, Re-ranking

이득:

  • Top-k 선택과 의미 및 키워드 검색을 결합한 하이브리드 검색 구현
  • 재순위화를 통해 첫 번째 검색의 정확도를 높입니다.
  • 쿼리 변환 및 HyDE와 같은 기술을 사용하여 어려운 질문을 더욱 검색 가능하게 만듭니다.

문서를 잘게 찢어서 벡터 데이터베이스에 넣었습니다. 이제 실제 작업은 사용자가 질문할 때 올바른 부분을 가져오는 것입니다. 이것을 검색이라고 하며 RAG 품질의 중추입니다. "검색 품질 = RAG 품질"이라는 문구를 기억하세요. 이 장치는 바로 그 품질을 향상시키는 기술입니다. Top-K 선택부터 하이브리드 검색, 순위 재지정부터 쿼리 변환까지 실용적인 기술을 다룹니다.

탑케이: 몇 개를 가져올까요?

가장 기본적인 설정: 검색에서 반환할 조각(k) 수. 더 적은 양(k=1)을 가져오면 올바른 조각을 놓칠 위험이 높습니다. 너무 많이 추가하면(k=20) 모델에 노이즈가 추가되고 토큰 비용이 증가합니다.

두 가지 개념을 구별하십시오. 회상(Recall): 회수된 조각 중에서 올바른 조각이 나오는 비율. 정밀도: 검색되는 내용이 관련되는 비율입니다. k를 늘리면 재현율은 높아지지만 정밀도는 감소합니다. 목표는 둘 사이의 균형을 맞추는 것입니다.

탑케이

영향

적절한 상황

1-3

높은 정밀도, 실수 위험

간단하고 단답형 질문

4-8

균형; 대부분의 시나리오

일반 기업 RAG

10-20

재현율이 높을수록 노이즈가 증가합니다.

재순위 포함(아래)

팁: 일반적이고 강력한 패턴: 넓게 가져온 다음(k=20) 다시 순위를 지정하여 좁힙니다(상위 4개). 이렇게 하면 아무것도 놓치지 않고 모델에 명확한 컨텍스트를 제공할 수 있습니다.

하이브리드 검색: 두 가지 검색의 힘

의미론적(벡터) 검색은 의미를 포착하지만 전체 제품 코드("XR-4471"), 드물게 사용되는 약어, 고유 이름, 버전 번호 등을 놓칩니다. 이러한 정확히 일치 작업의 경우 구식 키워드 검색, 특히 BM25라는 기존 알고리즘이 매우 좋습니다.

하이브리드 검색은 의미론적 검색과 키워드 검색이 모두 작동하여 결과를 결합하는 두 가지를 결합합니다. 따라서 "제품의 보증 기간"과 같은 질문에

병합은 일반적으로 RRF(Reciprocal Rank Fusion)를 통해 수행됩니다. 두 목록 모두에서 더 높은 트랙이 앞으로 나옵니다.

# 하이브리드 검색(개념적)sem = vector_search(question, k=20) #meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # 두 개를 융합하여 상위 8개

순위 재지정: 두 번째 및 더 스마트한 패스

첫 번째 통화는 빠르지만 무례할 수 있습니다. 재순위화는 보다 강력한 모델(보통 크로스 인코더 - 질문과 지문을 함께 읽고 관련성에 점수를 매기는 모델)을 사용하여 첫 번째 검색에서 반환된 후보자를 하나씩 점수를 매기고 가장 관련성이 높은 후보자를 맨 위로 이동시킵니다.

논리는 다음과 같습니다. 첫 번째 검색에서는 재현을 위해 많은 수의 후보(20개 후보)를 할당하고, re-ranker는 정밀도를 위해 가장 좋은 4개를 선택합니다. 이 2단계 접근 방식은 단일 단계 검색보다 훨씬 더 정확합니다. 약간의 지연과 추가 처리 비용이 발생합니다. 이득은 품질이 크게 향상된다는 것입니다.

# 2단계 검색(개념적)candidates = hybrid_search(question, k=20) # broad, Quickscore = reranker.score(question, Candidates) # 각 후보에 대한 관련성 점수 context = rating.rank()[:4] # 상위 4개

쿼리 변환

때로는 문제가 검색에 있는 것이 아니라 질문 자체에 있는 경우도 있습니다. 사용자가 "원격 근무자는 어떻습니까?"라고 묻는 경우 ', 이것은 단독으로 찾을 수 없습니다(원격 근무자를 위한 것이 무엇인지 명확하지 않습니다). 쿼리 변환 기술은 다음과 같습니다.

  • 다시 작성: 대화 기록을 사용하여 "원격 근무자가 연차 휴가를 받을 수 있는 자격이 무엇입니까?"라는 질문을 독립적으로 만듭니다.
  • 다중 쿼리: 동일한 질문에 대해 3개의 다른 표현을 생성하고 모두 검색하고 결과를 결합합니다. 다른 단어는 다른 조각을 찾습니다.
  • HyDE(Hypothetical Document Embeddings): 먼저 모델에 "가능한 답변"을 인쇄한 다음 해당 가상 답변을 포함하고 검색합니다. 가상의 답변이 실제 문서에 단어로 더 가깝기 때문에 더 잘 발견되는 경우도 있습니다.

# 다중 쿼리(개념적) 변형 = model.uret("이 질문을 3가지 다른 방식으로 표현합니다: " + 질문)tum_sonuc = []for v in 변형: all_sonuc += 벡터_중간(v, k=6)context = singular_and_order(tum_result)[:6]

약한 검색 / 강력한 검색

약함(단일 단계, 의미론만, 상수 k=3):

result = vector_search(question, k=3)# 문제: 제품 코드가 누락되어 어려운 질문에 올바른 파트 3을 입력할 수 없습니다.

강력함(하이브리드 + 와이드크 + 재순위 + 필요한 경우 다중 쿼리):

후보자 = hybrid_search(rewrite(question, 과거), k=20)context = reranker.score(question, 후보자).first(4)# 정확한 일치와 의미가 모두 캡처됩니다. 베스트 4개 모델에 들어갑니다.

미니 케이스 3개

사례 1 — 제품 코드가 이스케이프되었습니다. 지원 팀의 순수 의미 검색에서는 "RTX-9080 드라이버 오류"라는 질문에서 "RTX-9080"을 그대로 찾을 수 없습니다. 그는 비슷한 이름을 가진 다른 제품을 가져오고 있었습니다. 하이브리드 검색을 추가하자 정확한 코드 매칭이 이루어졌고, 올바른 기사를 반환하는 비율이 58%에서 92%로 증가했습니다.

사례 2 - 순위 차이 재지정. 법률 보조원은 k=5로 작업했지만 대부분의 경우 올바른 항목은 7-10입니다. 그는 대열에 머물고있었습니다. k=20 + 재순위가 도입되면 올바른 기사가 상위 3위 안에 드는 비율이 61%에서 94%로 증가했습니다. 지연 시간은 300ms만 증가했는데 이는 허용 가능한 절충안입니다.

사례 3 - 맥락이 없는 후속 질문. HR 보조원에서 사용자는 "아르바이트는 어떻습니까?"라고 묻습니다. 내가 물었더니 시스템이 관련 없는 부품을 가져왔다. 쿼리를 다시 작성하면(과거의 "연차 휴가" 컨텍스트를 가져와서 "시간제 직원은 연차 휴가를 받을 수 있습니다."를 추가함) 정답률이 40%에서 86%로 증가했습니다.

일반적인 실수

  • 의미 검색에만 의존: 제품 코드, 약어, 고유 명칭이 누락되었습니다. 하이브리드를 추가하세요.
  • k를 너무 작게 유지: 올바른 조각이 목록에 들어갈 수 없습니다. 다시 순위를 지정하여 넓게 만들고 좁게 만듭니다.
  • 순위를 다시 매길 생각은 하지 마세요. 첫 번째 검색은 무례합니다. 두 번째 스마트 패스는 품질을 크게 향상시킵니다.
  • 후속 질문을 있는 그대로 검색: 맥락이 ​​없는 질문은 의미가 없는 것을 검색합니다. 고쳐 쓰기.
  • 맹목적으로 k 증가(순위 재지정 없음): 모델이 잡음으로 가득 차고 응답이 왜곡되며 비용이 증가합니다.
주의: 각 기술마다 비용과 지연이 추가됩니다. 다중 쿼리는 3중 검색을 의미하고, re-ranking은 추가 모델 호출을 의미합니다. 먼저 단순한 하이브리드 + 합리적인 k로 시작하세요. 실제로 필요한 곳에 무거운 기술을 측정하고 추가합니다. 측정하지 않고 추가합니다.

요약하면

  • Top-k는 재현율과 정밀도 사이의 균형입니다. 일반적으로 4-8이 좋은 시작입니다.
  • 하이브리드 검색은 의미론적 검색과 키워드(BM25) 검색을 결합합니다. 정확히 일치하는 항목을 복구합니다.
  • 순위 재지정은 강력한 모델을 사용하여 광범위한 초기 검색에서 후보의 점수를 다시 매기고 가장 적합한 후보를 선택합니다.
  • 쿼리 변환(재작성, 다중 쿼리, HyDE)을 통해 어렵고 문맥에 구애받지 않는 질문을 검색할 수 있습니다.
  • 강력한 패턴: 광범위한 가져오기 → 하이브리드와 병합 → 재순위로 좁혀짐; 하지만 측정을 통해 각 기술을 추가합니다.

응용과제

이전 단원의 데이터를 사용하여 6개의 어려운 질문을 준비합니다. 정확한 일치가 필요한 최소 2개(제품 코드, 약어, 날짜), 의미 체계(다른 단어가 포함된 동일한 주제) 2개, 맥락 없는 후속 질문 2개. (1) 먼저 각 질문을 순수한 의미 검색으로 생각하고 어떤 부분이 나올지 수동으로 표시합니다. (2) 하이브리드와 재순위를 추가하여 동일한 질문을 다시 평가합니다. (3) 맥락 없이 후속 질문을 다시 작성합니다. 어떤 기술이 어떤 질문 유형에 영향을 미치는지 표 형식으로 기록해 두세요.

체크리스트

  • [ ] 나는 top-k가 재현율-정밀도 균형과 합리적인 시작 범위라는 것을 알고 있습니다.
  • [ ] 하이브리드 검색이 정확한 일치 항목을 검색하는 이유를 설명할 수 있습니다.
  • [ ] 재순위(넓게 → 스마트 좁게)의 2단계 논리를 적용할 수 있습니다.
  • [ ] 나는 맥락 없이 후속 질문을 다시 작성해야 할 필요성을 인식합니다.
  • [ ] 측정이 아닌 측정을 통해 묵직한 기술을 더했음을 확인합니다.