COMPLETED · 2025.12

DKaffeine
기업 내규 기반 RAG AI Assistant

기업 내규와 기술 문서를 기반으로 정확한 답변을 제공하는 RAG AI 챗봇을 개발했습니다.
LangGraph 기반 추론 워크플로우를 설계하고, Retrieval 최적화와 Guardrail을 통해
검색 품질과 응답 신뢰성을 개선했습니다.

Period 2025.10 — 2025.12
Team 8명 (BE 3, Infra 2, AI 2, FE 1)
Role AI Engineer
AI 아키텍처

▲ LangGraph를 코어로 활용하여 LLM 인퍼런스, 모니터링, 데이터 검색을 통합한 AI 아키텍처 구성도

프로젝트 소개

기업 내규, 기술 문서, HR 정책 등 사내 문서를 기반으로 정확한 답변을 제공하는 RAG AI 챗봇을 개발했습니다.

단순히 RAG를 구현하는 것을 넘어 검색 품질 향상, Prompt Engineering, Guardrail, Streaming Response 등을 적용하여 실제 운영 가능한 AI 서비스를 목표로 했습니다.

RAG 파이프라인 전체 흐름

사용자의 질문이 입력되는 순간부터 최종 응답이 전달되기까지, AI 시스템 내부에서 거치는 전체 추론 과정입니다.

1. Input
사용자가 카카오워크를 통해 질문 입력
2. Safety
Blacklist Filter Guardrail (LLM 의도 분석)
3. Reasoning
Intent Classification Follow-up Detection
4. Retrieval
Semantic Search Cohere Reranker Prompt Construction
5. Generation
AWS Bedrock (LLM Inference)
6. Memory
Redis Session 저장 대화 맥락 유지

담당 영역

프로젝트에서 직접 설계하고 구현한 AI 엔지니어링 영역을 정리했습니다.

LangGraph Workflow 설계
Guardrail, Intent 분류, Cache 조회, RAG, Follow-up 등 조건부 노드를 결합한 상태 기반 AI 추론 파이프라인을 설계하고 구축했습니다.
단순 순차 호출이 아닌, 질문 유형에 따라 분기하는 지능적인 워크플로우가 필요했습니다.
Prompt Engineering
Role 정의, Context 주입, Format 지정을 체계적으로 분리한 프롬프트 구조를 설계하여 Hallucination을 방지하고 응답 포맷을 통일했습니다.
LLM이 문서 근거 없이 답변하거나 일관성 없는 포맷으로 응답하는 문제를 해결하기 위함입니다.
AWS Bedrock 연동
AWS Bedrock을 통한 LLM 인퍼런스를 연동하고, 관리자 설정으로 모델·Temperature를 동적 제어할 수 있는 유연한 구조를 구현했습니다.
Semantic Chunking 전략 실험
계층 기반, 고정 길이, Semantic Chunking 등 다양한 청킹 전략을 실험하고 비교하여, 문맥 보존에 가장 효과적인 전략을 선정했습니다.
문서의 맥락이 잘리면 검색 품질이 급락하는 핵심 문제를 해결하기 위함입니다.
Cohere Reranker 도입
벡터 검색 결과를 Cohere Reranker로 재정렬하여, 의미적으로 가장 관련성이 높은 문서를 상위에 배치하는 2단계 검색 파이프라인을 구축했습니다.
임베딩 기반 검색만으로는 미묘한 의미 차이를 구분하지 못해 오답이 발생하는 문제를 해결하기 위함입니다.
FastAPI 독립적인 AI Microservice 구축
RAG 파이프라인 전체를 FastAPI 기반 독립 마이크로서비스로 분리하여, 백엔드와 무관하게 배포·스케일링이 가능한 구조를 구축했습니다.
Redis 대화 메모리
사용자별 대화 세션을 Redis에 저장하여 문맥을 유지하고, 후속 질문에서도 이전 대화를 참조한 정확한 답변을 제공하도록 구현했습니다.
Follow-up Question 처리
이전 대화 맥락을 분석하여 후속 질문 여부를 자동 판단하고, 대명사나 생략된 주어를 복원하여 완전한 질문으로 재구성한 후 RAG를 수행하도록 구현했습니다.
"그럼 반차는?" 같은 후속 질문에서 "연차"라는 맥락이 사라지면 검색이 실패하는 문제를 해결하기 위함입니다.
AI Safety & Guardrail
1차 Blacklist 패턴 매칭과 2차 LLM 기반 의도 분석을 결합한 다단계 Guardrail을 구현하여 Prompt Injection과 업무 외 질문을 차단했습니다.
기업용 챗봇에서 악의적 입력으로 인한 보안 사고와 부적절한 응답 생성을 사전에 방지하기 위함입니다.

