
스프링 AI는 무슨 기술일까? 스프링 AI의 사용법에 대해 학습하기 전에 스프링 AI라는 기술 그 자체에 대해 알아보고자 한다. 이 글은 스프링 AI 공식 문서(https://docs.spring.io/spring-ai/reference/)를 참고하여 작성되었다.

스프링 AI 프로젝트는 스프링 부트, 스프링 클라우드 등 스프링의 여러 프로젝트 중 하나이다. 스프링 AI 프로젝트의 목표는 간단하게 인공지능 기능을 스프링 애플리케이션에 통합하는 것이다. 즉, 스프링 AI는 AI 통합의 근본적인 과제인 기업 데이터와 API를 AI 모델에 연결하는 문제를 해결하고자 한다.
이 프로젝트는 LangChain, LlamaIndex 같은 파이썬 프로젝트에서 영감을 받았지만, 이러한 프로젝트를 직접 포팅한 것은 아니라고 한다. 이 프로젝트는 차세대 생성형 AI 애플리케이션이 파이썬 개발자만을 위한 것이 아니라 다양한 프로그래밍 언어에 걸쳐 보편화될 것이라는 믿음에서 시작되었다고 한다. 실제 기업 백엔드에서는 스프링을 많이 사용하는데, AI 기능도 결국 일반 백엔드 애플리케이션의 일부가 될 것이고, 스프링 개발자도 파이썬으로 넘어가지 않고 스프링 생태계 안에서 AI 기능을 구현할 수 있어야 한다는 생각에서 스프링 AI가 만들어진 것으로 보인다.
스프링 AI는 AI 애플리케이션 개발의 기반이 되는 추상화 계층을 제공한다. 이러한 추상화 계층은 다양한 구현체를 가지고 있어 최소한의 코드 변경으로 구성 요소를 쉽게 교체할 수 있다. 개인적으로 스프링 프로젝트의 핵심은 추상화라고 생각한다. 다른 스프링 프로젝트들을 봐도 그 근간에는 추상화가 자리하고 있다. 스프링 AI 역시 AI 관련 파트를 추상화해서 유연하게 교체할 수 있도록 만들었다.
스프링 AI는 다음과 같은 기능을 제공한다.
- 채팅, text-to-image 변환, 임베딩 모델에 대해 다양한 AI 제공업체에서 사용 가능한 이식성 있는 API를 지원한다. 동기식 및 스트리밍 API 옵션을 모두 지원하며, 모델별 기능에도 접근할 수 있다.
- Anthropic, OpenAI, Microsoft, Amazon, Google, Ollama 등 주요 AI 모델 제공업체를 모두 지원한다. 지원되는 모델 유형은 다음과 같다.
- 채팅 자동 완성
- 임베딩
- text-to-image 변환
- 음성 인식
- text-to-speech 변환
- 통제 기능(Moderation)
- 구조화된 출력 - AI 모델 출력을 POJO로 매핑
- 주요 벡터 데이터베이스 제공 업체를 모두 지원한다.
- 벡터 저장소 제공업체 전반에 걸쳐 사용 가능한 portable API를 제공하며, SQL과 유사한 메타데이터 필터 API를 포함한다.
- 도구/함수 호출 - 모델이 클라이언트 측 도구 및 함수의 실행을 요청하여 필요한 실시간 정보에 접근하고 필요한 조치를 취할 수 있도록 한다.
- 관찰 가능성 - AI 관련 작업에 대한 인사이트를 제공한다.
- 데이터 엔지니어링을 위한 문서 수집 ETL 프레임워크
- AI 모델 평가 - 생성된 콘텐츠를 평가하고 잘못된 응답을 방지하는 데 도움이 되는 유틸리티.
- AI 모델 및 Vector Store 용 Spring Boot Auto Configuration 및 Starters
- ChatClient API - WebClient 및 RestClient API와 유사한 관용적인 방식으로 AI 채팅 모델과 통신하기 위한 Fluent API
- Advisors API - 반복되는 생성형 AI 패턴을 캡슐화하고, 언어 모델(LLM)로 주고받는 데이터를 변환하며, 다양한 모델 및 사용 사례에 걸쳐 이식성을 제공한다.
- 채팅 대화 메모리 및 검색 증강 생성(RAG) 지원
이처럼 스프링 AI는 AI를 스프링 애플리케이션에 추가하기 위해 필요한 다양한 기능을 제공한다. 또한 이 기능들을 추상화 해서 제공하기 때문에 유연하게 사용할 수 있다. 스프링 진영의 개발자 입장에서는 AI 기능을 위해 굳이 파이썬으로 넘어가지 않아도 된다는 장점이 있다.