
단순히 문서를 DB에 넣고 유사도 검색으로 뽑아오는 Navie RAG(기초적인 RAG)는 실제 서비스에 적용했을 때 "엉뚱한 답변을 하거나" 맥락을 놓치는" 경우가 많아서 한계가 명확하다.
그래서 요즘은 검색 품질을 높이기 위해 Advanced RAG라고 불리는 다양한 최적화 기법들을 사용한다.
1. 전처리 단계(Data Preparation)
: 데이터를 어떻게 쪼개고 저장하느냐가 검색의 첫 단추
■ Recursive Character Splitting : 단순 글자 수 커팅이 아니라, 문맥이 끊기지 않도록 문단, 문장 단위로 유연하게 쪼개는 방식.
■ Hierarchical Indexing(부모 - 자식 청킹) : 검색용으로는 작은 조각(Child)을 쓰고, 실제 LLM에게 넘길 때는 그 조각이 포함된 큰 문맥(Parent)을 전달하는 방식이다. 검색 효율과 이해도를 동시에 잡을 수 있다.
2. 검색 전 단계(Query Optimization)
: 사용자가 질문을 개떡? 같이 해도 찰떡 같이 알아듣게 만드는 과정
■ Query Rewriting : 사용자의 질문을 검색하기 더 좋은 키워드로 재작성한다.
■ Multi-Query Retrieval : 하나의 질문을 3~5개의 비슷한 질문으로 확장해서 검색한다. 이렇게 하면 검색 결과가 풜씬 풍부해진다.
■ HyDE(Hypothetical Document Embeddings) : 질문에 대해 AI가 가상의 답변을 먼저 생성하고, 그 가상 답변과 유사한 문서를 검색한다.
질문과 문서 사이의 거리감을 줄이는 데 효과적이다.
3. 검색 단계(Retrieval Strategy)
: 단순한 벡터 검색(Semantic)의 단점을 보완한다.
■ Hybrid Search : 벡터 검색(의미 위주)과 키워드 검색(BM25, 단어 일치 위주)을 섞는 방식.
고유 명사나 특정 수치를 찾을 때 강력하다.
■ GraphRAG : 최근 가장 핫한 방법이다. 문서 간의 관계를 지식 그래프(Knowledge Graph)로 연결해서, 서로 떨어져 있는 정보들을 연결해서 추론해
야 하는 복잡한 질문에 대응한다.
4. 검색 후 단계(Post-Retrieval / Re-ranking)
: 뽑아온 문서 중 진짜 쓸모 있는 것만 골라낸다. 사실 성능 개선에 가장 즉각적인 효과를 주는 구간이다.
■ Re-ranking : 수백 개의 문서를 검색했다면, '교차 인코더(Cross-Encoder)' 모델을 써서 질문과 가장 관련 있는 순서대로 다시 정렬한다.
■ Context Compression : 검색된 내용 중 질문과 상관없는 노이지를 제거하고 핵심 문장만 요약해서 LLM에게 전달한다(토큰 절약 + 정확도 상승)
5. 핵심 요약 표
| 단계 | 주요 기법 | 목적 |
| 전처리 | Parent Document Retrieval | 검색 성능과 문맥 유지의 균형 |
| 질문 변환 | HyDE, Multi-Query | 질문 의도 구체화 및 검색 범위 확장 |
| 검색 | Hybrid Search, GraphRAG | 정교한 정보 매칭 및 관계 추론 |
| 재정렬 | Cohere/BGE Re-ranker | 검색 결과의 정확도 필터링(필수 권장) |
요즘 트렌드는 단순히 "검색을 잘하는 것"을 넘어, GraphRAG처럼 데이터 간의 연결 고리를 만드는 방향이나, Agentic RAG라고 해서 AI가 스스로 부족한 정보를 판단해 다시 검색하게 만드는 방식으로 진화하고 있다.
'스터디 > RAG' 카테고리의 다른 글
| [코드리뷰] Refactoring 4 (0) | 2026.05.05 |
|---|---|
| [framework] 랭체인은 쉽게되는데 왜 우리는 안됐을까? (0) | 2026.05.03 |
| [Python - Library] 화면 그리기 귀찮다... 나도 Gradio 써본다. (0) | 2026.05.03 |
| [Python - Library] BaseModel이 뭐다냐? (0) | 2026.05.03 |
| [개념짚고가기] FAISS 이 녀석은 왜 나타났나? (0) | 2026.04.23 |