제목

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인공지능, 데이터 분석

대상자

AI/LLM 개발자, 데이터 엔지니어, RAG 시스템 설계자

난이도: 중급~고급 (LangChain, BM25Retriever 사용 경험 필요)

핵심 요약

  • 불필요한 데이터 제거: 중복 문서 제거(langchain.document_loaders), 메타데이터 필터링(doc.metadata["doc_type"] == "Support")
  • 하이브리드 검색 최적화:
  • BM25Retriever + VectorRetriever 조합 (예: EnsembleRetriever)
  • 가중치 설정: weights=[0.6, 0.4]
  • 정확도 향상:
  • 키워드 강조 (예: "password" 가중치 상승)
  • 재정렬 기능(Cohere/Cross-encoder 활용)

섹션별 세부 요약

1. 문제 정의: 노이즈로 인한 검색 실패

  • 사용자 질문 "How do I reset my password?"에 비관련 문서(2018 개인정보 보호정책, 유머 이미지, CEO 점심 주문) 검색
  • 결과: LLM이 노이즈 필터링에 더 많은 리소스 소모

2. 노이즈 원인 분석

  • Bad Chunking: "Reset your password" 키워드가 3개 문서에 분할
  • Embedding Blind Spots: "Pwd reset"과 "Password reset"의 의미 불일치
  • Junk Data: 오래된 초안, 중복 파일, GIF 등 품질 낮은 데이터 포함

3. 해결 방안

  • 데이터 정제:
  • 중복 제거: langchain.document_loaders 사용
  • 메타데이터 기반 필터링: doc.metadata["year"] >= 2022
  • 품질 낮은 텍스트 제거 (예: "Click here to download" 문구)
  • 하이브리드 검색:
  • BM25Retriever (키워드 정확 매칭) + VectorRetriever (의미 기반 검색) 조합
  • 예: EnsembleRetriever(retrievers=[vector_retriever, bm25_retriever], weights=[0.6, 0.4])
  • 정확도 강화:
  • 키워드 가중치 조정 (예: HR 문서 내 "password" 강조)
  • 결과 재정렬: Cohere/Cross-encoder 활용

4. 성과 사례

  • 고객 지원: 오류 답변 신고율 50% 감소 (Zendesk)
  • 법률 기술: "저작권법" 쿼리 정확도 62% → 89% 향상
  • 성능 개선: 하이브리드 검색으로 정확도 35% 상승 (Microsoft Research)

5. 추가 팁

  • 자동 정리 모델: rank_bm25 설치 (pip install rank_bm25)
  • 동적 가중치 조정: 쿼리별 dense/sparse 비율 자동 조정
  • 실패 모니터링: 상위 결과의 신뢰도 점수 < 0.7인 쿼리 로그 기록

결론

  • 핵심 팁: 하이브리드 검색(BM25 + Vector) + 메타데이터 필터링 + 키워드 강조로 검색 정확도 향상
  • 예시 코드:

```python

from langchain.retrievers import BM25Retriever, EnsembleRetriever

hybrid_retriever = EnsembleRetriever(retrievers=[vector_retriever, bm25_retriever], weights=[0.6, 0.4])

```

  • 결론: 노이즈 제거 → 사용자 만족도 향상 + LLM 호출 비용 절감