리트리버(Retriever) — 검색 품질을 좌우하는 핵심
리트리버(Retriever)
RAG에서 답변 품질을 좌우하는 건 사실 '생성'보다 무엇을 검색해서 가져오는가예요. 리트리버는 어떤 문서 청크를 모델에게 컨텍스트로 줄지 결정하는 구성 요소예요.
다양한 리트리버
- 벡터 검색 리트리버: 임베딩 유사도로 가장 가까운 청크 반환
- BM25/키워드: 어휘 일치 기반
- 하이브리드: 벡터 + 키워드 결합, RRF 등으로 병합
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
docs = retriever.invoke("What is the return policy?")
리트리버가 중요한 이유
k(가져올 청크 수)와 검색 방식에 따라 모델이 보게 되는 정보가 달라져요. 검색이 엉뚱한 문서를 뽑으면 LLM이 아무리 좋아도 답이 흔들려요. 그래서 청크 전략·임베딩·검색 방식을 함께 튜닝해야 해요.
실전 팁
search_kwargs={"k": N}로 컨텍스트 크기를 조절해요.- 점수 필터(threshold)로 관련성 낮은 문서를 걸러요.
- 문서 메타데이터 필터로 범위를 좁혀 정확도를 높여요.