RAG 설명: 검색 후 답변하기 (환각 현상을 줄이는 프롬프트)
요약
RAG(Retrieval-Augmented Generation)는 LLM이 학습하지 못한 최신 또는 사내 문서를 기반으로 답변하게 하는 기술입니다. 질문과 관련된 사실을 검색하여 모델에게 제공하고, 이를 프롬프트에 증강시키는 방식으로 환각 현상을 줄일 수 있습니다.
핵심 포인트
- RAG는 외부 정보를 '읽게' 하여 LLM의 지식 한계를 보완합니다.
- 핵심은 관련 문서를 검색(Retrieve)하고, 이 내용을 프롬프트에 넣어 모델에게 제공(Augment)하는 것입니다.
- pgvector와 같은 벡터 스토어 결합으로 '문서로 채팅하기' 기능을 구현할 수 있습니다.
LLM은 학습 과정에서 본 것만 알고 있습니다. 귀사의 위키, 지난주 뉴스, 또는 방금 업로드한 PDF는 알지 못합니다. 그래도 질문하면 거부하거나 — 더 나쁜 경우 — 자신 있게 지어냅니다.
RAG(Retrieval-Augmented Generation)가 이를 해결하며, 이름보다 훨씬 간단합니다. 이 글은 PromptFromZero 시리즈의 5일차 내용입니다.
RAG 한 문장으로 요약하기
질문 시 관련 사실을 가져와 모델에게 읽게 합니다.
모델에게 기억하도록 요청하는 것이 아닙니다. 읽어볼 페이지를 제공하는 것입니다.
세 가지 단계
1. 검색 (Retrieve)
질문을 임베딩하고, 가장 가까운 문서 조각(vector search)을 찾아 상위 몇 개를 가져옵니다:
const hits = await search(question, { k: 3 }); // 가장 관련성 높은 3개 조각
(검색 부분 자체도 하나의 주제입니다. 임베딩과 vector 데이터베이스가 필요합니다. 저는 TechFromZero Day 45에서 Postgres + pgvector를 사용하여 정확히 이를 구현했습니다.)
2. 증강 (Augment) — 핵심적인 역할을 하는 프롬프트
이 템플릿이 RAG 품질의 80%를 차지합니다:
const prompt = `아래 컨텍스트만을 사용하여 답변하세요.
답변에 해당 내용이 없으면
그게 전부입니다. 검색(Retrieve) → 증강(Augment) → 생성(Generate). 이 프롬프트에 벡터 스토어(pgvector, Pinecone, Chroma 등)를 결합하면 '문서로 채팅하기' 기능을 구현한 것입니다.
📎 인터랙티브 RAG 플레이그라운드를 사용해 보세요. 검색 과정과 프롬프트, 그리고 답변을 확인하세요: [https://dev48v.infy.uk/prompt/day5-rag-basic.html](https://dev48v.infy.uk/prompt/day5-rag-basic.html)
PromptFromZero의 5일차입니다. 초보자도 이해할 수 있도록 매일 하나의 프롬프팅 기법을 설명합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기