RAG(Retrieval-Augmented Generation)는 LLM이 답변 생성 시 외부 지식베이스에서 관련 문서를 검색해 활용하는 기법이다. LLM의 할루시네이션(hallucination)을 줄이고 최신 정보를 제공한다.
동작 원리
사용자 질문: "2025년 최신 AI 동향은?"
1. 질문을 벡터로 변환 (임베딩)
2. 벡터 DB에서 관련 문서 검색
→ [최근 AI 뉴스 1], [AI 트렌드 보고서 2]
3. 검색된 문서 + 질문을 LLM에 입력
4. LLM이 문서를 참조해 답변 생성
python
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
# 임베딩 모델
embeddings = OpenAIEmbeddings()
# 벡터 DB 생성 (문서를 벡터로 저장)
vectordb = Chroma.from_documents(documents, embeddings)
# RAG 체인
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4"),
retriever=vectordb.as_retriever(search_kwargs={"k": 3})
)
result = qa_chain.invoke("AI 최신 동향이 뭐야?")
print(result['result'])
Fine-tuning vs RAG
| 항목 | Fine-tuning | RAG |
|---|
| 지식 업데이트 | 재학습 필요 | 문서 추가만 |
| 비용 | 높음 | 낮음 |
| 정확도 | 특정 도메인 높음 | 최신 정보 강점 |
| 출처 제공 | 없음 | 제공 가능 |
관련 개념
- •LLM — RAG에서 답변 생성하는 모델
- •임베딩 — RAG의 벡터 검색 기반
- •GPT — RAG에서 주로 사용하는 LLM
참고문헌
- •Lewis et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks