BE/Spring & Spring Boot

[Spring Boot] Spring AI

baek-dev 2025. 3. 13. 19:07

⚡ 1. Spring AI란?

Spring AISpring 생태계에서 AI 및 LLM(Large Language Model)을 쉽게 활용할 수 있도록 지원하는 프레임워크입니다.

Spring Boot 기반의 애플리케이션에서 OpenAI, Hugging Face, LangChain 같은 AI 모델을 간편하게 통합할 수 있습니다.

 

Spring AI의 주요 특징

LLM (GPT-4, Gemini, LLaMA 등) 지원

Prompt Management (프롬프트 관리)

RAG (Retrieval-Augmented Generation) 적용 가능

Spring Boot와 자연스럽게 통합

Vector DB (Pinecone, FAISS) 연동 가능

서버리스 AI API (OpenAI, Hugging Face) 연동 가능

 

🚀 즉, Spring Boot에서 AI와 LLM을 쉽게 사용할 수 있도록 도와주는 라이브러리!

 

⚡ 2. Spring AI 환경 설정

Spring AI는 Spring Boot 3.x 버전 이상에서 사용 가능하며, Spring AI 관련 라이브러리를 추가해야 합니다.

 

✅ 1) Spring AI 의존성 추가

 

Maven (pom.xml)

<dependencies>
    <!-- Spring AI Core -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-core</artifactId>
        <version>0.5.0</version>
    </dependency>

    <!-- OpenAI API 지원 -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai</artifactId>
        <version>0.5.0</version>
    </dependency>

    <!-- Vector DB (Pinecone) -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-pinecone</artifactId>
        <version>0.5.0</version>
    </dependency>
</dependencies>

 

Gradle (build.gradle)

dependencies {
    implementation 'org.springframework.ai:spring-ai-core:0.5.0'
    implementation 'org.springframework.ai:spring-ai-openai:0.5.0'
    implementation 'org.springframework.ai:spring-ai-pinecone:0.5.0'
}

 

⚡ 3. Spring AI로 OpenAI (GPT-4) 연결하기

✅ 1) OpenAI API 키 설정

 

Spring Boot application.yml 파일에서 OpenAI API 키를 설정합니다.

spring:
  ai:
    openai:
      api-key: your-openai-api-key

 

✅ 2) OpenAI 클라이언트 설정 및 사용

 

Spring AI를 사용하여 OpenAI GPT-4를 호출하는 코드를 작성합니다.

import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.stereotype.Service;

@Service
public class OpenAiService {
    private final OpenAiChatClient chatClient;

    public OpenAiService() {
        OpenAiApi api = new OpenAiApi("your-openai-api-key");
        this.chatClient = new OpenAiChatClient(api);
    }

    public String ask(String prompt) {
        return chatClient.call(prompt);
    }
}

 

Spring Boot 컨트롤러에서 OpenAI 호출

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/ai")
public class OpenAiController {
    private final OpenAiService openAiService;

    public OpenAiController(OpenAiService openAiService) {
        this.openAiService = openAiService;
    }

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return openAiService.ask(message);
    }
}

 

📌 테스트

GET http://localhost:8080/ai/chat?message=Spring AI란 무엇인가?

 

출력 예시

{
  "response": "Spring AI는 Spring Boot에서 AI와 LLM을 쉽게 사용할 수 있도록 지원하는 라이브러리입니다."
}

 

⚡ 4. Spring AI로 RAG (Retrieval-Augmented Generation) 구현

Spring AI를 사용하여 RAG를 구축할 수 있습니다.

 

✅ 1) Pinecone (Vector DB) 설정

spring:
  ai:
    vectorstore:
      pinecone:
        api-key: your-pinecone-api-key
        environment: us-west1-gcp
        index: my-index

 

✅ 2) 문서 임베딩 및 저장

import org.springframework.ai.pinecone.PineconeClient;
import org.springframework.ai.openai.OpenAiEmbeddingClient;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class VectorStoreService {
    private final PineconeClient pineconeClient;
    private final OpenAiEmbeddingClient embeddingClient;

    public VectorStoreService() {
        this.pineconeClient = new PineconeClient("your-pinecone-api-key", "us-west1-gcp", "my-index");
        this.embeddingClient = new OpenAiEmbeddingClient("your-openai-api-key");
    }

    public void storeDocument(String id, String text) {
        List<Float> embedding = embeddingClient.createEmbedding(text);
        pineconeClient.upsert(id, embedding);
        System.out.println("Document Stored: " + id);
    }
}

 

✅ 3) 검색된 문서를 기반으로 GPT 응답 생성

import org.springframework.ai.pinecone.PineconeClient;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class RAGService {
    private final PineconeClient pineconeClient;
    private final OpenAiChatClient chatClient;

    public RAGService() {
        this.pineconeClient = new PineconeClient("your-pinecone-api-key", "us-west1-gcp", "my-index");
        this.chatClient = new OpenAiChatClient("your-openai-api-key");
    }

    public String generateResponse(String query) {
        List<String> results = pineconeClient.query(query, 3);
        String context = String.join("\n", results);
        String prompt = "사용자 질문: " + query + "\n관련 정보: " + context + "\n답변: ";

        return chatClient.call(prompt);
    }
}

 

✅ 4) RAG API 엔드포인트 생성

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/rag")
public class RAGController {
    private final RAGService ragService;

    public RAGController(RAGService ragService) {
        this.ragService = ragService;
    }

    @GetMapping("/ask")
    public String ask(@RequestParam String query) {
        return ragService.generateResponse(query);
    }
}

 

📌 테스트

GET http://localhost:8080/rag/ask?query=Spring AI란 무엇인가?

 

출력 예시

{
  "response": "Spring AI는 Spring Boot에서 AI와 LLM을 쉽게 사용할 수 있도록 지원하는 라이브러리입니다. 이를 통해 OpenAI, Pinecone 등을 활용하여 RAG 시스템을 구축할 수 있습니다."
}

 

⚡ 5. 결론

Spring AI는 Spring Boot에서 AI 모델(OpenAI, Pinecone, Vector DB)을 쉽게 활용할 수 있도록 지원

GPT-4, Hugging Face 모델, Pinecone Vector DB와 자연스럽게 연동 가능

Spring Boot 기반의 RAG 시스템을 구축할 때 매우 유용한 라이브러리

Maven/Gradle에서 쉽게 설정할 수 있으며, API를 통해 쉽게 활용 가능

 

🚀 Spring AI를 활용하면 Java 기반 AI 서비스 개발이 훨씬 쉬워집니다

 

 

 

 

출처 : ChatGPT