JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

실무에서 Spring AI를 통한 RAG 구현 방법

JSCODE 시니
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:53 AM
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
how-to-implement-rag-with-spring-ai
type
post
updatedAt

✅ 1. Spring AI에서 RAG를 구현하는 방법

  • Spring AI는 RAG 구현을 위해 프롬프트를 가로채고 조작하는 Advisor패턴을 적극적으로 사용함
  • 실무에서는 목적에 따라 크게 두 가지 Advisor를 선택해서 사용함
 
 
 

✅ 2. 실무에서 사용하는 두 가지 Advisor

  • QuestionAnswerAdvisor
    • 사용자의 질문을 받으면 Vector DB에서 관련 문서를 찾아 프롬프트에 끼워 넣고 답변을 생성하는 가장 기본적인 RAG 흐름을 제공
    • 구조가 단순해서 빠르게 초기 프로토타입을 만들 때 유용
  • RetrievalAugmentationAdvisor
    • 단순한 검색을 넘어, RAG 시스템을 레고 블록처럼 자유롭게 조립하고 확장할 수 있게 해주는 고급형 Advisor
    • 새로운 검색 기법이나 문서 정제 기술(패러다임)이 등장했을 때, 전체 코드를 갈아엎을 필요 없이 필요한 모듈(블록)만 갈아 끼워 대응할 수 있는 유연함을 제공
 
 
 

✅ 3. Modular RAG 처리 흐름(RetrievalAugmentationAdvisor)

  • 쿼리 변환 및 전처리
    • "그거 어떻게 해?"와 같은 모호한 질문을 AI가 검색하기 좋은 형태로 다듬는 과정
    • QueryTransformer를 체인처럼 연결하여 질문을 압축, 재작성, 번역
  • 쿼리 확장
    • 하나의 질문으로만 검색하면 놓치는 문서가 생길 수 있음
    • MultiQueryExpander를 사용해 "스프링 부트 에러"라는 질문을 "Spring Boot Exception", "스프링 서버 장애 원인" 등 다양한 관점의 쿼리로 확장하여 검색의 사각지대를 없앰
  • 문서 검색
    • 다듬어지고 확장된 쿼리들을 가지고 실제로 Vector Database를 뒤지는 단계
    • VectorStoreDocumentRetriever를 통해 Metadata Filter 등 다양한 조건으로 VectorStore 검색을 수행함
    • 이 파이프라인에서 유일하게 반드시 설정해야 하는 필수 모듈
  • 문서 결합 및 후처리
    • 여러 쿼리에서 검색된 문서들을 하나로 결합하고, 중복/불필요 문서를 제거
    • 가장 중요한 문서가 위로 오도록 순서를 재배치(리랭킹, Reranking)하거나 요약하여, 컨텍스트 길이를 최적화한 정보만 정제함
  • 문서 기반 답변 생성
    • 정제된 최종 문서 리스트를 사용자의 쿼리에 덧붙여 LLM에게 보내줌
    • ContextualQueryAugmenter가 이 결합 작업을 수행하며, 만약 검색된 문서가 아무것도 없을 경우 "관련 정보를 찾을 수 없습니다" 등의 방어하는 처리도 지원함