-
Spring AI 시리즈 2화 – Spring AI 프로젝트 구조와 주요 모듈 개요기술과 산업/언어 및 프레임워크 2025. 5. 30. 18:03728x90
Spring AI는 OpenAI, Hugging Face, Chroma 등 다양한 AI 서비스를 선언적으로 연동할 수 있도록 돕는 Spring 기반 프레임워크입니다. 본 글에서는 프로젝트 구조와 주요 모듈 역할을 중심으로, Spring AI의 구성 원리를 소개합니다.
AI 기능을 애플리케이션에 녹여내기 위해 Spring AI를 도입하려 할 때, 가장 먼저 부딪히는 질문은 이것입니다.
“Spring AI는 정확히 어떤 구조로 구성돼 있고, 어떤 모듈을 어떻게 의존해야 하지?”
이 질문은 단순히 설정을 어떻게 하느냐를 넘어,
AI 기능을 어떻게 확장할 수 있는가,
어떤 모듈이 어떤 기능을 담당하는가,
그리고
내가 사용하는 LLM과 Vector DB는 어떤 식으로 연동되는가를 이해하는 데 매우 중요합니다.
이번 글에서는 Spring AI의 전체적인 구조를 하나의 큰 그림처럼 정리해보겠습니다.
Spring AI 프로젝트 구조: Overview
Spring AI는 단일 프로젝트가 아니라 여러 개의 모듈로 구성된 멀티모듈 프로젝트입니다.
공식 저장소 기준 주요 모듈은 아래와 같습니다:
📦 Core Layer
- spring-ai-core: Spring AI의 핵심 추상화 계층
- ChatClient, PromptTemplate, EmbeddingClient, VectorStore 등의 인터페이스 정의
- 기본적인 API 규약과 구성 방식, 오류 처리 로직 등을 포함
🤖 LLM Provider Layer
- spring-ai-openai: OpenAI GPT 연동
- spring-ai-huggingface: Hugging Face Inference API 연동
- spring-ai-azure-openai: Azure 기반 OpenAI 연동
- spring-ai-ollama: 로컬에서 실행 가능한 모델 연동 (예: Mistral 등)
🧠 Embedding + 벡터 저장소 Layer
- spring-ai-embedding-openai: OpenAI의 임베딩 API 연동
- spring-ai-vectorstore-chroma: Chroma DB 연동
- spring-ai-vectorstore-milvus: Milvus 연동
- spring-ai-vectorstore-weaviate: Weaviate 연동
- spring-ai-vectorstore-pgvector: PostgreSQL 기반 벡터 저장소 연동
📄 문서 처리 Layer
- spring-ai-document: PDF, TXT, MD, HTML 등 다양한 문서 형식을 로딩하여 청크로 분할하는 기능
- DocumentReader, TextSplitter, Metadata 등을 포함
🧪 실습 및 테스트 Layer
- spring-ai-examples: 전체 기능을 종합한 샘플 프로젝트 모음
- spring-ai-bom: 의존성 정리를 위한 BOM(Bill of Materials)
모듈 간 계층 구조
[Application Layer] ↓ [LLM/Embedding/VectorStore Client] ↓ [Core Abstractions (spring-ai-core)] ↓ [Spring Boot Integration + Config]
예를 들어, OpenAI 기반 챗봇을 구성한다고 할 때,
- spring-ai-core에서 제공하는 ChatClient를 인터페이스로 사용하고
- spring-ai-openai가 이를 실제 구현체로 제공합니다.
- 설정은 application.yml을 통해 Spring Boot 방식으로 주입됩니다.
실전 연동 예: OpenAI 연동
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency>
spring: ai: openai: api-key: ${OPENAI_API_KEY}
@Autowired private ChatClient chatClient; public String callAI(String input) { return chatClient.call(input).getResult().getOutput().getContent(); }
▶ 위 코드 흐름에서 중요한 점은, 개발자는 ChatClient 인터페이스만 사용하면 된다는 점입니다.
구체적인 모델 호출 로직, HTTP 처리, JSON 파싱 등은 모두 내부에서 처리되며, 선언적이고 간결한 구조를 유지합니다.
Embedding + Vector Store 연동 구조
Spring AI는 LLM만 연결하는 게 아닙니다.
문서 기반 Q&A, 검색 기능, 요약 시스템을 만들기 위해선 다음 세 가지가 함께 필요합니다:
- 임베딩 생성 (예: OpenAI Embedding)
- 벡터 저장소 (예: Chroma, Weaviate)
- 검색 및 유사도 비교 → RAG 구성
이를 위한 구조도 Spring AI 내부에서 다음과 같이 추상화되어 있습니다:
interface EmbeddingClient { List<Float> embed(String text); } interface VectorStore { void add(Document doc); List<Document> findRelevant(String query); }
벡터 DB마다 구현체만 달라지고, API 사용 방식은 동일합니다.
실전에서 어떤 모듈을 선택해야 하나?
목적선택해야 할 모듈
GPT-4 사용 spring-ai-openai HuggingFace 모델 사용 spring-ai-huggingface 로컬 모델 실행 (Mistral 등) spring-ai-ollama 문서 요약/검색 시스템 spring-ai-document, spring-ai-embedding-*, spring-ai-vectorstore-* Azure 기반 OpenAI spring-ai-azure-openai Vector DB 연동 spring-ai-vectorstore-chroma, milvus, pgvector 등
핵심 포인트 요약
- Spring AI는 단일 API가 아니라 모듈화된 구성체계다.
- spring-ai-core가 모든 기능의 중심이고, Provider/Store/Embedding 계층이 이를 구현한다.
- Vector Store, PromptTemplate, Embedding API 등을 통합적으로 다루기 때문에 AI 기능의 전체 흐름을 일관된 구조로 통제할 수 있다.
- Spring Boot Starter 방식으로 구성되어 개발자가 진입장벽 없이 사용 가능하다.
728x90'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
Spring AI 시리즈 4화 – Hugging Face 연동: Inference API 실습 (0) 2025.06.02 Spring AI 시리즈 3화 – OpenAI 연동: 텍스트 생성 API 통합 실습 (1) 2025.05.30 Spring AI 시리즈 1화 – Spring AI 소개: 왜 지금 AI와 Spring의 결합인가? (1) 2025.05.30 Spring Boot 고급 시리즈 1화 – Spring Boot의 아키텍처 재조명: 왜 우리는 Spring Boot를 선택하는가 (0) 2025.05.30 Spring Boot 시리즈 40편 – 실무에서의 Spring Boot CI/CD 구축 전략 (1) 2025.05.30 - spring-ai-core: Spring AI의 핵심 추상화 계층