☞ Spring AI란?
Spring AI는 AI 엔지니어링을 위한 애플리케이션 프레임워크입니다.
Spring AI 프로젝트의 목표는 불필요한 복잡성 없이 인공 지능 기능을 통합하는 애플리케이션 개발을 간소화하는 것을 목표로 합니다.
☞ Spring AI의 탄생 배경
Spring AI 프로젝트는 생성형 AI 애플리케이션의 차세대 물결이 Python 개발자만을 위한 것이 아니라 다양한 프로그래민 언어 전반에 걸쳐 널리 사용될 것이라는 믿음으로 설립되었습니다.
기본적으로 Spring AI는 AI 애플리케이션 개발을 위한 가반이 되는 추상화를 제공합니다. 이러한 추상화에는 여러 가지 구현이 있으므로 최소한의 코드 변경으로 구성 요소를 쉽게 교체할 수 있습니다.
☞ Spring AI의 기능
Spring AI는 다음과 같은 기능을 제공합니다.
⦁ OpenAI, Microsoft, Amazon, Google 등 모든 주요 모델 제공업체를 지원합니다.
⦁ 지원되는 모델 유형은 Chat 및 Text to Image이며 앞으로 더 많은 모델이 추가될 예정입니다.
⦁ Chat 및 Embedding 모델을 위한 AI 제공업체 간 이식 가능한 API입니다. 동기식 및 스트림 API 옵션이 모두 지원합니다. 모델별 기능에 엑세스하기 위한 드롭다운도 지원됩니다.
⦁ AI 모델 출력을 POJO에 매핑합니다.
⦁ Azure Vector Search, Chroma, Milvus, Neo4j, PostgreSQL/PGVector, PineCone, Qdrant, Redis 및 Weaviate와 같은 모든 주요 벡터 DB 공급자를 지원합니다.
⦁ 이식 가능한 새로운 SQL 유사 메타데이터 필터 API를 포함하여 벡터 저장소 제공자 전반에 걸쳐 이식 가능한 API입니다.
⦁ 함수 호출
⦁ AI 모델 및 벡터 저장소를 위한 Spring Boot 자동 구성 및 스타터
⦁ 데이터 엔지니어링을 위한 ETL 프레임워크
☞ Spring AI API
Spring AI API는 광범위한 기능을 포함합니다. 각 기능을 간단하게 소개합니다.
⦁ 채팅 완료 API: 채팅 완료 API는 개발자에게 AI 기반 채팅 완료 기능을 애플리케이션에 통합할 수 있는 기능을 제공합니다.
⦁ Embedding API: Embedding Client 인터페이스는 AI 및 기계 학습의 Embedding 모델과 직접 통합되도록 설계되었습니다.
⦁ 이미지 생성 API: 이는 이미지 생성에 특화된 다양한 AI 모델과 상호 작용하기 위한 간단하고 이식 가능한 인터페이스로 설계되어 개발자가 최소한의 코드 변경으로 다양한 이미지 관련 모델 간에 전환할 수 있습니다.
⦁ Transcription API: Spring AI는 OpenAI의 Transcription API를 지원합니다.
⦁ 벡터 DB: 벡터 DB는 AI 애플리케이션에서 필수적인 역할을 하는 특수한 유형의 데이터베이스입니다.
⦁ 함수 호출 API: ChatGPT와 같은 AI 모델에 기능 지원을 통합하면 모델이 클라이언트 측 기능의 실행을 요청할 수 있으므로 필요에 따라 동적으로 작업을 수행할 수 있습니다.
⦁ 프롬포트: 프롬포트는 AI 모델이 특정 출력을 생성하도록 안내하는 입력입니다.
⦁ 출력 Parser: OutputParser 인터페이스를 사용하면 출력을 java 클래스에 매핑하거나 AI 모델의 문자열 기반 출력에서 값 배열로 매핑하는 등 구조화된 출력을 얻을 수 있습니다.
⦁ ETL 파이프라인: ETL 프레임워크는 RAG 사용 사례 내에서 데이터 처리의 Backbone 역할을 합니다.
⦁ 일반 모델 API: 모든 AI 모델 클라이언트에 대한 기반을 제공하기 위해 일반 모델 API가 생성되었습니다. 이를 통해 공통 패턴을 따라 Spring AI에 새로운 AI 모델 지원을 쉽게 제공할 수 있습니다.
☞ Spring AI가 사용하는 핵심 개념
다음은 Spring AI가 사용하는 핵심 개념을 간단하게 소개합니다.
⦁ 모델: AI 모델은 정보를 처리하고 생성하도록 설계된 알고리즘으로, 종종 인간의 인지 기능을 모방합니다. 대규모 데이터 세트에서 패턴과 통찰력을 학습함으로써 이러한 모델은 예측, 텍스트, 이미지 또는 기타 출력을 만들어 산업 전반에 걸쳐 다양한 애플리케이션을 향상시킬 수 있습니다.
⦁ 프롬포트: 프롬프트는 AI 모델이 특정 출력을 생성하도록 안내하는 언어 기반 입력의 기초 역할을 합니다.
⦁ 프롬포트 템플릿: 효과적인 프롬프트를 생성하려면 요청의 컨텍스트를 설정하고 요청의 일부를 사용자 입력에 특정한 값으로 대체해야 합니다. 이 프로세스에서는 신속한 생성 및 관리를 위해 기존의 텍스트 기반 템플릿 엔진을 사용합니다.
⦁ Embedding: Embedding은 텍스트를 숫자 배열 또는 벡터로 변환하여 AI 모델이 언어 데이터를 처리하고 해석할 수 있도록 합니다.
⦁ 토큰: 토큰은 AI 모델 작동 방식의 구성 요소 역할을 합니다. 입력 시 모델은 단어를 토큰으로 변환합니다. 출력 시 토큰을 다시 단어로 변환합니다.
⦁ 출력 구문 분석: AI 모델의 출력은 JSON 형식으로 응답을 요청하더라도 String으로 도착합니다. 출력 구문 분석은 주어진 텍스트를 처리하여 그것이 나타내는 의미를 이해하고, 필요한 정보를 추출합니다.
⦁ 데이터를 AI 모델로 가져오기: GPT 3.5/4.0 데이터 세트는 2021년 9월까지만 연장됩니다. 이후의 데이터를 통합하기 위한 Fine Tuning, Prompt Stuffing, Function Calling 세 가지 기술이 있습니다.
⦁ 검색 증각 생성: 검색 증강 생성(RAG)은 정확한 AI 모델 응답을 위해 관련 데이터를 프롬프트에 통합하는 문제를 해결하기 위해 등장한 기술입니다.
⦁ 함수 호출: LLM은 훈련 후 고정되어 오래된 지식으로 이어지며 외부 데이터에 엑세스하거나 수정할 수 없습니다. 함수 호출 매커니즘은 이러한 단점을 해결합니다.
⦁ AI 응답 평가: 이 평가 프로세스에는 생성된 응답이 사용자의 의도 및 컨텍스트와 일치하는지 분석하는 작업이 포함됩니다.
자세한 내용은 스프링 AI 공식문서(https://docs.spring.io/spring-ai/reference/index.html)에서 확인하실 수 있습니다.