티스토리 뷰

**RAG(Retrieval-Augmented Generation, 검색 증강 생성)**은 **언어 모델(예: GPT)**이 더 정확하고 풍부한 답변을 하도록 돕기 위해 외부 지식(문서, DB 등)을 검색해서 답변에 포함하는 기술입니다.

✅ RAG의 핵심 개념

전통적인 언어 모델은 학습 시점 이후의 정보를 알지 못합니다.
RAG는 이 문제를 해결하기 위해, 모델이 질문을 받을 때 외부 지식 저장소에서 관련 문서를 검색하고, 그 문서를 참고하여 답을 생성하게 합니다.

즉, **검색(Retrieval) + 생성(Generation)**을 결합한 방식입니다.

✅ RAG 작동 흐름 요약

  1. Query 입력
    • 사용자가 질문을 입력합니다.
  2. 문서 검색 (Retrieval)
    • 임베딩(embedding)된 문서 벡터와 질문 벡터의 유사도를 기반으로 관련 문서를 검색합니다.
    • 벡터 DB 예: FAISS, Pinecone, Weaviate, Milvus
  3. 문서 선택
    • 상위 N개의 관련 문서를 선택합니다.
  4. 생성 모델에 입력
    • 선택된 문서들과 질문을 함께 LLM에 입력합니다.
  5. 답변 생성
    • 언어 모델이 문서를 참고해 최종 답변을 생성합니다.

✅ 왜 RAG가 중요한가?

  • 최신 정보 반영 가능 (LLM이 모르는 정보도 외부 문서에서 찾아 반영)
  • 사실 기반 응답 강화 (hallucination 감소)
  • 경량 모델도 정밀하게 응답 가능
  • 보안/사내 데이터 적용 가능 (사내 문서를 직접 검색)

✅ 구성 요소

  • 질문 인코딩기: 질문을 벡터로 변환
  • 문서 임베딩기: 문서를 벡터로 변환하여 벡터DB에 저장
  • 벡터 검색 엔진: 유사도 기반 검색 수행
  • 생성 모델 (예: GPT, LLaMA): 답변 생성

✅ RAG vs Fine-tuning

항목RAGFine-tuning
목적 외부 지식 참고하여 실시간 답변 모델 내부에 지식 학습
유연성 높음 (문서만 바꾸면 됨) 낮음 (재학습 필요)
비용 낮음 (재학습 불필요) 높음
최신성 반영 가능 불가능 (학습 시점 고정)
 

✅ 활용 예

  • 기업 문서 기반 챗봇 (사내 위키, 매뉴얼 등)
  • 법률 문서 검색 기반 질문응답
  • 논문 요약 및 질의응답
  • 고객 FAQ 챗봇
  • 데이터 분석 리포트 자동 생성

예를 들어, "우리 회사의 연차 규정이 어떻게 되나요?"라는 질문이 들어오면,
RAG는 내부 인사 문서에서 연차 관련 내용을 검색해 그걸 GPT에 넣고 자연스러운 답변을 생성하게 됩니다.

 

LangChain = RAG 구현을 도와주는 도구/프레임워크

 

✅ LangChain

  • 이 과정을 쉽게 구성할 수 있게 해주는 파이썬 기반 프레임워크
  • 검색, 문서 분할, 임베딩, LLM 연결, 프롬프트 구성, 체인 정의 등을 도와줌
  • 즉, "어떻게 구현할까?"에 대한 도구

🧠 LangChain에서 RAG 구현은 이렇게 구성됩니다

  1. Document Loader
    • PDF, TXT, Notion, URL 등 다양한 형식의 문서 불러오기
  2. Text Splitter
    • 문서를 적절한 크기로 분할 (문맥 유지를 위해 겹치기 옵션 있음)
  3. Embedding Model
    • 문단을 벡터로 변환 (예: OpenAI Embeddings, HuggingFace 등)
  4. Vector Store
    • FAISS, Pinecone, Chroma, Weaviate 등에 벡터 저장 및 검색
  5. Retriever
    • 질문 벡터와 유사한 문서 검색
  6. LLM (언어모델) 연결
    • 검색된 문서 + 사용자 질문 → LLM에 입력 → 답변 생성
  7. Chain
    • 위의 흐름을 하나의 “체인”으로 구성 (LangChain에서 제공)

✅ 예: LangChain 기반 RAG 간단 흐름

python
 
 
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
from langchain.document_loaders import TextLoader

# 문서 불러오기
loader = TextLoader("company_policy.txt")
documents = loader.load()

# 임베딩 및 벡터 저장
embedding = OpenAIEmbeddings()
db = FAISS.from_documents(documents, embedding)

# 검색기(retriever) 구성
retriever = db.as_retriever()

# LLM QA 체인 생성 (검색 + 생성)
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(),
    retriever=retriever
)

# 질문 처리
response = qa_chain.run("우리 회사의 연차 규정은 어떻게 되나요?")
print(response)

✅ 결론

항목설명
RAG 검색 → 생성이라는 개념 또는 아키텍처
LangChain RAG를 쉽게 구현할 수 있도록 도와주는 프레임워크 (파이썬 기반)
관계 LangChain은 RAG를 실용적으로 구현하기 위한 도구이자 라이브러리
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 29 30 31
글 보관함