1. HyDE의 개념과 배경
HyDE(Hypothetical Document Embedding)는 기존 정보 검색 기술의 한계를 극복하기 위해 고안된 혁신적인 검색 방식이다. LLM(Large Language Model)을 활용해 질문에 대한 가상의 문서를 생성하고, 이를 벡터화하여 검색 결과의 정확성과 의미적 일치를 높인다.
기존의 키워드 기반 검색이나 단순 임베딩 검색 방식은 질문의 맥락이나 의도를 충분히 반영하지 못하는 경우가 많았다. HyDE는 이러한 문제를 해결하기 위해 질문과 관련 있는 가상의 문서를 생성하는 단계적 접근 방식을 채택한다.
2. HyDE의 작동 원리
HyDE는 다음의 과정을 통해 작동한다
- 사용자의 질문 입력: 사용자가 특정 질문을 입력한다.
- 가상 문서 생성: 질문을 기반으로 LLM을 사용하여 관련성이 높은 가상의 문서를 생성한다.
- 임베딩 생성: 생성된 가상 문서를 임베딩 모델로 벡터화한다.
- 유사도 비교 및 검색: 생성된 벡터와 데이터베이스 문서의 벡터 간 유사도를 계산하여 가장 관련성이 높은 문서를 반환한다.
이 과정에서 가상 문서는 질문의 의미를 반영하며, 기존 방식에서는 얻을 수 없었던 검색 결과의 정확도를 높인다.
3. 기존 임베딩 모델 사용 vs HyDE 적용
기존 임베딩 모델 검색
기존 방식은 질문 자체를 임베딩하여 데이터베이스 문서와 유사도를 계산하는 방식이다. 이 방식은 빠른 검색이 가능하지만, 질문의 의미를 충분히 반영하지 못하고 문장 구조나 키워드에 의존하는 한계가 있다.
실행 결과
- 질문: "하이퍼바이저(Hypervisor)의 목적은 무엇인가요?"
- 검색 결과: "IP 주소를 MAC 주소로 변환하는 역할을 합니다"
- 실행 시간: 0.192557초
- 문제점: 질문의 핵심 주제를 반영하지 못하고, 유사한 구조를 가진 문서가 검색되었다.
HyDE 방식 검색
HyDE 방식은 질문을 기반으로 LLM이 가상의 문서를 생성하고, 이를 임베딩하여 데이터베이스 문서와 비교한다. 질문의 의도를 깊이 반영하여 더 정확한 검색 결과를 제공한다.
실행 결과
- 가상 문서 생성
Q: 하이퍼바이저(Hypervisor)의 목적은 무엇인가요? A: 하이퍼바이저(Hypervisor)는 가상화된 환경을 생성하고 관리하는 소프트웨어입니다. 이는 하드웨어 리소스를 가상화하고, 가상화된 환경을 생성하고, 가상화된 환경을 관리하는 역할을 합니다.
- 검색 결과: "물리적 하드웨어에서 가상 머신의 생성과 관리를 가능하게 합니다"
- 실행 시간: 8.641256초
- 장점: 질문의 의도를 반영하여 적합한 문서를 검색한다.
실행 결과 비교
검색 방식 | 검색 결과 | 실행 시간 | 특징 |
---|---|---|---|
기존 임베딩 모델 | IP 주소를 MAC 주소로 변환하는 역할을 합니다 | 0.192557초 | 빠르지만 질문의 맥락을 반영하지 못해 부정확한 결과를 제공함. |
HyDE 방식 | 물리적 하드웨어에서 가상 머신의 생성과 관리를 가능하게 합니다 | 8.641256초 | 시간이 오래 걸리지만 질문의 의도를 반영한 정확한 결과를 제공함. |
4. HyDE 방식의 장점
- 질문 의도 반영: 질문에 대한 가상 문서를 생성하여 맥락을 반영한 검색 결과를 도출한다.
- 검색 정확도 향상: 키워드 매칭이 아닌 의미적 유사성을 기반으로 검색 정확도를 높인다.
- 다양한 활용 가능성: 기술 문서 검색, 고객 지원, 학술 자료 검색 등 다양한 분야에서 강력한 도구로 활용할 수 있다.
5. HyDE의 실제 구현 예시
다음은 Python을 사용하여 HyDE 방식을 구현한 코드이다. Hugging Face의 모델을 사용하며, 질문 입력부터 최종 검색 결과까지의 과정을 포함한다.
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
from sentence_transformers import SentenceTransformer, util
import time
# 1. 질문 입력
question = "하이퍼바이저(Hypervisor)의 목적은 무엇인가요?"
# 2. 데이터베이스 문서
database_documents = [
"IP 주소에서 네트워크 부분과 호스트 부분을 식별하는 데 사용됩니다",
"IP 주소를 MAC 주소로 변환하는 역할을 합니다",
"사람이 읽을 수 있는 도메인 이름을 인터넷 상의 리소스를 찾기 위한 IP 주소로 변환합니다",
"물리적 하드웨어에서 가상 머신의 생성과 관리를 가능하게 합니다",
"소프트웨어 애플리케이션이 인터넷을 통해 제공되는 클라우드 컴퓨팅 서비스 모델입니다"
]
# 3. 임베딩 모델 설정
embedder = SentenceTransformer('intfloat/multilingual-e5-large')
# 시작 시간 기록
start_time = time.time()
# 4. 기존 임베딩 검색
print("\n[기존 임베딩 검색]")
question_embedding = embedder.encode(question, convert_to_tensor=True)
database_embeddings = embedder.encode(database_documents, convert_to_tensor=True)
cosine_scores_existing = util.pytorch_cos_sim(question_embedding, database_embeddings)
most_similar_index_existing = cosine_scores_existing.argmax().item()
print(f"기존 임베딩 검색 결과: {database_documents[most_similar_index_existing]}")
# 종료 시간 기록
end_time = time.time()
print(f"[기존 임베딩 모델 실행 시간] : {end_time - start_time:.6f}초")
# 5. HyDE 방식 검색
print("\n[HyDE 방식 검색]")
# Hugging Face 모델 설정
model_name = "ibm-granite/granite-3.0-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 5.1. 가상 문서 생성
text_generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
device=0
)
# 시작 시간 기록
start_time = time.time()
hypothetical_document = text_generator(
f"Q: {question}\nA:",
max_length=200,
temperature=0.5, # 안정적인 문서 생성을 위해 낮은 온도 설정
num_return_sequences=1
)[0]["generated_text"]
# 가상 문서 결과 출력
print(f"가상 문서 생성 결과: {hypothetical_document}")
# 5.2. HyDE 검색
filtered_hypothetical_document = " ".join(hypothetical_document.split("\n")[1:])
hypothetical_embedding = embedder.encode(filtered_hypothetical_document, convert_to_tensor=True)
cosine_scores_hyde = util.pytorch_cos_sim(hypothetical_embedding, database_embeddings)
most_similar_index_hyde = cosine_scores_hyde.argmax().item()
print(f"HyDE 검색 결과: {database_documents[most_similar_index_hyde]}")
# 종료 시간 기록
end_time = time.time()
print(f"[HyDE 실행 시간] : {end_time - start_time:.6f}초")
6. 결론 및 활용 가능성
HyDE는 기존 임베딩 검색 방식의 한계를 극복하여 질문의 맥락과 의도를 반영한 더 정확한 검색 결과를 제공한다. LLM의 능력을 활용한 가상 문서 생성 과정은 정보 검색의 품질을 크게 향상시키며, 기술 문서 검색, 고객 지원, 학술 연구 등 다양한 분야에서 강력한 도구로 자리 잡을 가능성이 크다.
HyDE 방식은 더 높은 정확도를 제공하는 만큼, 계산 비용과 실행 시간이 증가한다는 점을 고려해야 한다. 따라서 사용 사례에 맞게 검색 속도와 정확도를 균형 있게 선택하는 것이 중요하다.