반응형
Spring AI란?
- 서버 개발자가 AI를 개발하기 위해서는 많은 복잡성과 러닝커브가 존재합니다.
- Spring AI는 AI 개발의 복잡성을 최소화하여 앞으로 Spring 개발자가 AI 개발의 생산성을 높이기 위한 프로젝트로 사용될 수 있을듯 합니다.
- 또한, AI 벤더(Open AI, Gemini 등)에 의존하지 않고 Spring에서 지향하는 추상화를 통해 이러한 기능들을 제공합니다.
이번 포스팅에서는 Spring AI에서 다루고 있는 요소들에 대해 간단히 알아보겠습니다.
Porterbale API
- AI 벤더들에 의존하지 않고, API call 방식을 통해 사용할 수 있는 기능을 제공해줍니다.
- 채팅, 텍스트-이미지 변환, 임베딩 모델을 위한 API 제공 및 동기/비동기 스트리밍 기능을 제공해줍니다.
POJO 기반의 구조화된 결과 값 제공
- 다음 사진과 같이 input / output 값에 대한 POJO 기반의 값을 통해 사용자의 파싱 복잡함을 덜어줍니다.
주요 Vecter Database 제공
- AI에서는 결과 값에 대한 확률적 접근을 위해 N차원의 데이터 정보를 저장하는 Vecter DB를 사용하는데요, 주요 Vecter DB 벤더사들에 대한 접근을 제공합니다.
- ex) Apache Cassandra, Azure Cosmos DB, Azure Vector Search, Chroma, Elasticsearch, GemFire, MariaDB, Milvus, MongoDB Atlas, Neo4j, OpenSearch, Oracle, PostgreSQL/PGVector, PineCone, Qdrant, Redis, SAP Hana, Typesense and Weaviate.
AI 모델 내 Tool 기능 제공
- AI 모델에게 외부 기능(tool)을 제공해서, 모델이 “어떤 기능을 실행하라”는 요청을 할 수 있게 하는 Tool 기능을 제공해줍니다.
- Tool의 경우, 다음과 같이 사용이 가능한데, 어노테이션 방식의 경우 description에 서술한 자연어를 통해 LLM에게 어떤 툴을 사용할지 알려주는 기능이라고 합니다.
class DateTimeTools {
@Tool(description = "Get the current date and time in the user's timezone")
String getCurrentDateTime() {
return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString();
}
}
ChatModel chatModel = ...
String response = ChatClient.create(chatModel)
.prompt("What day is tomorrow?")
.tools(new DateTimeTools())
.call()
.content();
System.out.println(response);
// 응답 값
Tomorrow is 2015-10-21.
Obsabability 제공
- AI 관련 작업의 수행 상태를 모니터링하고, 문제를 디버깅하고, 성능을 추적할 수 있게 돕는 도구들을 제공해줍니다.
- 해당 지표들은 sprign-actuator를 통해 prometheus 등의 모니터링 도구와 함께 사용할 수 있습니다.
- 성능 지표 도구는 다음과 같습니다.
컴포넌트 | Low‐cardinality 정보 | High‐cardinality 정보 / 옵션적으로 포함 가능한 정보 |
ChatClient | call() 또는 stream() 호출 시 시간(duration), 스트림 여부(stream true/false) 등 (Home) | 프롬프트 내용 (gen_ai.prompt), Advisor 이름들의 목록, 대화(conversation) ID 등. (Home) |
ChatModel | 어떤 모델(provider) 사용했는지, 요청 및 응답에 걸린 시간 등 (Home) | 입력/출력 토큰 수(input_tokens, output_tokens), 모델 설정(penalty, temperature, etc) 등도 가능함. (Home) |
Tool Calling | 툴 호출이 있었는지, 툴 이름, 호출 수행 시간 등 (Home) | 호출 인자(arguments), 리턴값(result) 등을 포함 가능 (단 기본은 off) (Home) |
EmbeddingModel, ImageModel | 유사하게 어떤 embedding/image 모델을 썼는지, 수행 시간 등 (Home) | 입력/출력 형식, 프롬프트/파라미터, 토큰 사용량 등 (지원되는 프로바이더에 한정됨) (Home) |
VectorStore | 쿼리(query), 저장(add), 제거(remove) 같은 작업(operation)의 지연 시간(latency), 성공/실패 여부 등 (Home) | 쿼리 필터(metadata filter), 반환된 문서/응답, 유사도 기준(similarity threshold) 등 옵션적으로 포함됨. (Home) |
ETL 제공
- LLM(RAG) 기반 벡터 검색을 위한 문서 전처리 제공
- Spring AI의 ETL Pipeline은 기존 Spring 생태계에 있던 개념은 아니고, Spring AI 프로젝트에서 처음 공식적으로 구조화해서 제공한 기능입니다.
결론
- 오늘은 Spring AI에 대해 어떤 기능들을 지원하는지 간단히 살펴보았는데요, 파이썬에서 Laingchain 기반의 프로젝트를 진행했던 것 보다 더 간단히 사용할 수 있을 것 같지만, 어떤점들이 미흡한지 조금 더 살펴봐야겠습니다.
반응형
LIST
'Spring Framework > AI' 카테고리의 다른 글
Spring AI - Advisor API (0) | 2025.09.30 |
---|---|
Spring AI - Structured Output Converter (0) | 2025.09.27 |
Spring AI - ChatClient API 살펴보기 (0) | 2025.09.21 |
Spring AI - Prompt와 Message (0) | 2025.09.21 |
Spring AI - Chat Client API 시작하기 (0) | 2025.09.20 |