PHpullh

AI 지식 · 심층 가이드

AI 지식 RAG & 검색 완전 정리

청킹과 하이브리드 검색, 재순위, RAGAS 평가까지 RAG 파이프라인의 각 단계에서 검색 품질이 어디서 무너지는지 찾아 고치는 방법을 다룹니다.

주제 10개 · 예제 코드 포함 · 최종 수정 2026-08-30 · 작성 pullh 편집팀

RAG가 기대만큼 안 나올 때 원인은 대개 LLM이 아니라 검색 쪽에 있습니다. 검색이 엉뚱한 문단을 물어 오면 그 뒤 단계에서 아무리 좋은 모델을 써도 답은 그 문단의 범위를 벗어나지 못합니다. 그런데 파이프라인이 문서 적재, 분할, 임베딩, 검색, 재순위, 생성으로 길게 이어져 있어서 어느 칸에서 망가졌는지 눈으로 보이지 않습니다. RAG를 잘 다룬다는 말은 사실상 이 단계별로 중간 산출물을 꺼내 확인하는 습관이 있다는 뜻입니다.

구성은 파이프라인 순서를 그대로 따릅니다. RAG(검색 증강 생성) 기초 아키텍처로 전체 흐름을 잡은 뒤 청킹(Chunking) 전략에서 문서를 어떤 단위로 자를지 정하는데, 이 결정이 뒤의 모든 단계 품질 상한을 정합니다. 하이브리드 검색 — 벡터 + 키워드는 임베딩이 약한 고유명사와 숫자 매칭을 BM25로 메우고, Re-ranking — 검색 품질 향상은 넓게 건져 온 후보를 좁혀 컨텍스트를 아낍니다. 개선이 실제로 개선인지 확인하려면 RAG 평가 지표 — RAGAS를 먼저 붙여 두는 편이 순서상 유리합니다.

청킹에서 자주 놓치는 지점은 표와 코드 블록입니다. 고정 토큰 길이로 자르면 표가 머리글과 본문으로 쪼개져 두 조각 모두 의미를 잃고, 검색에 걸려도 모델이 열 이름을 모르는 상태로 답을 지어냅니다. 헤더 경로를 각 청크 앞에 붙여 두면 이 문제가 상당히 줄어듭니다. 또 하나, 임베딩 모델을 교체하면 벡터 공간이 달라지므로 기존 인덱스는 전량 재생성해야 합니다. 같은 컬렉션에 옛 벡터와 새 벡터가 섞이면 오류 없이 조용히 검색 품질만 떨어지기 때문에, 인덱스에 모델 이름과 버전을 메타데이터로 남겨 두는 편이 안전합니다.

01RAG(검색 증강 생성) 기초 아키텍처

외부 지식을 검색해 LLM에게 제공하는 패턴. ①문서 → 청킹 → 임베딩 → 벡터 DB 저장 ②질문 임베딩 → 유사 문서 검색 ③검색 결과 + 질문 → LLM → 응답. 최신 정보, 도메인 특화, 검증 가능성이 장점입니다.

02청킹(Chunking) 전략

문서를 검색 가능한 크기로 자르는 방법. ①고정 크기(500~1000 토큰, 20% 오버랩) ②문장/단락 기준 ③재귀적 분할(헤더→섹션→단락) ④시맨틱 청킹(의미 변화 지점). 문서 유형에 따라 전략이 다릅니다.

03벡터 DB 선택과 활용

Pinecone: 관리형, 프로덕션 최적. Weaviate: 오픈소스, 하이브리드 검색. Qdrant: Rust 기반, 고성능. Chroma: 로컬 개발용. pgvector: PostgreSQL 확장, 기존 DB 활용. 소규모는 FAISS로도 충분합니다.

04하이브리드 검색 — 벡터 + 키워드

순수 벡터 검색의 한계: 정확한 키워드나 숫자 매칭에 약함. 하이브리드: BM25(키워드) + 벡터 검색 결합. RRF(Reciprocal Rank Fusion)로 점수 통합. 대부분의 실전 RAG는 하이브리드로 10~20% 성능 향상을 봅니다.

05Re-ranking — 검색 품질 향상

1차 검색(속도 우선, Top-K=50) → 2차 재순위(품질 우선, Top-K=5). Cross-encoder 재순위 모델(Cohere, BGE)이 bi-encoder보다 정확. Sentence-transformers/cross-encoder 라이브러리로 구현. 지연이 50~100ms 증가합니다.

06Query Expansion & HyDE

Query Expansion: 검색어를 동의어/관련어로 확장. HyDE(Hypothetical Document Embedding): LLM으로 가상의 답변을 생성하고 이 답변으로 검색. 질문과 문서의 의미 공간 차이를 줄여 검색 품질을 향상시킵니다.

07Contextual Compression & 문서 필터링

검색된 문서에서 질문과 관련 없는 부분을 LLM으로 압축. LLMChainExtractor, EmbeddingsFilter 활용. 토큰 절약과 응답 품질 향상을 동시에 달성. 긴 문서에서 핵심만 추출해 컨텍스트 윈도우를 효율적으로 사용합니다.

08GraphRAG — 지식 그래프 기반 RAG

일반 RAG의 한계: 분산된 문서 간 관계 파악 어려움. GraphRAG(Microsoft): 문서에서 엔티티와 관계를 추출해 그래프 구성 → 그래프 탐색으로 연결된 컨텍스트 제공. 복잡한 다중 홉 질문에 효과적입니다.

09RAG 평가 지표 — RAGAS

RAGAS 프레임워크의 4가지 지표: ①Faithfulness(충실도): 답변이 컨텍스트에 근거하는가 ②Answer Relevancy(관련성): 질문에 답하는가 ③Context Precision: 검색된 컨텍스트가 관련 있는가 ④Context Recall: 필요한 정보를 다 찾았는가.

10Semantic Caching — RAG 비용 최적화

유사한 질문에 대해 캐시된 답변을 재사용. 코사인 유사도 > 0.95이면 캐시 히트. GPTCache 라이브러리 활용. 반복적인 질문이 많은 고객 지원 챗봇에서 API 비용 40~60% 절감. 캐시 TTL과 무효화 전략도 필요합니다.

정리하며

  • 답이 이상하면 생성 프롬프트보다 검색된 청크를 먼저 눈으로 확인합니다
  • 청크에 문서 제목과 헤더 경로를 붙이면 조각난 표와 목록의 맥락 손실이 줄어듭니다
  • 벡터 단독보다 BM25 병행이 고유명사·품번·숫자 질의에서 실패를 크게 줄입니다
  • 임베딩 모델을 바꾸면 인덱스를 전량 재생성하고 메타데이터에 모델 버전을 남깁니다

더 깊이 들어가고 싶다면 AI 지식 학습 라이브러리에서 다른 주제 가이드를 이어서 보거나, 언어 비교에서 같은 개념이 다른 언어에서 어떻게 표현되는지 확인해 보세요.