리트리버(Retriever) 개념 정리 요약

ILJUN YUN·2026년 2월 1일

RAG

목록 보기
1/1

RAG(Retrieval Augmented Generation)에서 리트리버(Retriever) 는
질문에 맞는 문서를 찾아주는 검색기(Search Engine) 역할을 합니다.


1. 리트리버 기본 개념

동작 흐름

사용자 질문 → Retriever → 관련 문서 → LLM → 답변 생성

핵심 역할

  • 질문을 임베딩(벡터)으로 변환
  • 벡터 스토어(FAISS, Chroma 등)에서 유사 문서 검색
  • 검색 결과를 LLM에 전달

2. 리트리버의 유형

희소 리트리버 (Sparse)
: 단어 기반, TF-IDF, BM25, 빠르고 직관적, 동의어 인식 약함

밀집 리트리버 (Dense)
: 의미 기반, DPR, SBERT, OpenAI Embedding, 의미 유사 문장 검색 가능

혼합형 (Hybrid)
: 두 방식을 결합, EnsembleRetriever, 키워드 + 의미 결합 검색

3.LangChain 리트리버 설정

retriever = vectorstore.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 5, "lambda_mult": 0.5}
)

search_type: 검색 전략 (similarity, mmr 등)
search_kwargs: 검색 세부 설정 (k, threshold, 다양성 등)
ConfigurableField: invoke 실행 시점에 동적으로 검색 전략 변경 가능

4. 문서 압축기 (Document Compressor)

검색된 문서를 요약하거나 필터링하여
LLM이 처리하기 쉽게 만드는 중간 필터입니다.

LLM 요약형 (LLMChainExtractor)
: 질문 중심으로 요약

점수 기반 필터형 (ScoreThresholdDocumentCompressor)
: 유사도 기준 문서 필터링

길이 제한형 (TokenClippingCompressor)
: 토큰 수 초과 문서 자르기

혼합형 (DocumentCompressorPipeline)
: 여러 압축기 조합

장점: 토큰 절감, 품질 향상
주의: 과도한 요약은 정보 손실 위험

5. 앙상블 리트리버 (Ensemble Retriever)

여러 리트리버를 조합해 각자의 장점을 살리는 방식입니다.
예: BM25(희소) + FAISS(밀집)

from langchain.retrievers import EnsembleRetriever

ensemble = EnsembleRetriever(
    retrievers=[bm25_retriever, faiss_retriever],
    weights=[0.4, 0.6]
)

결과는 정규화 후 가중 평균으로 결합
장점: 정확도 향상, 다양성 확보
단점: 속도와 비용 증가

6. 긴 문맥 재정렬 (Long Context Reordering)

검색된 문서들을 LLM이 이해하기 좋은 순서로 재배치합니다.
문맥, 시간, 중요도 기반으로 순서를 조정합니다.

유사도 재랭킹
: Cross-Encoder 등으로 점수 재계산 (ColBERT, MiniLM)

질문 중심 재배열
: 쿼리와 문서 연관성 재평가 (OpenAI, ReRank API)

LLM 기반 재정렬
: LLM이 직접 읽기 순서 판단 (LongContextReorderer)

LangChain에서는 transform_documents() 대신
compress_documents() 방식으로 통합되었습니다.

7. 부모 문서 리트리버 (Parent Document Retriever)

검색은 청크 단위로, 반환은 부모 문서 단위로 수행합니다.

구조

부모 문서 → Chunk 분할 → VectorStore 저장
검색 → 관련 Chunk 찾기 → 부모 문서 전체 반환

장점: 문맥 유지, 세부정보 보존
단점: 메모리 사용량 증가, 토큰 비용 증가

8. 다중 쿼리 리트리버 (Multi-Query Retriever)

사용자 질문을 여러 의미적 쿼리로 확장해
검색 범위를 넓히는 방식입니다.

예시:
“Kafka offset 관리 방법?”
→ “Kafka consumer commit”, “offset 저장 위치”, “auto.commit 설정” 등으로 변환

장점: 표현 다양성 확보, Recall 향상
단점: LLM 호출 비용 증가

9. 다중 벡터 스토어 리트리버 (Multi-Vector Retriever)

하나의 문서를 여러 임베딩(원문, 요약, 제목 등)으로 저장하고
다양한 관점에서 검색 결과를 병합합니다.

작은 청크 방식
: 문서를 작은 단위로 임베딩

요약 임베딩 방식
: 문서의 요약을 임베딩

가설 쿼리(HyDE)
: 질문의 가상 답변을 임베딩 후 검색

장점: 검색 정확도 향상
단점: 리소스 사용량 증가


결론

Sparse / Dense
기본 검색
속도 vs 의미

Hybrid / Ensemble
품질 향상
키워드 + 의미 결합

Parent / Multi-Query
문맥 강화
더 풍부한 정보

Multi-Vector / Compressor
효율화 중복 제거 · 요약

Reorderer
논리적 흐름 개선
LLM 최적화

요약

리트리버는 RAG 시스템에서 “검색의 품질”을 결정하는 핵심입니다.
하나의 리트리버로는 충분하지 않으며,
데이터 특성에 따라 여러 리트리버를 조합·압축·재정렬하는 것이
고품질 검색형 AI를 만드는 핵심 전략입니다.

profile
한정된 자원으로 더 많은 가치를 제공하려고 노력하는 백엔드 엔지니어입니다.

0개의 댓글