Karl
← The 20-year story

A3 · Homeplus · 2024

RAG Chatbot

RAG 기반 고객 챗봇

Rule 기반 챗봇의 한계를 넘기 위해 Go 기반 RAG Pipeline을 직접 구현하고, 검색 데이터 품질과 운영 효율을 함께 고려한 아키텍처를 설계했습니다.

1,500자
FAQ Chunk 단위
Milvus → pgvector
운영 복잡도 기반 전환
ReRank
Cohere 기반 Context 선별
RAG Chatbot — Embedding · Reranker · LLM Validation Check
RAG Chatbot ArchitectureEmbedding · Reranker · LLM Validation Check
RAG Chatbot — 입점 점포 · 연락처 안내
점포 정보 응답입점 점포 · 연락처 안내
RAG Chatbot — 영업시간 · 휴점일 · 주차 안내
매장 운영 정보 응답영업시간 · 휴점일 · 주차 안내

01 Problem

Rule 기반 챗봇은 미리 정의한 질문과 답변에 의존해 주문·배송·환불 정책처럼 조건이 많은 문의와 다양한 자연어 표현에 대응하기 어려웠습니다.

같은 의미의 질문도 표현마다 Rule을 따로 관리해야 했고, 정책이 바뀌거나 새 문의 유형이 생길 때마다 유지보수 부담이 커졌습니다. 단순 반복 문의까지 상담사가 처리해야 했습니다.

기존 FAQ와 고객센터 상담·정책 문서를 검색하고, LLM이 이를 바탕으로 답변을 생성하는 RAG 챗봇을 추진했습니다.

02 Role

  • RAG 챗봇 전체 아키텍처 및 검색·응답 Pipeline 설계
  • Go 기반 RAG 핵심 기능 및 Backend 개발
  • 문서 수집, 전처리, Chunking 및 Embedding 처리 구조 구현
  • Vector DB 선정 및 검색 아키텍처 설계
  • Cohere ReRank 기반 검색 결과 및 Context 선별 구조 구현
  • 기존 업무 데이터와 LLM 연계 구조 설계

03 Approach

  1. 01Framework 의존도를 최소화한 Go 기반 RAG

    LangGraph, LlamaIndex 등 주요 Framework의 구조를 검토한 뒤, 서비스에 필요한 핵심 기능을 Go로 직접 구현했습니다.

    문서 처리, Embedding, Vector 검색, ReRank, LLM 호출 영역을 분리해 각 단계를 독립적으로 바꿀 수 있게 설계했습니다.

  2. 02운영 복잡도를 고려한 Vector DB 전환

    초기에는 Milvus를 적용했으나, 별도 클러스터 운영 부담을 고려해 AWS RDS PostgreSQL + pgvector로 전환했습니다.

    관계형 데이터와 Vector 데이터를 같은 DB에서 관리해 운영 부담을 줄이고 기존 인프라를 활용했습니다.

  3. 03데이터 특성별 검색 품질 개선

    응답 정확도를 높이기 위해 모델 변경보다 검색 데이터의 전처리와 구조화를 우선했습니다.

    일반 FAQ는 문맥 유지를 고려해 약 1,500자 단위로 Chunking했고, 매장 입점 점포의 상호명·연락처·업종처럼 속성이 명확한 정보는 XML로 규격화해 LLM이 정확히 식별하도록 했습니다.

  4. 04Cohere ReRank와 Human Evaluation

    Vector 유사도만으로는 관련성이 낮은 문서가 섞일 수 있어 Cohere ReRank로 검색 결과를 재평가하고, 관련성 높은 Context만 LLM에 전달했습니다.

    생성된 답변은 사람이 직접 검토하는 Human Evaluation으로 정확성과 적절성을 검증했습니다.

04 Architecture

FAQ · 상담 · 정책 문서
점포 정보
전처리
Chunking 1,500자
XML 규격화
Embedding
PostgreSQL
pgvector
Cohere ReRank
Context 구성
Claude · Bedrock
수집 → Chunking → Embedding → 저장 → 검색 → ReRank → Context → 응답 생성

05 Stack

  • Go
  • Python
  • PostgreSQL (pgvector)
  • AWS Bedrock
  • Claude
  • Embedding
  • Cohere ReRank
  • ECS
  • ECR
  • CodePipeline
  • n8n

06 Outcome

데이터 유형별 검색 구조
FAQ는 약 1,500자 Chunk, 점포 정보는 XML로 규격화해 데이터 특성에 맞게 구성
점포 정보 응답 품질
상호명·연락처·업종을 XML로 구조화하고 Human Evaluation으로 검증
검색 관련성 강화
Cohere ReRank로 질문 관련성이 높은 Context를 선별하는 Pipeline 구현