RAG(Retrieval Augmented Generation)에서 리트리버(Retriever) 는
질문에 맞는 문서를 찾아주는 검색기(Search Engine) 역할을 합니다.
동작 흐름
사용자 질문 → Retriever → 관련 문서 → LLM → 답변 생성
핵심 역할
희소 리트리버 (Sparse)
: 단어 기반, TF-IDF, BM25, 빠르고 직관적, 동의어 인식 약함
밀집 리트리버 (Dense)
: 의미 기반, DPR, SBERT, OpenAI Embedding, 의미 유사 문장 검색 가능
혼합형 (Hybrid)
: 두 방식을 결합, EnsembleRetriever, 키워드 + 의미 결합 검색
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 실행 시점에 동적으로 검색 전략 변경 가능
검색된 문서를 요약하거나 필터링하여
LLM이 처리하기 쉽게 만드는 중간 필터입니다.
LLM 요약형 (LLMChainExtractor)
: 질문 중심으로 요약
점수 기반 필터형 (ScoreThresholdDocumentCompressor)
: 유사도 기준 문서 필터링
길이 제한형 (TokenClippingCompressor)
: 토큰 수 초과 문서 자르기
혼합형 (DocumentCompressorPipeline)
: 여러 압축기 조합
장점: 토큰 절감, 품질 향상
주의: 과도한 요약은 정보 손실 위험
여러 리트리버를 조합해 각자의 장점을 살리는 방식입니다.
예: BM25(희소) + FAISS(밀집)
from langchain.retrievers import EnsembleRetriever
ensemble = EnsembleRetriever(
retrievers=[bm25_retriever, faiss_retriever],
weights=[0.4, 0.6]
)
결과는 정규화 후 가중 평균으로 결합
장점: 정확도 향상, 다양성 확보
단점: 속도와 비용 증가
검색된 문서들을 LLM이 이해하기 좋은 순서로 재배치합니다.
문맥, 시간, 중요도 기반으로 순서를 조정합니다.
유사도 재랭킹
: Cross-Encoder 등으로 점수 재계산 (ColBERT, MiniLM)
질문 중심 재배열
: 쿼리와 문서 연관성 재평가 (OpenAI, ReRank API)
LLM 기반 재정렬
: LLM이 직접 읽기 순서 판단 (LongContextReorderer)
LangChain에서는 transform_documents() 대신
compress_documents() 방식으로 통합되었습니다.
검색은 청크 단위로, 반환은 부모 문서 단위로 수행합니다.
구조
부모 문서 → Chunk 분할 → VectorStore 저장
검색 → 관련 Chunk 찾기 → 부모 문서 전체 반환
장점: 문맥 유지, 세부정보 보존
단점: 메모리 사용량 증가, 토큰 비용 증가
사용자 질문을 여러 의미적 쿼리로 확장해
검색 범위를 넓히는 방식입니다.
예시:
“Kafka offset 관리 방법?”
→ “Kafka consumer commit”, “offset 저장 위치”, “auto.commit 설정” 등으로 변환
장점: 표현 다양성 확보, Recall 향상
단점: LLM 호출 비용 증가
하나의 문서를 여러 임베딩(원문, 요약, 제목 등)으로 저장하고
다양한 관점에서 검색 결과를 병합합니다.
작은 청크 방식
: 문서를 작은 단위로 임베딩
요약 임베딩 방식
: 문서의 요약을 임베딩
가설 쿼리(HyDE)
: 질문의 가상 답변을 임베딩 후 검색
장점: 검색 정확도 향상
단점: 리소스 사용량 증가
Sparse / Dense
기본 검색
속도 vs 의미
Hybrid / Ensemble
품질 향상
키워드 + 의미 결합
Parent / Multi-Query
문맥 강화
더 풍부한 정보
Multi-Vector / Compressor
효율화 중복 제거 · 요약
Reorderer
논리적 흐름 개선
LLM 최적화
리트리버는 RAG 시스템에서 “검색의 품질”을 결정하는 핵심입니다.
하나의 리트리버로는 충분하지 않으며,
데이터 특성에 따라 여러 리트리버를 조합·압축·재정렬하는 것이
고품질 검색형 AI를 만드는 핵심 전략입니다.