반응형

분류 전체보기 130

Vector DB - Qdrant 를 활용하여 벡터 데이터 다뤄보기

1. Vector DB란?Vector DB는 데이터를 벡터(숫자 배열) 형태로 저장하고 벡터 간 유사도(Similarity) 를 계산해주는 AI 특화 데이터베이스입니다.텍스트, 이미지, 오디오처럼 비정형 데이터를 임베딩(Embedding) 모델을 통해 벡터로 변환하고 이 벡터들의 “의미적 거리”를 계산함으로써 의미 기반 검색(Semantic Search), 추천 시스템, RAG(Retrieval Augmented Generation) 등에 활용됩니다.대표적으로 많이 사용되는 Vector DB입니다.이름 특징 주요 사용 사례Pinecone완전 관리형 SaaS. 인프라 관리 불필요빠른 RAG 구축, 대규모 상용 서비스Qdrant오픈소스 기반, HTTP·gRPC 모두 지원로컬/클라우드 환경, Spring AI..

AI & LLM 2025.10.19

[Spring AI 공식문서 읽기] 3. Advisors API

Spring AI의 Advisors API는 Spring 애플리케이션에서 AI 기반 상호작용을 가로채고(intercept), 수정하고(modify), 향상(enhance)할 수 있는 유연하고 강력한 방법을 제공합니다.Advisors API를 활용하면 개발자는 더 정교하고, 재사용 가능하며, 유지 관리가 용이한 AI 컴포넌트를 만들 수 있습니다.주요 이점에는 반복되는 생성형 AI 패턴을 캡슐화하고, 대규모 언어 모델(LLM)에 보내고 받는 데이터를 변환하며, 다양한 모델과 사용 사례에서 이식성을 제공하는 것이 포함됩니다.아래 예제와 같이 ChatClient API를 사용해 기존 Advisor를 구성할 수 있습니다ChatMemory chatMemory = ... // Initialize your chat m..

AI & LLM 2025.10.14

[Spring AI 공식문서 읽기] 2. ChatClient API

0. OverviewSpring AI의 ChatClient는 AI 모델과 대화하기 위한 도구입니다.동기식과 스트리밍 방식을 모두 지원하고,Fluent API로 프롬프트를 쉽게 구성할 수 있습니다.프롬프트는 사용자 메시지와 시스템 메시지로 이루어지며, 실행 시점에 변수를 치환할 수 있는 플레이스홀더도 활용할 수 있습니다. 또한 사용할 AI 모델 종류와 temperature 값 같은 옵션을 통해 답변의 톤과 창의성을 조절할 수 있습니다.1. ChatClient 생성ChatClient 는 ChatClient.Builder 를 통해 생성할 수 있습니다.Spring Boot 환경에서는 자동 구성된 ChatClient.Builder 를 주입받아 생성할 수 있고, 프로그래밍적인 방법으로 직접 생성할 수 도 있습니다...

AI & LLM 2025.10.05

Spring AI 를 활용한 MCP 서버 구현 및 Claude AI에 적용하기

1. MCP란?Model Context Protocol의 약자로, AI 모델과 외부 데이터 소스를 연결하기 위한 표준 프로토콜LLM이 외부 시스템의 데이터나 기능에 접근할 수 있도록 하는 개방형 표준입니다.Tool과 Resource를 통해 AI가 실시간 데이터를 조회하거나 특정 작업을 수행할 수 있게 합니다.클로드 개발사인 Anthropic 이 주도하여 개발했으며, 다양한 언어의 SDK를 제공합니다.MCP는 다양한 통신 방식을 지원하여 유연한 구현이 가능합니다.HTTP 기반 JSON-RPC 방식으로 통신하며 STDIO(표준입출력), Streamable HTTP 방식을 지원합니다.초기에는 SSE(Server-Sent Events) 방식이 기본 스펙이었으나, Streamable HTTP로 변경되었고 SSE는..

AI & LLM 2025.10.03

[Spring AI 공식문서 읽기] 1. Spring AI 핵심 개념과 컨셉

