오픈북 시험으로 이해하는 RAG (검색 기반 AI)
LLM은 똑똑하지만 "내 회사 문서"나 "최신 정보"는 모릅니다. 학습 시점 이후 데이터나 비공개 자료는 아예 본 적이 없으니까요. 이 빈틈을 메우는 게 RAG입니다. 저는 이걸 오픈북 시험에 비유합니다.
오픈북 시험 비유
암기만으로 푸는 시험(그냥 LLM)과 달리, 오픈북 시험은 문제를 받고 관련 페이지를 찾아본 뒤 답을 씁니다. RAG가 정확히 이 구조예요. 질문이 오면 문서 더미에서 관련 부분을 검색해 오고, 그걸 근거로 LLM이 답을 만듭니다.
질문 → [관련 문서 검색] → [문서를 근거로 LLM이 답변]
왜 필요한가
제가 사내 규정 챗봇을 만들 때, 그냥 LLM에 물으면 그럴듯하지만 틀린 답(할루시네이션)을 자신 있게 내놨습니다. RAG로 실제 규정 문서를 근거로 붙였더니 "문서에 이렇게 적혀 있다"는 식으로 답이 확 정확해졌어요.
동작을 코드로 감 잡기
# 개념 흐름 (핵심만)
docs = retriever.invoke("연차 규정") # 관련 문서 검색
context = "\n".join(d.page_content for d in docs)
prompt = f"아래 문서를 근거로 답해줘.\n{context}\n질문: 연차는 며칠?"
answer = llm.invoke(prompt)
실무에서 진짜 중요한 건 '검색 품질'
많은 분이 LLM만 신경 쓰는데, RAG의 성패는 검색 단계에서 갈립니다. 문서를 어떻게 잘게 자를지(청킹), 어떤 임베딩을 쓸지가 답변 품질을 좌우해요. 저는 답이 이상하면 LLM보다 "검색이 엉뚱한 문서를 물어왔나"부터 확인합니다.
마무리
RAG는 "AI에게 커닝페이퍼를 쥐여주는 것"입니다. 최신·비공개 정보를 다루는 서비스라면 거의 필수예요. 검색 품질부터 챙기시길 권합니다.
댓글
댓글 쓰기