Spring AI 개발 일지 (4) - RAG 개념 정리

2025. 12. 14. 10:54·Spring

✅ RAG

LLM은 학습한 지식 안에서만 답변할 수 있기 때문에 특정 도메인 지식이 필요한 경우에는 전혀 엉뚱하거나 틀린 정보를 말하는 Hallucination이 발생할 수 있습니다.

이런 문제를 해결하기 위해 RAG(Retrieval-Augmented Generation)라는 개념이 등장했습니다. RAG는 외부 데이터를 검색해 LLM에게 특정 맥락(context)을 제공하여, 보다 정확하고 신뢰할 수 있는 답변을 생성하도록 합니다.

✅ RAG 파이프라인

Spring AI에서 지원하는 대표적인 RAG 흐름은 다음과 같습니다.

  1. 데이터 색인 (Data Indexing)
    1. 문서 Chunking
      • PDF 또는 텍스트 문서 업로드
      • 텍스트 추출 및 정제
      • LLM이 이해하기 좋은 단위로 Chunking(Text Splitting)
    2. 벡터화 및 저장
      • 각 chunk에 대해 임베딩 생성(벡터화)
      • 메타데이터 추가
      • 벡터 저장소에 저장
  2. 질의응답 (Data Retrieval & Generation)
    • 사용자의 질문을 벡터화
    • 유사한 문서 chunk 검색
    • 검색된 문서를 LLM에게 컨텍스트로 전달
    • 최종 응답 생성

✅ Spring AI RAG 핵심 컴포넌트

Spring AI는 텍스트 청킹 전략, 임베딩 모델 연동, 벡터 저장소 연동, 메타데이터 기반 필터링, LLM 프롬프트 구성 및 요청 처리와 같은 RAG 시스템의 복잡한 요소들을 표준화된 컴포넌트로 추상화해줍니다. 

✔️ EmbeddingModel

임베딩은 LLM과 검색 시스템을 연결하는 첫 번째 단계입니다. Spring AI는 `EmbeddingModel`이라는 텍스트를 벡터로 변환하는 인터페이스를 제공해 다양한 벤더의 임베딩 모델을 쉽게 연동할 수 있게 해줍니다.

EmbeddingModel

✔️ VectorStore

`VectorStore`는 문서 벡터 저장 및 검색을 위한 인터페이스로, 임베딩된 문서를 저장하고 질문과 유사한 문서를 빠르게 검색해주는 핵심 컴포넌트입니다.

VectorStore

추상화가 잘 되어 있어 처음에는 인메모리 기반의 `SimpleVectorStore`로 개발하다가 서비스 확장 시 `PgVector`, `Milvus`, `Qdrant` 등 외부 DB로 코드 변경 없이 쉽게 전환할 수 있습니다.

 

✔️ TextSplitter

LLM은 긴 문서를 한 번에 처리하지 못하기 때문에 문서를 적절한 길이로 나누는 작업이 필요합니다. 이를 위해 Spring AI는 `TextSplitter`를 제공합니다.

TextSplitter

✔️ FilterExpression

단순히 유사한 문서를 찾는 것만으로는 부족할 수 있기 때문에, Spring AI는 문서 메타데이터를 기반으로 조건 필터링을 지원합니다. 이를 통해 SQL의 WHERE 절과 유사한 방식으로 필터링할 수 있습니다.

FilterExpression

 

🔖 참고

https://blog.sionic.ai/spring-ai-series-2#1ebb25e3-2acc-80ea-bd33-c61be025f426

'Spring' 카테고리의 다른 글

Spring AI 개발 일지 (3) - 챗봇 구현  (0) 2025.12.05
Spring AI 개발 일지 (2) - OpenAI 사용해 후기 요약 구현해보기  (0) 2025.11.19
Spring AI 개발 일지 (1) - Spring AI 소개와 핵심 모델  (0) 2025.11.19
PageableExecutionUtils.getPage로 페이징 성능 개선하기  (0) 2025.10.24
Spring 비동기로 이메일 전송하기  (0) 2025.10.21
'Spring' 카테고리의 다른 글
  • Spring AI 개발 일지 (3) - 챗봇 구현
  • Spring AI 개발 일지 (2) - OpenAI 사용해 후기 요약 구현해보기
  • Spring AI 개발 일지 (1) - Spring AI 소개와 핵심 모델
  • PageableExecutionUtils.getPage로 페이징 성능 개선하기
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    raid
    자바
    데브코스
    토스 페이먼츠
    오블완
    백엔드 면접
    JPA
    스프링
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
Spring AI 개발 일지 (4) - RAG 개념 정리
상단으로

티스토리툴바