가장 기본적인 "찾고 답하기" 방식이에요. 세 단계로 이루어집니다: 자료를 미리 정리해두고, 질문이 오면 관련 자료를 찾고, 찾은 자료를 보고 답변합니다. 마치 도서관에서 책을 분류해서 꽂아두고, 누가 질문하면 관련 책을 꺼내서 읽어주는 것과 비슷해요.
이 방식은 단순해서 빠르게 만들 수 있다는 장점이 있습니다. 예를 들어 사내 자주 묻는 질문(FAQ) 답변 시스템을 만들 때 딱 좋아요. "연차 신청 어떻게 해요?"라고 물으면 HR 문서에서 관련 내용을 찾아서 알려주는 식이죠.
다만 한계도 있습니다. 질문이 애매하면 엉뚱한 자료를 가져올 수 있어요. "사과"라고 검색하면 과일 사과와 사과문 중 뭘 찾아야 할지 헷갈리는 것처럼요.
노션(Notion)의 AI 검색이나 슬랙(Slack)의 AI 답변 기능이 초기에 이런 기본 방식으로 시작했어요. 구글 드라이브에서 문서를 검색해 요약해주는 간단한 사내 도구들도 대부분 이 방식을 씁니다. 쉽고 빠르게 구축할 수 있어서 처음 AI 검색 시스템을 도입하는 회사들이 가장 먼저 시도하는 방법입니다.
📚 선수학습: 이 내용을 이해하려면 RAG (Retrieval-Augmented Generation)를 먼저 읽으면 좋습니다.
Naive RAG는 RAG 패러다임의 가장 기본적인 구현 형태로, "Retrieve → Read" 패턴을 따른다. 질의가 들어오면 벡터 검색으로 관련 문서를 가져오고, 이를 그대로 LLM 프롬프트에 삽입하여 답변을 생성한다. 추가적인 전처리, 후처리, 반복 루프가 없는 단일 패스(single-pass) 구조다.
사용자 질의 ──▶ 임베딩 ──▶ 벡터DB 검색 ──▶ Top-k 문서 ──▶ LLM 생성 ──▶ 답변
(단일 검색) (단일 생성)
Naive RAG의 생성 확률은 표준 RAG 공식을 단순화한 형태로 볼 수 있다. 실제 구현에서는 주변화 대신 Top-k 근사를 사용한다:
여기서 는 코사인 유사도 기준 상위 개 문서다. 즉, 검색 결과를 하나의 컨텍스트로 **연결(concatenate)**하여 생성기에 한 번만 전달한다.
Naive RAG는 구현이 간단하지만, 여러 구조적 한계가 존재한다:
검색 단계의 문제:
생성 단계의 문제:
벤치마크 기준으로 Naive RAG는 NaturalQuestions에서 EM(Exact Match) 44.5, TriviaQA에서 EM 50.8 수준을 보여준다. 이는 순수 LLM보다 높지만, Advanced RAG 기법 적용 시 5~15% 추가 향상이 가능하다.
장점:
한계:
Naive RAG는 PoC(개념 증명) 단계나 단순 QA 용도로 적합하다. 다음 체크리스트를 활용하면 실무 품질을 확보할 수 있다:
의미적 간극(semantic gap)이란 사용자가 사용하는 표현과 문서에 쓰인 표현이 달라 벡터 유사도가 낮아지는 현상이다. ↩
Corrective RAG (CRAG)