RAG2026-5일11차시 · Retriever 기초 실습5 / 18← 이전목차다음 →MetaContents

11차시. Retriever 기초 실습

2. 검색 방식 세 가지

출처: 원본 PDF 11차시_Retriever기초실습.pdf 5~6쪽 · 쪽 그림 5쪽 6쪽

Retriever는 search_type으로 방식을 고릅니다. 세 가지가 있습니다.

2-1) similarity — 기본형

Python
retriever = store.as_retriever(
    search_kwargs={"k": 3}
)

가장 가까운 K개를 그대로 가져옵니다.
빠르고 단순합니다. 대부분의 경우 이것으로 충분합니다.
단점 — 비슷한 내용이 중복으로 올 수 있습니다.
예: 같은 조항이 여러 페이지에 반복되면 3개가 다 그 조항입니다.

2-2) mmr — 다양성 확보형

Python
retriever = store.as_retriever(
    search_type="mmr",
    search_kwargs={
        "k": 3,              # 최종적으로 가져올 개수
        "fetch_k": 10,       # 후보로 먼저 뽑을 개수
        "lambda_mult": 0.5,  # 관련성(1) ↔ 다양성(0) 조절
    }
)

🍱 도시락 반찬 고르기 비유
"맛있는 반찬 3개 골라줘"
similarity 방식
→ 김치, 배추김치, 총각김치
→ 다 맛있긴 한데... 전부 김치입니다
MMR 방식
→ 김치, 계란말이, 불고기
→ 맛있으면서도 서로 다른 것을 고릅니다
질문이 여러 측면을 물을 때 MMR이 유리합니다.
예: "환불과 교환의 차이는?" → 두 조항을 각각 가져와야 함

2-3) similarity_score_threshold — 기준 미달 차단형

출처: 원본 PDF 6쪽

Python
retriever = store.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={"k": 5, "score_threshold": 0.47}
)

10차시에서 손으로 걸러냈던 작업을 Retriever가 대신해줍니다.
기준 미달이면 결과가 아예 비어서 돌아옵니다.

👉
실무에서 가장 안전한 설정입니다.

← 이전 절11차시 · 1. 왜 Retriever로 감싸서 쓸까?다음 절 →11차시 · 3. Top-K를 몇으로 할까?