📚 Agentic AI - 기업용 자율 에이전트 개발 6장 · 에이전트 ④ RAG 문서검색 Agentic AI란

CSV 분석과 RAG, 무엇을 언제 쓰나

한 줄 요약

표에 든 숫자는 코드로 계산하고, 문서에 쓰인 문장은 검색해서 근거로 씁니다. 둘을 나누는 기준은 데이터의 생김새가 아니라 답이 어디에 어떤 형태로 있는가입니다. 8장에서 담당을 나누는 기준이 바로 이것입니다.


1. 헷갈리는 이유

둘 다 "우리 회사 데이터에서 답을 찾는다"입니다. 그래서 처음에는 구분이 잘 안 됩니다.

"P0003 리뷰 평균 평점은?"        → CSV 분석
"P0003 배터리 사양은?"           → RAG

둘 다 P0003에 대한 질문인데 담당이 다릅니다. 왜일까요?


2. 기준은 "답이 어떤 형태로 있는가"

CSV 데이터분석 (5장) RAG 문서검색 (6장)
답이 있는 형태 표의 칸에 흩어져 있다 문장으로 적혀 있다
답을 얻는 법 계산해서 만든다 찾아서 인용한다
원본에 답이 없다 (계산 결과) 있다 (그대로)
"평균 3.8점" "수령일로부터 30일 이내"

결정적인 차이는 세 번째 줄입니다.

"평균 평점 3.8"     → reviews.csv 어디를 찾아도 3.8이라는 값은 없다.
                     15개 평점을 더해서 나눠야 나온다. → 계산

"30일 이내"        → 환불교환정책.pdf 에 그대로 적혀 있다.
                     계산할 게 없다. 찾아서 그대로 옮기면 된다. → 검색
이 답이 어딘가에 그대로 적혀 있는가?적혀 있다 → 찾는다만들어 내야 한다 → 계산한다RAG 문서검색CSV 데이터분석"반품 며칠 이내?"정책 문서에 그대로 적혀 있다"이번 달 매출은?"매출 데이터를 합산해야 한다VIP 기준 150만원숫자지만 적혀 있다 — 그래도 RAG함정리뷰 불만 내용문장이지만 표에 있다 (15건) — CSV함정데이터양도 고려리뷰 10,000건이면 RAG로둘 다 필요 → 8장형태가 아니라 '원본에 답이 있는가'로 가릅니다. 숫자여도 적혀 있으면 RAG, 문장이어도 표에 있고 양이 적으면 CSV 분석입니다.
원본에 답이 적혀 있으면 RAG, 계산해서 만들어야 하면 CSV 분석이다

이 구분이 흐려지면 위험합니다. 규정을 "계산"하거나 "추론"하려 들면 그게 곧 환각입니다. 1장에서 LLM이 일반 전자상거래법으로 반품 기간을 추론해 낸 것이 정확히 그 사고였습니다.


3. 판단하는 법 — 질문 하나

새 질문을 만났을 때 이렇게 물어 보세요.

"이 답이 어딘가에 그대로 적혀 있는가, 아니면 만들어 내야 하는가?"

적혀 있다  → RAG (찾는다)
만들어 낸다 → CSV 분석 (계산한다)

몇 가지 예로 연습해 봅시다.

질문 어느 쪽
"이번 달 매출은?" CSV 어디에도 안 적혀 있다. 더해야 한다
"VIP 조건은?" RAG 멤버십정책에 적혀 있다
"재고가 기준보다 적은 상품은?" CSV 비교해서 골라내야 한다
"교환 배송비는 누가 내나?" RAG 환불교환정책에 적혀 있다
"P0003 리뷰 몇 건?" CSV 세어야 한다
"스마트워치 방수 등급은?" RAG 매뉴얼에 적혀 있다

4. 애매한 경우

실전에서는 깔끔하게 안 갈리는 경우가 있습니다.

① 문서 안의 숫자

"VIP 등급 기준 금액이 얼마인가요?"  → 150만원

숫자지만 RAG입니다. 문서에 그대로 적혀 있으니까요. 계산할 게 없습니다.

"숫자면 CSV"가 아닙니다. 기준은 여전히 적혀 있는가 / 만들어 내는가 입니다.

② 표 안의 문장

"P0003 리뷰에서 어떤 불만이 많나요?"

reviews.csvreview_text문장입니다. 표 안에 있지만요.

이 과정에서는 CSV 분석으로 처리합니다.

아래는 개념 설명용 코드입니다 — 실습 파일에 넣지 않습니다.

run_pandas("reviews[reviews['product_id']=='P0003']['review_text'].tolist()")

리뷰가 15건뿐이라 전부 꺼내 모델에게 읽히면 됩니다.

리뷰가 10,000건이라면? 전부 꺼낼 수 없으니 리뷰를 RAG로 색인하는 편이 낫습니다. 양이 기준을 바꿉니다.

③ 둘 다 필요한 경우

"P0003 배터리 불만이 정당한가요?"
  • 리뷰에서 불만 내용 → CSV
  • 매뉴얼에서 사양 → RAG
  • 둘을 비교 → 판단

한 쪽만으로는 답이 안 나옵니다. 이게 8장의 질문입니다.


5. 선택 기준 정리

