💡 RAG란?
RAG (Retrieval-Augmented Generation) =
👉 “검색 기반 생성형 AI” 또는 “정보 보강 생성”
✅ LLM이 기억 못하는 내용을 검색 시스템과 연동하여
✅ 실시간으로 찾아보고,
✅ 그걸 바탕으로 정확한 답변을 생성하는 방식입니다.
📊 전통적인 LLM의 한계
문제점설명
| ❌ 최신 정보 부족 | 학습 시점 이후의 정보는 모름 |
| ❌ 기업 데이터 없음 | 내부 문서, DB, FAQ 접근 불가 |
| ❌ 헛소리 위험 | “모르는 건 그럴듯하게 지어냄” (Hallucination) |
이걸 해결하는 게 RAG!
🔧 RAG 구조 한눈에 보기
[사용자 질문]
↓
[Retriever] 🔍 내 문서/DB/웹 등에서 관련 정보 검색
↓
[Generator (LLM)] 💬 검색된 문서를 바탕으로 정답 생성
↓
[답변 출력]
📦 사용법 요약 (LangChain 기준)
1. 📁 데이터 준비
PDF, txt, csv, 벡터DB 등.
from langchain.document_loaders import TextLoader
docs = TextLoader("my_file.txt").load()
2. 📐 문서 쪼개기
from langchain.text_splitter import CharacterTextSplitter
splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
3. 🧠 벡터 DB에 임베딩
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
db = FAISS.from_documents(chunks, OpenAIEmbeddings())
4. 🎣 질문 → 관련 문서 검색 → LLM에 넣기
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
retriever=db.as_retriever(),
return_source_documents=True
)
result = qa("우리 회사 반품 정책은 뭐야?")
print(result['result'])
🧠 핵심 요점 요약
구성 요소설명
| Retriever | 문서, DB 등에서 관련 내용 검색 |
| LLM (Generator) | 검색된 문서를 기반으로 답 생성 |
| 임베딩/벡터DB | 검색을 위해 문서를 벡터화해 저장 |
🌍 RAG 응용 분야
분야활용 예
| 💼 기업 | 사내 문서 기반 지식봇, 고객 FAQ |
| 🧑⚖️ 법률 | 판례/법령 기반 Q&A 시스템 |
| 🧪 의료 | 의학 논문 기반 진단 보조 |
| 🧾 세무/회계 | 최신 규정/회계 지침 기반 질의응답 |
| 📚 교육 | 교재 기반 학습 도우미 |
| 🧑💻 개발자 도구 | 내부 기술문서 + 코드 리딩 챗봇 |
| 📰 언론/뉴스 | 최신 기사 기반 Q&A |
🔮 전망
RAG는 앞으로도 계속 중요해집니다. 이유는:
- LLM은 사실을 모름 (단지 확률 기반 생성)
- 현실 정보는 검색 + 구조화 + 연결이 필요함
- RAG는 이를 동적으로 처리할 수 있는 구조
요약: LLM의 기억력을 현실의 DB로 보완하는 구조 = RAG
'생성형AI프로그래밍' 카테고리의 다른 글
| AI 에이전트란 ? (1) | 2025.04.19 |
|---|---|
| 파인튜닝 개념 (0) | 2025.04.19 |
| VectorDB 와 청크(Chunk) 에 대하여 (0) | 2025.04.19 |
| OpenAI API 연동 (2) | 2025.04.19 |
| 생성형AI 개발자는 무얼하는 사람인가요 (0) | 2025.04.16 |