RAG | Retriever 정리

Choi jeongmin·2025년 8월 28일

RAG

목록 보기
1/1

Hybrid Retriever

밀집 검색(유사도)과 희소 검색(키워드) 두가지 방법을 융합하여 검색 정확도를 향상시키는 대표적인 기법

  • 희소 검색: 정확한 검색 용이
  • 밀집 검색: 맥락에 알맞는 검색 용이

Dense Vector(조밀 벡터)

  • 의미적 유사성에 강함
  • 대부분의 값이 0이 아닌 실수
  • 예: "How to catch fish" -> "fishing techniques"매칭

Sparse Vector(희소 벡터)

  • 정확한 키워드 매칭에 강함
  • 대부분의 값이 0, 일부만 0이 아님
  • BM25, TF-IDF 기반
  • 예: "Alaskan Pollock" -> 정확히 "Alaskan Pollock" 매칭

어떻게 검색 결과를 합칠까?

두 검색 결과를 합치는 과정에서 다양한 알고리즘이 존재하지만 RRF 방식 가장 선호

  • 직접 구현 X - vector DB나 Langchain에서 제공

  • 두 리트리버의 비중을 고려해야할 때, Langchain에서 제공하는 앙상블 리트리버 같은 모듈을 사용해볼 수 있다.


Multi Query Retriever

  • 하나의 질문으로 여러 관점의 검색을 동시에 수행하는 방식으로, LLM 기반 성능 향상 기법

  • LLM을 사용해 원본 쿼리에서 다양한 관점의 여러 쿼리를 자동 생성하는 기법

  • 여러 쿼리를 자동생성하여 검색하면 놓칠 수 있는 관련 문서 추가 발견 가능하여 단일 쿼리 검색의 한계의 문제점 극복

  • 랭체인에서 초기부터 사용했음 → 검색 성능을 높이는데 좋기 때문

  • 멀티쿼리를 만들 때 LLM에 적절한 프롬프트를 주는게 가장 중요하다.

  1. 주어진 질문이 모호할 때 구체적으로!
  2. 복합한 쿼리를 단순하게
  3. 동일한 질문에 대해서 같은 용어들이 다르게 표현되는 것에 초점을 두고 다양한 표현방법으로 표현

왜 Multi-Query Retriever가 필요한가?

기존 RAG 시스템의 한계점

  • 단일 쿼리의 제약: 사용자의 질문이 모호하거나 불완전할 때 관련 문서를 놓칠 수 있음
  • 의미적 표현의 다양성: 같은 의마라도 다양한 표현 방식으로 인해 검색 성능이 제한됨
  • 검색 범위의 한계: 하나의 쿼리로는 복합적인 정보 요구사항을 충족하기 어려움

Multi-Query Retriever 의 장점

  • 검색 범위 확장: 여러 관점에서 동일한 정보를 검색하여 누락 방지
  • 의미적 다양성: 다양한 표현으로 쿼리를 생성하여 검색 정확도 향상
  • 컨텍스트 풍부화: 다각도의 검색 결과를 통합하여 더 완전한 답변 생성
  • 견고성 증대: 단일 쿼리 실패 시에도 다른 쿼리들이 보완 역할 수행

- 검색이 실패하는 확률이 줄어든다!
- LLM모델은 가벼운 것을 쓰는게 좋다.

RAG Fusion

여러 쿼리를 통해 검색된 문서의 중복을 제거하고, 유사도 기준으로 재정렬하는 RAG Fusion 방식도 활용
- Reranker + Multiquery의 조합


Self Query Retriever

  • 주어진 사용자의 질문을 벡터DB를 조회할 필터링 쿼리로 변환하여 검색하는 방식
  • 자연어 쿼리 → 쿼리 구성 LLM이 쿼리 작성 → 벡터 저장소 검색 및 필터링에 활용
  • 사용자의 질문만으로 벡터 DB 검색이 제대로 이뤄지지 않을 수 있는 메타데이터 중심 질문을 처리하기에 적합
  • 핵심은 쿼리 생성기와 쿼리 번역기이다. 벡터 DB에 알맞은 필터링 쿼리 생성을 위해 번역이 필요하다.
  • Agentic RAG일 경우, 여러 Retriever를 두고 LLM이 선택해서 쓸 수 있게 해줄 수 있다.
  • 논문에 사용하기 좋을 듯 - '장르' 등 특정 키워드 등 메타데이터 중심의 질문에 사용

0개의 댓글