⚡ 1. Spring AI란?
Spring AI 는 Spring 생태계에서 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
'BE > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] ApplicationContext (0) | 2025.03.23 |
---|---|
[Spring Boot] 스프링의 생성자 주입 (0) | 2025.03.19 |
[Spring Boot] DispatcherServlet (0) | 2025.03.07 |
[Spring Boot] 스프링 배치 (Spring Batch) (0) | 2025.03.01 |
[Spring Boot] 멀티 모듈 프로젝트 (0) | 2025.02.26 |