| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 케이티 에이블스쿨 6기 java
- 앙상블
- 엘라스틱서치
- kt 에이블스쿨 6기
- 케이티 에이블스쿨 기자단
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨
- kt 에이블스쿨 6기 빅프로젝트
- 알고리즘
- 케이티 에이블스쿨 6기 후기
- kt 에이블스쿨 기자단
- ElasticSearch
- 파이썬
- 백준
- kt 에이블스쿨 6기 ai
- kt 에이블스쿨 6기 미니 프로젝트
- 네트워크
- 오블완
- 에이블 기자단
- 프로그래머스
- 케이티 에이블스쿨 6기 ai
- kt aivle school
- 판다스
- KT AIVLE
- 머신러닝
- 데이터 프레임
- SQLD
- 티스토리챌린지
- 구현
- KT 에이블스쿨
- Today
- Total
미식가의 개발 일기
RAG: LLM의 한계를 넘은 검색하는 인공지능 본문
1️⃣ RAG(Retrieval-Augmented Generation)란?
LLM이 스스로 알지 못하는 정보도 "찾아서" 답변할 수 있게 만들어주는 방식

RAG는 Retrieval(검색)과 Generation(생성)을 결합한 AI 아키텍처이다.
기존의 언어 모델이 모든 정보를 "암기"한 상태에서 응답을 생성하는 방식이었다면, RAG는 외부 지식원을 실시간으로 "검색"하여 그 정보를 바탕으로 응답을 생성한다. 이는 특히 최신 정보 반영이 어려운 LLM의 구조적 한계를 극복하기 위한 접근 방식이다.
2️⃣ RAG의 구성 요소
🔔 1. Retriever (검색기)
사용자의 질문과 관련된 정보를 외부 데이터(문서, 위키피디아, 데이터베이스 등)에서 검색해 벡터화한다.
벡터화란, 텍스트를 수치화된 고차원 공간 상의 임베딩(embedding)으로 변환하는 과정을 의미한다.
이후 검색된 벡터들 중 질문과 가장 관련성이 높은 것들을 선별하게 된다.
<검색 방식 종류>
- Cosine Similarity 기반 Top-K 검색: 유사도가 높은 문서를 상위 K개 선택한다.
- MMR(Maximal Marginal Relevance): 중복 없이 다양하면서도 관련성 높은 결과를 선택한다.
- Hybrid Search (BM25 + Embedding 기반): 전통적인 키워드 기반 검색(BM25)과 의미 기반 검색(임베딩)을 결합하여 검색의 정밀도를 높인다.
🔔 2. Augmentation (증강기)
검색된 정보는 그대로 사용할 수 없기 때문에, 길이 제한이나 문맥 정합성을 고려해 전처리된다.
긴 문서는 청킹(chunking)을 통해 잘게 나누고, 요약 또는 정제 과정을 거쳐 언어 모델이 이해 가능한 문맥으로 가공된다.
🔔 3. Generator (생성기)
최종적으로 언어 모델(예: GPT, LLaMA 등)이 전처리된 정보를 바탕으로 자연어 응답을 생성한다.
이때 생성되는 응답은 기존 LLM의 추론 능력과 검색 정보가 결합된 결과물이다.
3️⃣ RAG의 장점
- 최신 정보 반영 가능
모델이 사전에 학습하지 않은 최신 데이터도 검색을 통해 활용할 수 있다. - 모델 용량 한계 극복
모든 지식을 모델에 넣지 않고도 외부 DB를 통해 유연하게 대응할 수 있다. - 환각(hallucination) 감소
생성 모델이 무작위로 추론하지 않고, 실제 정보에 기반한 응답을 생성하기 때문에 신뢰도가 높다.
4️⃣ RAG의 한계점
- 검색 품질에 따라 생성 품질이 결정
검색기가 적절한 정보를 찾지 못하면 생성 결과도 부정확해진다. - 응답 시간
실시간 검색 및 전처리 과정이 추가되어 일반적인 LLM보다 느릴 수 있다. - 정보가 제한적이면 효과가 떨어짐
내부 DB나 문서가 부실하다면 RAG의 장점이 크게 감소한다.
5️⃣ Chroma vs Neo4j: RAG 시스템의 대표 DB
Chroma
RAG에서 의미 기반 검색(Semantic Search)을 위해 벡터(임베딩) 데이터를 저장하고 검색할 수 있게 해주는 벡터 DB
- 유사도 기반
- 경량 오픈소스 → 빠름
- 서버 필요 X
- LangChain과 직접 연동이 간편
Neo4j
노드(Node)와 간선(Relationship) 구조로 데이터를 표현하고 저장하는 그래프 기반 DB
- 유사도 기반 + 객체 간의 관계 최적화
- 복잡한 연결, 추론, 추천에 강력
- Cypher 언어로 질의하며, LangChain에서도 연동 가능
6️⃣ 실제 적용 예시
- 사내 문서 Q&A 챗봇: 기업 내부의 기술 문서, 가이드라인을 기반으로 답변하는 시스템
- 의료/법률 분야 정보 탐색: 외부 논문, 판례 등을 검색해 법률적 답변을 생성
- 고객센터 자동화: 제품 매뉴얼, FAQ 등을 검색하여 정확한 응답을 제공
'ML, DL' 카테고리의 다른 글
| [논문 리뷰] YOLO(You Only Look Once): Unified, Real-Time Object Detection (1) | 2025.05.11 |
|---|---|
| Claude에 Firecrawl로 크롤링 기능 추가하기 (0) | 2025.05.07 |
| 멀티모달 (0) | 2025.05.07 |
| NLP, Transformer, LLM - 자연어 처리부터 대형 언어 모델까지 (1) | 2025.05.05 |
| MLOps: 머신러닝과 DevOps의 만남 (0) | 2025.04.24 |