AI

RAG 품질을 바꾸는 검색 알고리즘 (2026)

Clyde 2026. 2. 5. 18:54

RAG 품질을 바꾸는 검색 알고리즘 (2026)

"임베딩만 바꿨는데 답변이 달라졌다"는 경험이 있으셨다면, 검색 알고리즘을 한 번에 정리해 둘 필요가 있습니다.

1. 왜 지금 알고리즘을 점검해야 하나요?

2025~2026년 사이 Weaviate, Pinecone, Milvus, LanceDB가 하이브리드 검색을 기본 기능으로 채택했고, OpenAI Responses API·Anthropic Workflows도 검색 파이프라인을 명시적으로 받도록 업데이트했습니다. 즉, "벡터 DB + LLM" 조합만으로는 경쟁력이 부족해졌고, Sparse + Dense + Re-Rank + Fusion을 유연하게 조합해야 레이턴시·정확도·비용이 균형을 이룹니다.

2. 희소 검색(Sparse Retrieval) 핵심 알고리즘

  • BM25/ BM25L: 전통적인 단어 빈도(TF)와 역문서 빈도(IDF)를 이용합니다. BM25L은 긴 문서에서 과도하게 점수가 떨어지는 문제를 완화합니다. 최신 Elastic 8.x와 OpenSearch 2.x가 기본 제공합니다.
  • Dirichlet LM: 언어 모델 관점의 확률적 랭킹. 긴 문서가 많은 정책/법령 RAG에서 안정적입니다.
  • SPLADE-v3 (Sparse Lexical Representations): Transformer가 단어마다 가중치를 예측해 희소 벡터를 만듭니다. BM25 수준의 해석 가능성과 딥러닝 표현력을 동시에 얻을 수 있어 2025년 이후 하이브리드 검색에서 자주 쓰입니다.
  • Document Expansion (DocT5Query): Dense 모델을 쓰지 않고도 질문 표현을 추가해 BM25 성능을 끌어올립니다.

3. 밀도 검색(Dense Retrieval) & ANN 인덱스

  • BERT 기반 DPR: Dense Passage Retrieval. Q/K 인코더를 분리하는 쌍둥이 네트워크. 빠르게 도입 가능하지만 최신 범용 모델보다 성능이 낮습니다.
  • Contriever / GTE / jina-embeddings-v3: 2025년 이후 멀티 도메인에서 가장 널리 쓰이는 공개 모델입니다. 한국어/다국어 지원도 강화되었습니다.
  • ColBERTv2 + Late Interaction: 쿼리/문서 토큰 간 점수를 세밀하게 계산해 Factoid QA, 코드 RAG에서 많이 쓰입니다.
  • ANN 인덱스: HNSW(Hierarchical Navigable Small World), IVF(Inverted File), PQ(Product Quantization), ScaNN 등을 상황에 맞게 선택합니다.
    • 짧은 지식 베이스: HNSW + 압축 옵션 없이 운영.
    • 거대한 로그/문서: IVF-PQ 조합으로 메모리를 줄이고, ef_search/nprobe로 정확도 조절.

4. 하이브리드 검색과 융합(Fusion)

  • Weighted Fusion: 스파스 점수와 덴스 점수를 정규화 후 가중합. Weaviate Hybrid Search, Pinecone PARSE가 제공.
  • Reciprocal Rank Fusion(RRF): 서로 다른 검색기(예: BM25, Contriever) 순위를 1/(k + rank)로 합산. RRF는 튜닝이 간단하면서도 안정적인 상위 k 결과를 제공합니다.
  • Graph RAG: Neo4j, Memgraph 기반 지식 그래프에서 관계를 따라가고, 랭킹은 PageRank/ Personalized PageRank를 사용합니다. Microsoft GraphRAG 레퍼런스가 대표적입니다.
  • Router 기반 선택: 질문 유형을 분류해 "숫자 질의 → BM25", "설명형 → Dense" 식으로 라우팅하는 Multi-Retriever 패턴이 2026년 기준 포럼과 오픈소스(예: LlamaIndex RouterQueryEngine)에 기본 탑재되었습니다.

5. 리랭커(Re-Ranker)와 검증

  • Cross-Encoder Re-Ranker: Cohere Rerank 3, OpenAI text-embedding-3-large re-rank 모드, Nomic Rerank 등. 하위 50개 후보를 받아 문장쌍으로 점수를 다시 계산합니다.
  • Self-Rerank (LLM-as-a-Judge): LLM이 스스로 근거 문장을 평가해 상위 N개를 선택합니다. 비용은 높지만 법무/컴플라이언스에서 사용됩니다.
  • Diversification (MMR, IA-Select): 유사한 문서만 뽑히는 것을 막기 위해 최대한 다양한 정보를 수집하는 알고리즘입니다.

6. 최신 스택 조합 예시 (2026 Q1 현업에서 본 패턴)

  1. FAQ + 실시간 공지
    • Sparse: BM25L (OpenSearch)
    • Dense: jina-embeddings-v3-small (ANN: HNSW)
    • Fusion: Weighted sum (0.6 dense / 0.4 sparse)
    • Rerank: Cohere Rerank 3
  2. 코드/정책 RAG
    • Sparse: SPLADE-v3
    • Dense: ColBERTv2
    • Fusion: RRF (k=60)
    • Rerank: Self-Consistency + ReAct 기반 LLM 평가
  3. 멀티모달 리포트
    • Sparse: DocT5Query 확장 텍스트
    • Dense: CLIP + SigLIP for 이미지, text-embedding-3-large for 텍스트
    • Fusion: Router (질문 타입 분류)

7. 도입 체크리스트

  1. 데이터 스키마 정의: 문서 길이, 업데이트 빈도, 도메인 언어를 기준으로 Sparse/Dense 비율을 결정합니다.
  2. 오프라인 평가: ragas, mteb 벤치마크, in-house 골든 셋으로 Recall@k, MRR을 측정합니다.
  3. 온라인 실험: Langfuse, Arize에 검색/생성 로그를 모두 보내고, 사용자 피드백 기반으로 RRF 가중치나 ANN 파라미터를 조정합니다.
  4. 비용 추적: Dense 임베딩 생성 비용, 벡터 DB 저장 비용, Re-Rank API 호출 비용을 각각 산출해 FinOps 대시보드에 올립니다.
  5. 모니터링: import-linter로 검색 코드 의존을 검사하고, Prometheus/Grafana로 검색 지연, 실패율, ANN 재빌드 시간을 추적합니다.

RAG 성능은 결국 "검색" 품질에 좌우됩니다. 2026년 현재는 스파스/덴스/퓨전/리랭커를 모듈처럼 조합해, 질문별로 최적 경로를 고르는 팀이 가장 빠르게 성과를 내고 있습니다. 알고리즘을 도구처럼 이해하고, 데이터·사용자 특성에 맞게 붙였다 떼는 습관이 LLM 제품의 승패를 가릅니다.