PART 8 - 강의 1/4

쿼리 변환 기법

검색 성능을 높이는 쿼리 리라이팅과 확장 전략

01

쿼리 변환의 필요성

사용자 쿼리의 한계

사용자의 질문은 종종 모호하거나 불완전합니다. 쿼리 변환은 원래 질문을 검색에 최적화된 형태로 바꾸어 더 관련성 높은 문서를 찾도록 돕습니다.

왜 원본 쿼리만으로 부족할까?
  • 어휘 불일치: 사용자 표현과 문서의 표현이 다름 (동의어 문제)
  • 모호성: 짧거나 불분명한 질문
  • 복합 질문: 여러 정보가 필요한 복잡한 질문
  • 추상적 질문: 구체적인 키워드가 없는 질문
"파이썬 빠르게 하는 법"
->
쿼리 변환
->
"Python 성능 최적화 기법"
"Python 코드 속도 개선 방법"
02

쿼리 리라이팅

더 명확하고 검색에 적합한 형태로 다시 작성

LLM을 사용하여 원본 쿼리를 더 명확하고 검색에 적합한 형태로 다시 작성합니다.

E
단순 리라이팅
Simple Rewriting
LLM에게 쿼리를 더 명확하게 다시 작성하도록 요청합니다. 구어체를 문어체로, 약어를 풀어쓰는 등의 변환을 수행합니다.
원본 쿼리:
"RAG 뭐임?"
변환 결과:
"RAG(Retrieval-Augmented Generation)란 무엇인가요?"
구어체 질문 약어 확장
T
의도 명확화
Intent Clarification
사용자의 진짜 의도를 파악하여 쿼리에 반영합니다. 모호한 질문을 구체적인 질문으로 변환합니다.
원본 쿼리:
"에러 해결"
변환 결과:
"Python RuntimeError 오류 해결 방법과 디버깅 가이드"
모호한 질문 맥락 부족
03

Multi-Query Retrieval

여러 관점의 쿼리 생성

하나의 질문에서 여러 버전의 쿼리를 생성하여 각각 검색합니다. 다양한 관점에서 검색하면 더 포괄적인 결과를 얻을 수 있습니다.

"LLM 학습 방법은?"
LLM이 다양한 버전 생성
쿼리 1 (기술적)
"대규모 언어 모델의 학습 알고리즘과 프로세스"
쿼리 2 (실무적)
"LLM 파인튜닝과 사전학습 방법 가이드"
쿼리 3 (개념적)
"Transformer 기반 모델의 훈련 원리"
각각 검색 후 결과 병합
중복 제거 및 통합된 검색 결과
장점
  • 어휘 불일치 문제 해결 (같은 개념, 다른 표현)
  • 검색 재현율(Recall) 향상
  • 다양한 관점의 문서 수집
04

HyDE

Hypothetical Document Embeddings

쿼리 대신 LLM이 생성한 "가상의 답변 문서"로 검색합니다. 질문보다 답변과 유사한 문서가 더 잘 검색됩니다.

?
원본 쿼리
"RAG의 장점은?"
->
D
가상 답변 생성
"RAG의 주요 장점은 실시간 정보 접근, 할루시네이션 감소, 출처 제공..."
->
HyDE 프로세스 예시:
1. 원본 쿼리: "벡터 DB 선택 기준"
2. LLM 생성 가상 답변:

"벡터 데이터베이스 선택 시 고려해야 할 주요 기준으로는 확장성, 검색 속도, ANN 알고리즘 지원 여부, 메타데이터 필터링 기능, 관리 편의성, 비용 구조, 클라우드 지원 여부 등이 있습니다..."

3. 검색: 가상 답변의 임베딩으로 실제 문서 검색
HyDE의 한계
  • LLM이 잘못된 가상 답변을 생성하면 검색 품질 저하
  • 추가 LLM 호출로 인한 지연과 비용 증가
  • 사실 기반 질문보다 개념적 질문에 더 효과적
05

Step-Back Prompting

한 걸음 물러서서 생각하기

구체적인 질문에서 더 일반적이고 추상적인 질문을 먼저 도출합니다. 상위 개념을 검색하여 더 넓은 맥락을 파악한 후 원래 질문에 답합니다.

1
원본 질문 (구체적)
"GPT-4의 컨텍스트 윈도우 크기는 얼마인가요?"
2
Step-Back 질문 (추상적)
"LLM의 컨텍스트 윈도우란 무엇이며, 어떻게 결정되나요?"
3
배경 지식 검색
컨텍스트 윈도우의 개념, 측정 방법, 제한 요인 등
4
원본 질문 + 배경 지식으로 답변
GPT-4 특정 정보 검색 + 전체 맥락에서 설명
효과적인 경우
  • 전문적/기술적 질문에 배경 설명이 필요할 때
  • 특정 사례에 대한 질문이지만 일반 원리가 중요할 때
  • Why/How 질문에 답하기 위해 맥락이 필요할 때
06

쿼리 분해

Query Decomposition

복잡한 질문을 여러 개의 단순한 하위 질문으로 분해하여 각각 검색한 후 결과를 종합합니다.

복합 질문 분해 예시:
원본 질문:

"RAG와 파인튜닝 중 어떤 것이 더 나은지 비교하고, 각각 언제 사용해야 하는지 설명해주세요."

분해된 하위 질문들:
  • Q1: RAG의 장점과 단점은 무엇인가?
  • Q2: 파인튜닝의 장점과 단점은 무엇인가?
  • Q3: RAG가 적합한 사용 사례는?
  • Q4: 파인튜닝이 적합한 사용 사례는?
최종: 각 하위 질문 검색 결과를 종합하여 최종 답변 생성
07

기법 비교 및 선택

상황에 맞는 최적의 기법 선택

기법 적합한 상황 오버헤드 효과
쿼리 리라이팅 구어체, 모호한 질문 낮음 기본적 개선
Multi-Query 어휘 불일치, 다양한 관점 중간 Recall 향상
HyDE 개념적 질문, 추상적 쿼리 높음 의미 매칭 향상
Step-Back 전문적/기술적 질문 중간 맥락 이해 향상
Query Decomposition 복합 질문, 다중 정보 필요 높음 복잡한 질문 처리
실무 가이드
  • 단순한 경우: 쿼리 리라이팅만으로도 충분
  • 검색 재현율이 낮을 때: Multi-Query 추가
  • 개념적 질문: HyDE 시도
  • 기법 조합: 여러 기법을 함께 사용 가능
SUMMARY

핵심 요약

  • 쿼리 리라이팅 - 모호한 질문을 명확하게 재작성
  • Multi-Query - 여러 버전으로 검색 후 통합
  • HyDE - 가상 답변 생성 후 검색
  • Step-Back - 추상화된 질문으로 맥락 확보
  • Query Decomposition - 복잡한 질문을 분해하여 처리