[RAG] 심화 개념 정리

난이도: 초중급

태그: RAG,Agent,검색증강

이 문서는 AI 전문가가 뉴비에게 설명하듯 작성된 심화판입니다. 개념을 암기하는 것이 아니라, 실무 의사결정에 연결하는 것을 목표로 합니다.

당시 상황과 역사적 맥락

LLM 환각과 최신성 한계가 실제 서비스에서 큰 리스크로 드러나던 시기였습니다.

모델 구조/구성요소 역할 (초심자용)

역사적 의미와 후속 영향

아주 쉽게 한 줄 요약

모델이 답하기 전에 문서를 먼저 찾아보고 그 근거로 답하는 구조입니다.

즉 RAG는 "모델 파라미터 안에만 지식을 넣는 방식"의 한계를 보완하기 위해, 외부 문서를 검색해서 답변에 주입하는 구조다. 최신 정보, 사내 문서, 도메인 지식을 쓰고 싶을 때 가장 기본이 되는 패턴이다.

진짜 핵심 3문장

RAG를 볼 때 중요한 건 생성 모델이 아니라 검색 단계다. 어떤 문서를 가져오느냐가 사실상 답변 품질을 먼저 결정하기 때문에, retrieval 품질과 grounding을 같이 봐야 한다.

처음 보는 사람용 핵심 용어 5개

그림/자료로 다시 보기

그림 파일은 순차 추가 예정입니다. 우선 아래 도식 설명을 기준으로 읽으세요.

1단. 문제 정의

LM 단독은 최신성·출처성·사실성에서 한계가 있다.

핵심 질문은 "왜 기존 방법으로는 충분하지 않았는가"입니다.

2단. 기존 한계

파라메트릭 메모리는 업데이트 비용이 크고 근거 추적이 어렵다.

면접에서는 한계를 구조/학습/운영 관점으로 나눠 말하면 설득력이 올라갑니다.

3단. 핵심 아이디어

질문→검색→근거 주입→생성 파이프라인으로 grounding을 강화한다.

핵심은 변경점 자체보다, 그 변경점이 병목을 어떻게 줄였는지 설명하는 것입니다.

핵심 수식/알고리즘

BERT 벡터와 FAISS의 역할은 완전히 다르다

즉 FAISS는 벡터를 "만드는" 도구가 아니라, 벡터를 "찾는" 도구입니다.

실제 파이프라인: text -> embedding model -> vector -> FAISS index/search

문장 벡터는 어떻게 만드나?

단어 벡터만으로 검색하지 않고, 보통 문장/청크 단위 벡터를 만듭니다.

실무 검색 품질은 대개 일반 BERT raw pooling보다 sentence embedding 전용 모델이 더 안정적입니다.

토큰 벡터에서 문장 벡터로: 실제 모양(shape)으로 이해하기

예문 I love machine learning를 BERT에 넣으면, 출력은 보통 토큰별 벡터 집합입니다.

즉 단순화하면 4 x 768 행렬입니다. 그런데 검색은 "문장 1개 -> 벡터 1개"가 필요하므로 pooling 단계가 반드시 들어갑니다.

CLS 방식: [CLS] I love machine learning [SEP]에서 마지막 [CLS] 벡터를 문장 벡터로 사용

Mean 방식: v_sentence = (v_I + v_love + v_machine + v_learning) / 4

SBERT 방식: 문장 유사도 목적(유사 문장 가깝게, 무관 문장 멀게)으로 추가 학습된 모델을 사용

왜 SBERT가 검색에서 자주 유리한가

일반 BERT는 MLM 중심 사전학습이라 문장-문장 거리 자체를 직접 최적화하지 않습니다. 반면 SBERT류는 유사/비유사 문장 쌍으로 임베딩 공간을 정렬하기 때문에 semantic search에서 보통 더 안정적인 최근접 결과를 제공합니다.

실제 시스템 관점 정리

text -> embedding model (BERT/SBERT) -> vector -> vector DB (FAISS) -> nearest search

여기서 embedding 모델은 "의미를 벡터로 인코딩"하고, FAISS는 "수백만 벡터 중 최근접 검색을 가속"합니다.

용어/기호 빠른 사전 (뉴비용)

읽는 방법: 수식에서 기호가 나오면 먼저 위 사전으로 의미를 확인하고, 그다음 "이 기호가 성능/비용 중 무엇을 바꾸는지"를 연결해서 이해하면 됩니다.

논문 간 비교 포인트

Self-RAG/ReAct는 RAG를 동적/행동 기반으로 확장.

4단. 비용/리스크

검색 실패 전파, 인덱스 품질 의존, 프롬프트 누수.

실패 사례 체크리스트

5단. 실무 적용

지식베이스 QA, 엔터프라이즈 문서 질의, 규정 답변 자동화에 핵심 패턴.

예상 질문과 답변 (면접/실무 심화)

Q1. 이 논문의 핵심 기여를 한 문장으로 말해보세요.
A1. 핵심은 기존 병목을 특정하고, 그 병목을 직접 줄이는 학습/구조/시스템 변경을 제시했다는 점입니다. 면접에서는 숫자보다 병목-해결 매핑을 먼저 말하면 전달력이 높습니다.

Q2. 성능이 좋아도 실무에서 실패하는 대표 이유는?
A2. 비용과 안정성을 같이 보지 않기 때문입니다. 오프라인 정확도가 높아도 지연/메모리/운영 복잡도가 임계치를 넘으면 서비스 품질이 떨어집니다.

Q3. 이 논문을 도입할 때 baseline은 어떻게 잡나요?
A3. 가장 단순하고 강한 baseline 두 개를 동시에 잡아야 합니다. 하나는 품질 기준, 다른 하나는 비용 기준으로 두 축을 같이 비교해야 도입 판단이 가능합니다.

Q4. 이 접근의 실패 사례를 어떻게 감지하나요?
A4. 분포 이동, 길이 증가, 노이즈 입력, adversarial 질의에서 지표를 분리해 봐야 합니다. 특히 평균 성능이 아닌 tail failure를 별도로 추적해야 합니다.

Q5. 다음 단계 실험을 1개만 한다면?
A5. 단일 run이 아니라 multi-seed/다중 조건으로 변동성을 먼저 측정하겠습니다. 재현성 없는 개선은 실무에서 신뢰하기 어렵기 때문입니다.