🔎 RAG란 무엇인가? 최신 정보를 반영하는 AI 기술
RAG의 개념
RAG(Retrieval-Augmented Generation)는 AI 모델이 사전 학습된 데이터에만 의존하지 않고, 외부 데이터를 실시간으로 검색하고 활용하는 방식이다.
이 방법을 통해 모델은 최신 정보를 반영하고, 보다 신뢰성 높은 응답을 생성할 수 있다.
💡 RAG의 주요 과정
- 🔍 Retrieval (검색) → 사용자의 질문과 관련된 정보를 데이터베이스에서 검색
- 🔗 Augmented (증강) → 검색된 정보를 LLM의 입력에 추가하여 문맥 강화
- ✍ Generation (생성) → AI가 제공된 정보를 바탕으로 응답 생성
🤔 왜 RAG가 필요할까? 기존 AI의 한계를 극복하는 방법
GPT와 같은 기존 AI 모델은 훈련된 데이터까지만 정보를 알고 있으며, 새로운 정보나 실시간 데이터 반영이 어렵다.
이러한 한계를 해결하기 위해 RAG는 외부 데이터베이스(Vector DB)를 활용하여 최신 정보를 검색하고 반영한다.
❌ 기존 GPT 모델의 문제점
- 최신 정보 반영 불가 → 특정 시점 이후의 데이터를 알지 못함
- 잘못된 정보 생성 (Hallucination) → 없는 사실을 만들어낼 가능성
- 근거 부족 → AI의 답변이 어디서 왔는지 알 수 없음
✅ RAG의 장점
- 최신 정보 활용 가능 (문서, 데이터베이스 연동)
- 출처 기반 응답 생성 (검색된 문서를 참고)
- 더 정확한 답변 제공 (외부 데이터 활용)
⚙️ RAG의 동작 방식: 문서 검색부터 응답 생성까지
RAG의 기본 프로세스
📌 RAG는 다음과 같은 5단계를 거쳐 응답을 생성한다.
1️⃣ 사용자의 질문 입력
2️⃣ 질문을 벡터 임베딩(Vector Embedding)으로 변환
3️⃣ 유사한 문서를 벡터 DB(Vector Store)에서 검색
4️⃣ 검색된 문서를 기반으로 LLM이 응답 생성
5️⃣ 최종 답변 제공
이 과정을 통해 AI는 기존 지식 + 검색된 최신 정보를 결합하여 응답을 생성한다.
📖 RAG에서 중요한 핵심 기술들
🔍 정보 검색과 청크(Chunk) 분할
RAG는 사용자의 질문과 관련된 정보를 검색하여 모델에 전달해야 한다.
이를 위해, 긴 문서를 작은 단위(청크, Chunk)로 나누어 저장하는 과정이 필수적이다.
✔ 청크 분할이 중요한 이유
- 검색 성능 향상 → 너무 큰 문서는 검색이 부정확해질 수 있음
- 정보 손실 방지 → 너무 작은 문서는 문맥이 끊어질 수 있음
- 효율적인 검색 가능 → 적절한 크기의 청크가 필요
📌 청크 크기 설정 가이드
- 512 ~ 1024 토큰이 일반적으로 적절
- Chunk Overlap(겹치는 부분)을 설정하여 문맥 유지
📊 텍스트 임베딩 (Text Embedding)과 유사도 검색
검색된 문서와 질문의 연관성을 수학적으로 계산하기 위해 텍스트를 벡터(Vector)로 변환해야 한다.
이 과정이 바로 임베딩(Embedding) 이며, 검색의 정확도를 결정하는 중요한 요소다.
✔ 임베딩의 역할
- 문장을 벡터(숫자의 집합)로 변환하여 수학적으로 비교 가능
- 코사인 유사도(Cosine Similarity), 유클리디안 거리(Euclidean Distance) 등을 사용하여 가장 관련성 높은 문서 찾기
✔ 임베딩 모델 예시
- OpenAI
text-embedding-ada-002
(1536 차원 벡터)
BERT
, SBERT
, E5
등 다양한 임베딩 모델 활용 가능
📌 임베딩을 잘 활용하면?
- 질문과 유사한 문서를 빠르게 검색
- 불필요한 데이터를 줄이고 정확도 향상
📂 벡터 데이터 저장과 검색 성능 최적화
💾 벡터 DB(Vector Store)에 저장하는 이유
RAG에서는 문서를 임베딩한 후 벡터 DB에 저장하여 빠르게 검색할 수 있어야 한다.
벡터 DB를 활용하면 동일한 문서를 여러 번 임베딩하지 않아도 되므로 비용 절감이 가능하다.
✔ 대표적인 벡터 DB 예시
- FAISS → 빠른 검색 속도, 오픈소스
- ChromaDB → 간단한 사용법, 로컬 최적화
- Pinecone → 클라우드 기반 벡터 DB
- Elasticsearch → 키워드 + 벡터 검색 가능
📌 벡터 DB 선택 시 고려할 점
- 데이터 크기와 검색 속도
- 로컬(Local) vs 클라우드(Cloud) 환경
⚡ RAG 성능 최적화: 빠르고 정확한 검색을 위한 방법
✔ 혼합 검색 (하이브리드 검색)
- 키워드 검색(BM25) + 벡터 검색(ANN) 결합
- 빠르고 정확한 검색 가능
✔ HNSW 알고리즘 적용
- FAISS, Elasticsearch 등의 HNSW (Hierarchical Navigable Small World) 알고리즘 사용 시, 검색 속도 대폭 향상
✔ 임베딩 비용 절감
- 같은 문서를 여러 번 임베딩하는 것은 비효율적
- Vector Store에 저장하여 재사용하면 비용 절감
💡 RAG의 실제 활용 사례: 어디에 쓰일까?
✔ 기업 내 지식 검색 (Enterprise Search)
- 사내 문서, 기술 자료 검색
- 고객 지원 FAQ 자동 응답
✔ 최신 뉴스 & 법률 검색
- 뉴스, 법률 문서 등 최신 정보 반영 가능
- 기존의 LLM은 최신 뉴스를 반영할 수 없지만, RAG를 활용하면 가능
✔ 코드 검색 & 개발 도우미
- 개발자 문서, 코드 스니펫 검색
- 질문에 맞는 코드를 추천하는 AI
🚧 RAG의 한계점과 해결 방법
❌ 실시간 검색 속도 문제
- 벡터 검색이 느릴 경우 성능 최적화 필요
num_candidates
값을 조절하여 속도 개선
❌ 정확도 이슈 (노이즈 포함 가능)
- 검색된 문서가 정확하지 않을 경우 LLM이 잘못된 답변을 할 수 있음
- 검색 가중치 조절(BM25 + 벡터 검색 혼합) 필요
✔ 최적의 청크 크기 설정
✔ Elasticsearch + Redis 결합 사용
- 극한의 속도가 필요할 경우 Redis 벡터 검색 활용