HyDE(Hypothetical Document Embedding)란?

wldbs._.·2025년 8월 8일

RAG

목록 보기
16/22
post-thumbnail

RAG에 대해 공부하던 도중, HyDE라는 것을 알게 되었다.


🔮 HyDE 개념

  • 하이드(HyDE, Hypothetical Document Embedding)란?

23-03. 가상의 문서를 이용한 하이드

🎁 리랭킹과 하이드라는 두 가지 방식을 통해 검색 시스템의 성능을 향상시킬 수 있다.

  • 리랭킹은 초기 검색 결과를 더욱 정교하게 재정렬하여 사용자의 의도에 가장 부합하는 문서를 선별해내는 방식
  • 하이드는 가상의 이상적인 답변을 생성하여 이를 기반으로 검색의 정확도를 높이는 방식

→ RAG 시스템에 이러한 검색 성능 향상 기법들을 필요에 따라 적절히 적용한다면 검색의 정확도를 향상시키고 더욱 신뢰할 수 있는 답변을 얻을 수 있다.

🎁 코사인 유사도가 1에 가까울수록(유사할수록), 코사인 거리는 0에 가까워진다.

  • 거리 기반 측정이 검색 알고리즘과 더 잘 맞다.

🔮 HyDE에 대하여

하이드는 검색 성능을 향상시키는 방법 중 하나이다.

전통적인 검색 시스템에서는 사용자의 질의를 직접 임베딩하여 문서를 검색했지만, 하이드는 질의에 대한 가상의 답변 문서(=LLM의 답변)를 먼저 생성한 후 이를 기반으로 검색을 수행하여 검색 성능을 높인다.

  1. 가상 문서 생성 단계

: LLM을 활용하여 사용자의 질문에 대한 답변 문서를 생성하는 단계

  • 기존의 RAG에서는 사용자의 질문으로 벡터 데이터베이스에서 유사한 문서를 검색하는 경우 ↑
  • 하이드에서는 해당 질문을 바로 검색으로 사용하지 않고, 준비해둔 LLM에게 질문을 입력
  1. 임베딩 및 검색 단계

: 위에서 얻은 LLM의 답변을 임베딩 모델을 통해 벡터화하고, 이 벡터를 사용하여 벡터 데이터베이스에서 유사한 문서들을 검색한다.

🎁 다시 말해, 사용자의 질문으로 검색하는 것이 아니라 사용자의 질문에 대한 LLM의 일반적인 답변으로 검색을 수행한다.

  1. 최종 답변 생성

: 벡터 데이터베이스에서 검색된 관련 문서들을 컨텍스트로 활용하여 LLM이 최종 답변을 생성한다.

  • 이때 검색된 문서가 사용자의 질문으로 검색한 것보다 LLM의 답변으로 검색했을 때 검색 성능이 향상되었다고 한다면 더 좋은 답변을 얻을 수 있을 것이다.

🔮 HyDE의 장점 & 주의할 점

<하이드의 장점>

  1. 🎁 질의의 의미적 확장성

    • 질문을 직접 검색하는 대신, LLM의 답변 문서로 검색하면 → 기존 사용자 질의의 의미를 자연스럽게 확장하여 검색을 수행할 수 있다.
  2. 🎁 검색 정확도 향상

    • 실제 벡터 데이터베이스 검색에서는 놓칠 수 있는 관련 문서들을 가상 문서를 통해 더 잘 찾아낼 수 있다.
    • 의미적으로 유사하지만 다른 표현을 사용한 문서들도 효과적으로 검색된다.

<하이드 구현 시 고려해야 할 주요 요소>

  1. ⚠ 가상 문서의 품질
    • LLM이 생성하는 가상 문서의 품질이 전체 시스템의 성능을 좌우 → 적절한 LLM의 선택과 프롬프트 엔지니어링을 통해 고품질의 가상 문서가 생성되도록 해야 한다.
  2. ⚠ 연산 비용
    • LLM을 사용하여 가상 문서를 생성하는 과정이 추가됨 → 기존 검색 방식대비 LLM 호출이 1회 추가 발생 → 실시간 검색이 필요한 경우 이를 고려하여 시스템 설계
  3. ⚠ 도메인 특화 문제
    • 특정 도메인에서는 가상 문서 생성을 위한 프롬프트를 해당 도메인의 특성에 맞게 조정해야 할 수 있다.
    • 예를 들어 법률 문서 검색과 의료 문서 검색에서는 각각 다른 스타일의 가상 문서가 필요할 수 있다.

🔮 정리

HyDE (Hypothetical Document Embeddings)는 OpenAI에서 제안한 RAG (Retrieval-Augmented Generation) 시스템의 성능을 개선하기 위한 pre-retrieval 전략 중 하나

  • 기존의 dense vector 기반 검색과 달리, query를 기반으로 가상의 문서를 먼저 생성한 뒤, 그 문서를 임베딩해서 검색하는 방식
  1. 기존 dense search vs. HyDE 방식
  • 기존 방식: query → 임베딩 → vector DB에서 유사 문서 검색
  • HyDE:
    • query → LLM으로 가상의 문서(hypothetical answer or passage) 생성
    • → 생성된 문서의 임베딩을 이용해 vector DB에서 유사 문서 검색
  1. 왜 쓰는가? (장점)
  • LLM이 생성한 가상 문서는 보통 질문과 관련된 핵심 개념이나 배경 지식을 포함함
  • 따라서 query 자체보다는 더 의미 기반 유사도 검색에 유리
  • 특히 query가 짧거나 추상적인 경우, 성능 향상 효과가 큼
  1. 예시 Query: "왜 지구는 둥근가요?"
  1. LLM이 가상 문서 생성:
지구는 중력에 의해 둥근 형태를 유지하게 됩니다. 
질량이 충분히 크면 물체는 중력에 의해 중심을 향해 당겨지게 되고, 
이로 인해 구형 형태가 형성됩니다. 이러한 과정은 행성과 별 등 큰 천체에서 흔히 발생합니다.
  1. 위 가상의 문서를 임베딩 → vector DB에서 유사 문서 검색
    → 지구의 형상, 중력, 천문학적 설명이 포함된 실제 문서들을 더 잘 찾아냄
  1. HyDE의 특징
항목설명
목적query 자체보다 더 정보가 풍부한 임베딩 생성
방식LLM이 생성한 가상 문서를 벡터화
효과검색 정확도 향상, 특히 짧거나 모호한 질문에 강함
사용 위치Pre-Retrieval 단계 (질문을 재구성하는 과정)
  1. 🧪 실제 적용 시 고려사항
  • LLM을 호출해야 하므로 비용 및 속도 이슈 존재
  • 질문이 충분히 구체적이면, 기본 dense embedding보다 이점이 줄어듬
  • 다양한 프롬프트 설계가 필요 (예: "이 질문에 대해 설명해줘" → 문서화)
  1. 간단히 Python으로 시뮬레이션
  • OpenAI API를 통해 아래와 같은 과정을 거칠 수 있다
from openai import OpenAI
client = OpenAI(api_key="...")
    
# 1. 가상 문서 생성
query = "왜 지구는 둥근가요?"
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": f"{query}에 대해 짧은 문서 형식으로 설명해줘."}],
    temperature=0.7,
)
hypothetical_doc = response.choices[0].message.content
    
# 2. 임베딩 생성
embedding_response = client.embeddings.create(
    model="text-embedding-3-small",
    input=hypothetical_doc
)
embedding = embedding_response.data[0].embedding
profile
공부 기록용 24.08.05~ #LLM #RAG

0개의 댓글