Spring AI Document를 읽으며 공부한 내용을 정리한 글입니다. 1. Spring AI 소개Spring AI는 스프링 생태계에서 인공지능 기능을 쉽게 통합할 수 있도록 돕는 프레임워크입니다.Python 진영의 LangChain, LlamaIndex에서 영감을 받았지만 단순 이식이 아니라, Java/Spring 환경에 맞춘 독자적 접근을 취합니다.OpenAI, Anthropic, Microsoft, Amazon, Google 등 다양한 AI 모델 지원(Chat, Embedding, Text→Image, Audio, Moderation 등)구조화된 출력(POJO 매핑)과 RAG 구현을 위한 벡터 데이터베이스 연동(PostgreSQL PGVector, Pinecone, Redis, Milvus 등 ..

AI & LLM 2025.08.31

랭체인(Langchain) 기본 개념과 간단한 활용 예제

일반적인 백엔드 개발자 관점에서 학습한 내용을 정리한 글로 부정확한 내용이 있을수있습니다. LLM 공부와 LLM을 활용한 서비스 구현을 계획하면서 공부하면서 자연스럽게 파이썬 생태계에서 시작된 LangChain을 접하게 되었습니다. 예전 같으면 모델 API 연동, RAG용 외부 데이터 연결, 프롬프트 설계 등을 각각 구현했을 것입니다.LangChain은 프롬프트·체인·RAG·에이전트·툴까지 LLM 기반 서비스 전 과정을 아우르는 프레임워크/라이브러리 모음입니다.이 글에서는 제가 이해한 LangChain의 핵심과 간단한 활용 예제를 간단히 정리하겠습니다. 1. 모델 I/OLLM 과 상호작용 (Input, Output) 하기 위한 컴포넌트 영역LLM에 전달할 프롬프트 생성입력 임베딩 & RAG 검색 결과..

AI & LLM 2025.08.24

LLM 기본 개념

LLM 정의언어 모델링 (Language Modeling) 은 NLP의 하위 분야토큰을 기본 입력으로 한다.토큰이란 문장이나 텍스트에서 의미를 가지는 가장 작은 단위모델링 방법자동 인코딩 작업손상된 입력 내용으로부터 기존 문장을 재구성 하도록 하는 형태로 학습주로 문장 분류 또는 토큰 분류자기회귀 작업이전 토큰으로 다음 토큰을 예측 하도록 훈련텍스트 생성에 이상적이며 GPT가 자기회귀LLM 주요 특징트랜스포머 아키텍쳐 기반인코더: 원시 텍스트를 → 핵심 구성 요소로 분리 → 벡터로 변환, 어텐션을 사용하여 맥락 이해디코더: 어텐션을 사용하여 다음에 올 최적의 토큰을 예측하여 텍스트를 생성인코더로 텍스트를 잘 이해하고, 디코더로 잘 생성해내는 구조GPT 계열 LLM은 자기회귀 모델링으로 학습, 디코더만 있..

AI & LLM 2025.08.24

SSE를 활용해 웹에서 실시간 데이터 구독 기능 구현

프로젝트를 진행하다가 서버에서 주기적으로 발행하는 데이터를 클라이언트에서 실시간으로 받아 표시해주어야하는 기능을 구현할 일이 생겼다. 제일 먼저 생각났던건 웹소켓이었는데 물론 웹소켓으로도 구현은 가능하지만 웹소켓에서 지원하는 양방향 통신까지는 필요가 없고 서버 -> 클라이언트 방향으로의 단방향만 지원하면 돼서 다른 기술을 찾아보다가 SSE를 알게 되었다. SSE는 Server Send Events의 약자로 HTML5부터 사용하능한 표준 스펙이다. 말 그대로 서버에서 주기적으로 발행하는 이벤트를 클라이언트(브라우저)에서 구독할 수 있는 기술로 접속연결만 HTTP로 하고 자체 프로토콜로 통신하는 웹소켓과 달리 전체 과정을 HTTP로 수행한다. 사용하는 방법은 간단하다. 먼저 원리를 알기 위해 SSE 스펙에 ..

Spring Boot Managed Dependency 버전 변경

Spring Boot는 Spring Framework와 달리 프레임워크 빌드, 런타임 등에 필요한 의존성을 자동으로 관리해주는게 큰 장점중에 하나인데요. Spring Boot에서는 관련 있는 기능 및 의존성을 묶어 하나의 의존성으로 제공하고 개발자들은 필요한 의존성만 선택하여 사용하면 됩니다. 그 안에서 일어나는 라이브러리 간의 호환성, 중복되는 라이브러리로 인한 충돌 등으로부터 자유로워지죠. 이를 Spring Boot 진영에서는 Managed Dependency라고 부르며 아래 링크에서 어떤 의존성들을 관리하고 있는지 볼 수 있습니다. https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html 다만 가끔은..

Spring Boot Tomcat Access Log 필터링

Spring Boot Embedded Tomcat을 사용하면 Access Log를 남길수 있습니다.기본적으로는 비활성화 되어있고 server.tomcat.accesslog.enabled 옵션을 true로 주면 활성화 할 수 있습니다. Access Log는 해당 서버로 들어오는 모든 요청들을 로깅하는데 이 중 로그로 남기고 싶지 않은 건들이 있을 수 있습니다.저의 경우엔 외부 모니터링 서버에서 헬스체크를 위해 헬스체크 URL을 1초에 한번씩 호출했고, 엑세스 로그가 과도하게 남는 케이스였습니다. 톰캣 Access Log 스펙 중에, HttpServletRequest 객체의 Attribute 내 특정 키가 포함되있거나, 되있지 않을 경우 해당 요청에 대해서는 로깅을 하지 않도록 설정할 수 있는 기능이 있는데..