////
Search

Spring AI 공부하기 1편

생성일
2025/08/14 08:44
태그
Java

시작하며

Chat GPT가 등장하며 이 세상을 바꾼지 2년이라는 시간이 흘렀고 Chat GPT, Gemini, Cluade 등 다양한 서비스가 우리 일상에 스며들고 있다.
특히 코딩할때 유용하게 사용하고 있는데 못 미더웠던 초기와 달리 이제는 무서울 정도로 정교하고 빠르게 발전하는게 느껴진다.
그리고 그런 발전 중 LLM을 이용한 서비스 개발은 여러 방면으로 진화 했는데 최근은 크게 2가지 방향으로 서비스가 좁혀진것 같다
하나는 RAG, 그리고 또 하나는 MCP다.

LLM의 한계

LLM은 자신이 학습한 내용말고는 대답하지 못하고, 실제 알지 못하는 내용도 답변하는 환각현상도 문제가 된다.
기업에서 LLM을 도입하고 싶고, 자신들의 데이터를 전문적으로 학습시키고 싶을 것이다 그렇다면 일반적으로 학습 시키는것을 떠올릴텐데 이게 참 쉽지않다.

파인튜닝 (Fine-Tunring)

하이퍼파라미터를 통해서 레이블링 한 데이터들을 학습시켜 LLM의 가중치(weights)를 특정 데이터셋에 맞게 미세 조정하여, 모델의 응답 스타일, 특정 작업 수행 능력, 말투 등을 바꾸는 것을 의미한다.
그런데 이게 쉽지 않은 이유는 크게 2가지로 볼 수 있다.

AI 전문 인력이 필요하다.

LLM의 기본 구조인 트랜스포머에 대해서 이해하고 파라미터를 튜닝할 수 있는 전문가가 필요하다.
물론 큰 기업이야 AI전문가를 채용하면 그만이고, 부서를 만들어서 시키면 그만일 수 있지만 대다수 기업들은 불확실성에 이런 큰 규모의 자금을 투자하는것을 꺼릴것이다.

시간과 돈이 필요하다.

AI인력과는 별개로 데이터를 레이블링하고, 학습시키는데 시간과 돈이 필요하다.
자원이 무한정 있지않은 이상 이 또한 사실 중소기업들이 투자하기 어려운 부분이라고 할 수 있다.

그래서 등장한 대안 RAG

RAG를 소개하는 AWS 페이지를 살펴보면 아래와 같은 이야기를 확인할 수 있다.
출처 : AWS Rag란?
결과적으로 새로운 내용을 학습시키는 대신 프롬프트에 지식을 주입해서 전달하는 것이다.
이를 통해서 적은 인력과 자금으로도 손쉽게 특화형 LLM 서비스를 만들어낼 수 있다.
그렇다고 RAG가 마냥 장점만 있는건 아니다.

토큰의 비용

기본적으로 토큰이 상당히 많이든다.
전달해야하는 텍스트나 지식이 증가하니 자연스럽게 이에 대한 연산 비용이 많이 들어가는 것이다.

지식의 Embedding이 필요하다

회사의 지식을 전달하기 위해서는 Vector DB의 임베딩이 필요하다.
해당 임베딩은 이후 상세히 다뤄나갈 것으로 우선은 별도의 지식 저장 공간이 필요하다고만 인지하면 될것같다.

그래서 등장한 RAG Framework

RAG 초창기엔 이렇다할 도구가 없었다.
사람들은 직접 임베딩부터 RAG 워크플로까지 구성했는데 이게 여간 노가다가 아니었다.

혜성처럼 등장한 LangChain

랭체인의 로고
그러다 혜성성처럼 등장한이가 있었으니 바로 LangChain이다.
Python 기반의 프레임워크인데 업계에서는 사실상 표준으로 자리잡고 있는듯 하다.
주요 기능은 역시 확장 및 추상화에 있다고 본다.
쉽게 말하면 “넌 워크플로 구성에만 신경써 나머지 레벨은 내가 알아서 처리할게” 정도인데 다양한 기능과 RAG 등 구성을 추상화하여 쉽게 구현이 가능하다.
선점 효과도 있어서 그런지 꽤나 가파르게 상승한걸 확인할 수 있다.

그렇다면 Java 진형은?

이미 엔터프라이즈 웹 서비스 프레임워크의 대다수는 Java/Spring이 차지하고 있다.
LangChain에서도 이를 신경써서 그런지 Langchain4j라는 프로젝트도 만들어졌다.
그렇지만 자바 진형은 뭔가 표준이랄것 없이 춘추전국시대를 마지한 느낌이었는데
거기서 등장한 스프링 진영에서 공식적으로 지원하는 AI 애플리케이션 개발 프레임워크인 Spring-AI가 등장한다.

그렇다면 이제 표준화 된것인가?

아마 그렇게 될 가능성이 높다.
그런데 아직 갈길이 너무 멀다.
spring-ai vs langchain4j
실제로 Langchain4j와 스타수만 비교해봐도 관심도가 점점 높아지고는 있지만 갈길이 멀다는것도 보여주긴 한다…

그렇다면 그냥 Python 하는게 맞지않나?

많이 동의한다. 앞으로도 발전은 파이썬이 훨씬 빠르고 애자일하게 적용될 것이다.
하지만 전통적으로 사용되온 JVM의 엔터프라이즈 구성도 무시할게 못된다고 생각한다.
부족해도 불편해도 그건 지금이고 미래엔 점점 따라잡을 수 있을것이라고 본다.

결론은?

난 자바진형의 개발자다.
물론 파이썬도 깊게는 아니지만 어느정도 할 줄 안다. (당연히 본업으로 파이썬을 하는 사람만큼은 못한다)
랭체인을 써서 사내에서 프로젝트를 진행했지만, 사실 구조화와 강타입이 특징인 자바는 비즈니스를 구현하는데에 있어서는 파이썬보다는 뛰어난 환경을 가지고 있다고 생각한다.
때문에 실제 프로덕트에서는 마이크로 서비스로 랭체인을 그리고 재미로는 Spring AI를 사용해볼 생각이다.
물론 재미로도 랭체인은 훌륭한 도구이기에 매우 추천하지만 일단 목표는 많이들 사용하지 않는 Spring AI를 통해서 오픈소스 Agent를 만들어볼 생각이다.