핵심 개선 사항

AI 서비스를 개발하며 겪은 핵심적인 기술 문제와 해결 과정을 기록했습니다.

검색 정확도가 낮아 LLM이 잘못된 답변을 생성하는 문제
Problem
검색된 문서의 관련도가 낮으면 LLM이 부정확한 정보를 기반으로 답변을 생성하여 신뢰성이 떨어지는 문제가 발생했습니다.
Background
기존에는 계층 기반 고정 크기 청킹(Fixed-size Chunking)을 사용하여, 문서의 논리적 의미 단위와 무관하게 기계적으로 분할되고 있었습니다.
Cause
고정 크기 청킹은 하나의 의미 단위가 여러 청크에 걸쳐 잘리거나, 서로 다른 내용이 한 청크에 합쳐져 임베딩 벡터의 의미적 정밀도가 떨어지는 것이 근본 원인이었습니다.
Implementation
Semantic Chunking으로 전환하여 문서를 의미 단위로 분할하고, 500~700 토큰 범위에서 최적 정확도를 확인했습니다. 추가로 Cohere Reranker를 적용하여 검색 결과의 관련도를 2차로 정렬했습니다.
Result
검색 정확도가 기존 대비 약 40% 증가하여 최고 0.60을 기록했으며, Reranker 적용으로 최대 +0.26점의 추가 향상을 달성했습니다.
Lessons Learned
RAG 시스템에서 LLM의 응답 품질은 결국 검색 품질에 의해 결정된다는 점을 깊이 체감했습니다. Retrieval 단계의 최적화가 전체 파이프라인 성능의 핵심임을 이해하게 되었습니다.
업무 외 질문 및 Prompt Injection 공격 대응
Problem
업무와 무관한 질문이나 시스템 프롬프트를 우회하려는 악의적인 Prompt Injection 입력이 들어오면 챗봇이 의도하지 않은 응답을 생성하는 보안 문제가 있었습니다.
Implementation
다단계 Guardrail 구조를 설계했습니다. 1차로 Blacklist 패턴 매칭으로 즉시 차단하고, 2차로 LLM 기반 의도 분석을 수행하여 우회 시도까지 탐지합니다.
Prompt Injection 방어 예시

▲ 시스템 프롬프트를 무시하라는 악의적인 Prompt Injection 시도를 차단한 실제 예시

