전체 글56 RAG(Retrieval-Augmented Generation)란? 동작 원리부터 Vector DB, Embedding까지 쉽게 이해하기 RAG(Retrieval-Augmented Generation)란? 동작 원리부터 Vector DB, Embedding까지 쉽게 이해하기AI 서비스를 공부하다 보면 가장 많이 등장하는 키워드 중 하나가 RAG(Retrieval-Augmented Generation) 입니다. ChatGPT, Claude와 같은 LLM을 활용하는 서비스에서는 거의 필수적으로 사용되는 기술이며, 최근에는 기업 내부 문서를 활용하는 AI 서비스나 AI Agent에서도 널리 사용되고 있습니다. 이번 글에서는 RAG가 왜 필요한지, 어떻게 동작하는지, Embedding과 Vector DB는 어떤 역할을 하는지까지 이해를 중심으로 정리해보겠습니다.RAG란?RAG(Retrieval-Augmented Generation)는 말 그대로 .. 2026. 7. 10. Spring AI MCP 시작하기 - Claude Desktop과 Spring MCP Server 첫 연동 Spring MCP Server 구현하기 (1) - Claude Desktop과 첫 연동 및 Tool 호출 최근 AI 관련 채용 공고를 보다 보면 MCP(Model Context Protocol) 서버 개발 경험이라는 내용을 자주 볼 수 있다. 처음에는 "MCP 서버를 만든다"는 것이 단순히 API 하나를 만드는 것인지, 아니면 별도의 서버를 구축하는 것인지 감이 오지 않았다. 그래서 가장 단순한 예제를 직접 구현하면서 MCP가 실제로 어떻게 동작하는지 하나씩 이해해보기로 했다. 이번 글에서는 Spring Boot 기반 MCP Server를 만들고 Claude Desktop과 연동하여 첫 번째 Tool을 호출하는 과정을 정리해본다.MCP(Model Context Protocol)란?기존 LLM은 학습된 .. 2026. 7. 7. 헥사고날 아키텍처, 왜 아직도 패키지 위치가 헷갈릴까? (domain / usecase / infra 정리) 헥사고날 아키텍처, 왜 아직도 패키지 위치가 헷갈릴까? (domain / usecase / infra 정리) 헥사고날 아키텍처(Hexagonal Architecture)를 적용하면서 가장 자주 했던 고민은 의외로 구조 자체보다 클래스 위치였다.특히 Outbox Pattern과 RabbitMQ 기반 비동기 파이프라인을 구현하면서 이런 질문이 계속 생겼다.ConsumerListener는 왜 infra일까?OutboxPoller는 왜 usecase일까?RetryPolicy는 domain일까, usecase일까?처음에는 패키지 이름을 외우려고 했다.domain = 엔티티usecase = 서비스infra = 구현체 하지만 이런 식으로 접근하면 새로운 클래스가 생길 때마다 다시 헷갈린다.결국 중요한 것은 패키지 이.. 2026. 7. 3. Outbox Pattern에서 동시성 제어: Unique Constraint vs Pessimistic Lock Outbox Pattern에서 동시성 제어: Unique Constraint vs Pessimistic LockOutbox Pattern에서 반드시 해결해야 하는 동시성 문제는 크게 두 가지다.동일 이벤트가 중복 저장되는 문제 (Create Race)여러 Poller가 동일 메시지를 동시에 처리하는 문제 (Ownership Race)문제 성격이 다르기 때문에 해결 방식도 달라진다.1. Create Race: Unique Constraint + UPSERT동일한 이벤트가 동시에 들어오면 같은 Outbox Message가 중복 저장될 수 있다.Request A → insertRequest B → insert 예를 들어 같은 idempotency_key를 가진 요청이 동시에 처리되면 중복 row가 생성될 위험.. 2026. 7. 2. 이전 1 2 3 4 ··· 14 다음