이럴 때 이걸 쓴다
집계·비교·순위·추이 CSV 분석
규정·정책·절차·사양 RAG
항목이 수백~수만 건 (표) CSV 분석
문서가 수십~수천 쪽 RAG
답이 정확히 재현돼야 함 RAG (원문 인용)
답이 매번 다른 계산 CSV 분석
출처를 밝혀야 함 RAG

6. 왜 하나로 합치지 않나

"어차피 다 우리 데이터인데 하나로 못 하나요?"

기술적으로는 가능합니다. CSV를 문장으로 바꿔 전부 RAG로 색인할 수도 있죠.

"주문 O001203은 오지우 고객이 2026-05-14에 주문한 승승 스마트워치 Fit 5 1개이며
 금액은 159,000원이고 상태는 배송완료입니다."   ← 2,400건을 이렇게

그런데 이러면 집계를 못 합니다. "카테고리별 매출 합계"를 벡터 검색으로 구할 수는 없습니다. 검색은 비슷한 것을 찾을 뿐, 더하지 못합니다.

반대로 문서를 표로 만들 수도 없습니다. 규정은 문맥이 있는 글이라 칸에 나눠 담으면 뜻이 망가집니다.

각자 잘하는 것이 다릅니다. 5장 5절의 그 원칙 — 각자 잘하는 것을 시킨다 — 이 여기서도 적용됩니다.


7. 8장으로 이어집니다

이 구분이 그대로 담당자 구분이 됩니다.

[8장의 팀]

  주문담당      → get_order_status "주문번호 하나의 정해진 조회는 여기"
  데이터분석가  → run_pandas       "사내 숫자는 전부 여기"
  규정담당      → policy_search    "규정·사양은 여기. 재고나 매출 수치는 여기 없다"
  시장조사원    → search_web       "바깥 정보는 여기"

각 담당의 설명에 경계선이 들어 있는 것을 보세요. 4장 4절에서 배운 그대로입니다.

실제로 8장을 만들 때 경계선이 흐려서 사고가 났습니다.

[경계선이 흐릴 때]
  질문: "재주문 기준을 채우려면 몇 개 발주해야 하나요?"
  팀장의 계획: → 규정담당: "재주문 기준을 확인해 주세요"
  규정담당 보고: "문서에 없음"                                ← 엉뚱한 담당에게 보냈다
  최종 답변: "재주문 기준이 문서화되어 있지 않습니다"           ← 완전히 틀림

[경계선을 분명히 한 뒤]
  팀장의 계획: → 데이터분석가: "재주문 기준을 확인하고 발주 수량을 계산해 주세요"
  데이터분석가 보고: "재주문 기준 30개, 현재 재고 3개 → 27개 발주 필요"
  최종 답변: "27개를 발주해야 합니다"                          ← 맞음

reorder_levelinventory.csv 의 열입니다. 규정 문서에 있을 리가 없죠. 그런데 "재주문 기준"이라는 말이 규정처럼 들려서 팀장이 헷갈린 것입니다.

고친 방법은 담당 설명을 구체적으로 바꾼 것이었습니다.

아래는 개념 설명용 코드입니다 — 실습 파일에 넣지 않습니다.

"규정담당": "사내 문서를 검색한다 — 환불·교환 기간, 멤버십 등급, 제품 사양(배터리·방수 등). "
         "재고나 매출 같은 수치는 여기 없다.",          # ← 이 문장을 추가

"~는 여기 없다" 한 문장이 사고를 막았습니다. 4장 4절에서 "언제 안 쓰는지도 적어라" 고 한 것이 이런 뜻입니다.


스스로 해 보기

아래 질문들을 CSV 분석 / RAG / 둘 다 로 분류해 보세요. 그리고 실제로 던져 확인하세요.

  1. "지난달 가장 많이 팔린 상품은?"
  2. "골드 등급 적립률은?"
  3. "평점 3점 이하 리뷰가 가장 많은 상품과, 그 상품의 매뉴얼상 주요 사양은?"
  4. "로봇청소기 필터 교체 주기는?"
  5. "취소·환불이 가장 많은 카테고리는?"
  6. "환불 신청 후 며칠 안에 입금되나?"

3번이 둘 다입니다. 5장의 run_pandas 와 6장의 policy_tool 을 한 에이전트에 붙여 직접 시켜 보세요. (앞 절 「스스로 해 보기」 3번의 코드를 쓰면 됩니다)


핵심 정리

  • 기준은 "답이 어딘가에 그대로 적혀 있는가, 만들어 내야 하는가" 입니다.
  • 적혀 있으면 RAG(찾는다), 만들어 내면 CSV 분석(계산한다).
  • "숫자면 CSV"가 아닙니다. VIP 기준 150만원은 숫자지만 문서에 적혀 있으니 RAG입니다.
  • 양이 기준을 바꿉니다. 리뷰 15건은 CSV로 꺼내 읽히고, 10,000건이면 RAG로 색인합니다.
  • 하나로 합칠 수 없습니다. 검색은 비슷한 것을 찾을 뿐 더하지 못하고, 규정은 표로 나누면 뜻이 망가집니다.
  • 이 구분이 그대로 8장의 담당자 구분이 됩니다.
  • 실제로 경계선이 흐려 "재주문 기준"을 규정담당에게 보내는 사고가 났고, "재고나 매출 같은 수치는 여기 없다" 한 문장으로 고쳤습니다.
← 이전 절08. 검색을 도구로 만들면 다른 도구와 나란히 선다다음 절 →10. 정리 체크리스트