DM Log

[AI 개념 및 이해 #5] RAG: 검색과 생성을 결합하는 기술 본문

개발공부/AI

[AI 개념 및 이해 #5] RAG: 검색과 생성을 결합하는 기술

Dev. Dong 2025. 9. 7. 17:21

GPT의 한계 보완하는 방법

GPT 같은 LLM은 놀라운 언어 능력을 가지고 있음, 하지만 치명적인 한계 존재

  • 최신 정보에 대한 업데이트 (학습 데이터 시점 제한)
  • 문서 전체를 한 번에 처리가 어려움 (컨텍스트 윈도우 제한)
  • 잘못된 정보 (환각, hallucinataion)를 생성하기도 함

👉 한계를 극복하기 위해 등장한 방식이 검색 증강 생성 (RAG, Retrieval-Augmented Generation)


RAG란?

[RAG]

Retrieval(검색) + Generation(생성)

  1. 질문을 임베딩으로 변환
  2. 벡터 DB에서 관련 문서 검색
  3. 검색 문서를 프롬프트에 삽입
  4. LLM이 문서 기반 답변 생성

RAG는 외부 지식 검색 결과를 LLM 입력에 주입하여 신뢰성 있는 답변을 생성하는 구조

[기본 구조]

사용자 질문 → [임베딩 변환] → [벡터 DB 검색] → 관련 문서
관련 문서 + 질문 → [LLM 입력] → 최종 답변

  • 질문(Query): 사용자가 입력한 문장
  • Retriever: 질문과 유사한 문서 조각 검색
  • LLM: 검색 문서를 근거로 답변 생성

[RAG 장점]

1. 최신성 확보

  • 모델 학습 시점 이후 데이터 반영
  • 예: 사내 문서, 최신 논문, 뉴스 기사 검색

2. 환각 줄이기

  • 모델이 지어내는 대신, 실제 문서 기반 답변 제공

3. 도메인 특화 기능

  • 특정 기업 내부 자료, 특정 연구 분야 지식 등 제한된 데이터만 답변

[RAG 한계]

1. 검색 품질에 따라 답변 좌우

  • 임베딩 모델 / 테그트 분할 전략 중요

2. 긴 문서 컨텍스트 제한

  • 요약, Chunking 기법 필요

3.멀티 모달(이미지/표/코드 등) 처리 어려움

  • 추가 연구 필요

개선 방안:

  • 하이브리드 검색 (키워드 + 벡터)
  • Re-ranker 모델 적용
  • 요약 체인 결합

[활용 사례]

  • 사내 문서 Q&A 시스템: 규정집, 매뉴얼, 사내 위키 기반 질문응답
  • 연구 논문 요약 / 검색: 논문 문단 검색 후 요약 답변
  • 헬프데스크 챗봇: FAQ 문서 검색 후 답변
  • 법률 / 금융 데이터 질의: 최신 법률 문서, 금융 보고서 기반 답변

LanChain + RAG 예시

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 1. 임베딩 모델과 LLM 초기화
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
llm = ChatOpenAI(model="gpt-4o")

# 2. 문서 벡터스토어 생성 (예시: Chroma)
texts = ["사과는 과일이다.", "자동차는 탈것이다.", "바나나는 노란색 과일이다."]
vectorstore = Chroma.from_texts(texts, embeddings)

# 3. RetrievalQA 체인 생성
qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever()
)

# 4. 질문 실행
result = qa.run("노란 과일은 무엇인가요?")
print(result)

 

출력 예시:

바나나는 노란색 과일입니다.

(부록) 용어 정리

  • RAG: 검색 증강 생성 (검색 + 생성 결합)
  • Retriever: 관련 문서를 찾아주는 모듈
  • VectorStore: 임베딩 저장/검색 DB
  • 환각(Hallucination): 실제 근거 없이 잘못된 답변 생성