Result
위험 질문이 사전 차단되어 시스템 안전성이 크게 향상되었으며, 정상적인 업무 질문에 대한 응답 품질에는 영향을 주지 않는 정교한 필터링이 가능해졌습니다.
Lessons Learned
AI 서비스의 보안은 단순한 키워드 필터링만으로는 불충분하며, LLM 기반 의도 분석과 같은 지능형 방어 체계가 필수적이라는 점을 이해하게 되었습니다.
반복 질문에 의한 LLM 호출 비용 및 응답 지연 문제
Problem
동일하거나 유사한 질문이 반복될 때마다 매번 LLM을 호출하여 불필요한 API 비용이 발생하고, 응답 속도가 일관되지 않는 문제가 있었습니다.
Implementation
Redis 기반 응답 캐시를 구축하고, 높은 신뢰도의 RAG 답변을 FAQ로 자동 생성하는 Celery 비동기 파이프라인을 설계했습니다. 관리자 승인 후 FAQ에 반영되어 후속 질문에 즉시 응답합니다.
Result
캐시 히트 시 LLM 호출 없이 즉시 응답하여 응답 속도가 대폭 향상되었고, 반복 질문에 대한 API 호출 비용을 절감할 수 있었습니다.
Lessons Learned
AI 서비스 운영에서 비용 최적화는 기술적 과제이자 비즈니스적 과제이며, 캐싱 전략이 서비스 품질과 비용 모두에 직결된다는 점을 배웠습니다.
컨테이너 이미지 용량 및 배포 성능 최적화
Problem
Python 기반의 무거운 AI 라이브러리들로 인해 기본 Docker 이미지의 용량이 비대해져, 배포 속도가 저하되고 스토리지 비용이 증가하는 문제가 있었습니다.
Implementation
Multi-stage Build 구조를 도입하여 빌드 환경과 실행 환경을 분리하고, 최종 실행 환경에는 python-slim 이미지를 적용하여 불필요한 OS 패키지 및 빌드 툴을 제거했습니다.
Result
최종 컨테이너 이미지 용량을 약 80% 감소시켰으며, 이를 통해 CI/CD 파이프라인의 빌드 및 배포 소요 시간을 대폭 단축하여 개발 생산성을 향상시켰습니다.

챗봇 UX (RAG 파이프라인 흐름)

실제 사용자가 질문했을 때 내부적으로 문서 검색과 응답이 이루어지는 과정입니다.

1. User Input
"경조사 휴가 규정 알려줘. 본인 결혼일 때는 며칠이야?"
2. Context Retrieved (Semantic Search)
[문서: 취업규칙_v2.pdf]
제 24조 (경조휴가)
회사는 직원이 다음 각 호의 1에 해당하는 경조사가 있을 때에는 유급휴가를 부여한다.
1. 본인의 결혼 : 5일
2. 자녀의 결혼 : 1일
3. LLM Generation
취업규칙 제24조(경조휴가)에 따르면, 본인의 결혼 시 유급휴가 5일이 부여됩니다.
정상 답변 예시
근거 기반 챗봇 응답
출처 문서 링크가 포함된 정확한 업무 관련 답변을 제공합니다.
Guardrail 차단 예시
업무 외 질문 차단 (Guardrail)
업무와 무관한 질문은 가드레일이 감지하여 응답을 거절합니다.

통합 어드민 대시보드

고객사가 자체적으로 데이터를 관리하고 챗봇 품질을 개선할 수 있는 운영 시스템입니다.

데이터 소스 관리 화면
데이터 소스 관리
문서 업로드 및 버전 Diff 비교
분석 대시보드 화면
분석 대시보드
대화 횟수, 응답 시간, API 비용 시각화

시스템 및 논리 아키텍처

클린 아키텍처 기반의 모듈 의존성과 클라우드 인프라 구성도입니다.

논리 아키텍처

▲ 전체 시스템의 계층 구조와 모듈 간 의존 관계 (Clean Architecture)

시스템 아키텍처

▲ Kakao Cloud 기반 Kubernetes 인프라 구성도

프로젝트 회고

배운 점
  • AI 시스템 설계 관점의 전환:
    단순히 LLM API를 호출하는 것을 넘어, LangGraph를 활용해 RAG, Reranker, Guardrail 등 다수의 에이전트를 유기적으로 제어하는 "시스템 설계"의 중요성을 배웠습니다.
아쉬운 점 및 향후 개선
  • LLM 품질 자동 평가(LLM-as-a-Judge) 파이프라인 부재:
    생성형 AI 모델의 배포 후 성능 편차를 정량적으로 평가하지 못한 점이 아쉬움으로 남습니다. 이를 개선하기 위해, 이후 진행한 MoneyLog 프로젝트에서는 배포 파이프라인에 LLM-as-a-Judge 기반의 자동화된 품질 평가 프로세스를 직접 도입하여 배포 안정성을 성공적으로 확보했습니다.