Spring AI 프로젝트 마무리: 로컬 LLM 챗봇의 한계와 향후 발전 로드맵 (7편)

[Dev-Fortune] 시리즈 다시보기 1편: 기획부터 스택 선정까지 2편: 로컬 LLM Ollama 연동 3편: RAG와 Vector Store 구축 4편: 프롬프트 엔지니어링 실전 5편: 스트리밍 API 구현 6편: 전체 워크플로우 분석 1. 서론: 프로젝트를 마무리하며 시니컬한 개발자 챗봇 ‘Dev-Fortune’을 통해 Spring AI와 RAG의 가능성을 엿보았습니다. 마지막으로 이 프로젝트의 한계를 짚어보고 고도화 로드맵을 그려봅니다. 2. 미래 고도화 로드맵 (AS-IS vs TO-BE) 현재의 메모리 기반 구조에서 영구 저장소와 맥락 인지 능력을 갖춘 시스템으로의 진화 방향입니다. ...

March 23, 2026 · 1 min · 164 words · Chanyeol

Spring AI RAG 워크플로우 분석: 사용자 질문부터 AI 답변까지의 여정 (6편)

[Dev-Fortune] 시리즈 다시보기 1편: 기획부터 스택 선정까지 2편: 로컬 LLM Ollama 연동 3편: RAG와 Vector Store 구축 4편: 프롬프트 엔지니어링 실전 5편: 스트리밍 API 구현 1. 서론: 조각난 퍼즐을 하나로 합치기 데이터의 이동이 일어나는 찰나의 순간, 서버 내부에서 일어나는 유기적인 상호작용을 파헤쳐 보겠습니다. 2. 전체 워크플로우 시퀀스 (Deep-Dive) 사용자의 엔터 키 한 번이 답변으로 돌아오기까지의 7단계 여정입니다. sequenceDiagram autonumber User->>Controller: 고민 입력 (JSON) Controller->>Service: 사주 분석 요청 Service->>VectorStore: 고민 기반 유사도 검색 VectorStore-->>Service: 관련 사주 데이터 반환 Service->>AI: 프롬프트 조합 후 전달 (System+User) AI-->>Controller: 스트리밍 답변 생성 (Flux) Controller-->>User: SSE 응답 (실시간 텍스트) 3. 데이터 흐름의 5단계 요청 수신: JSON 고민 데이터 접수. 의미 검색: 사주 데이터 조각 탐색. 프롬프트 조합: 페르소나 + 지식 + 질문 결합. 추론 및 생성: AI의 인격이 투영된 답변 생성. 스트리밍 응답: 차가운 조언의 실시간 전달. 결국 데이터가 지능을 만들고, 프롬프트가 성격을 만듭니다. ...

March 22, 2026 · 1 min · 146 words · Chanyeol

프롬프트 엔지니어링 실전: AI에게 시니컬한 개발자 페르소나 주입하기 (4편)

[Dev-Fortune] 시리즈 다시보기 1편: 기획부터 스택 선정까지 2편: 로컬 LLM Ollama 연동 3편: RAG와 Vector Store 구축 1. 서론: AI의 ‘인격’은 어디서 오는가? 지식만 있는 AI는 백과사전일 뿐입니다. 우리가 원하는 “시니컬한 시니어 개발자” 인격을 형성하고 답변 형식을 강제하는 프롬프트 엔지니어링을 살펴보겠습니다. 2. 프롬프트 조합 구조 시스템 지침(Persona)과 검색된 데이터, 사용자의 질문이 하나로 섞이는 과정입니다. graph TD A[Persona: 실리콘밸리 개발자] + B[Rules: 반말/두문장] --> E[System Message] C[Retrieved Saju Data] + D[User Message] --> F[User Message with Context] E & F --> G((AI Model)) G --> H[Final Response] 3. 시스템 프롬프트(System Prompt) 설계 apiContext를 통해 페르소나를 정의하고, 건조하고 시니컬한 반말 말투를 강제합니다. 특히 출력 형식을 엄격하게 통제하여 UI 일관성을 유지합니다. ...

March 20, 2026 · 1 min · 171 words · Chanyeol

Spring AI RAG 구현하기: SimpleVectorStore로 전문 지식 데이터 주입 (3편)

[Dev-Fortune] 시리즈 다시보기 1편: 기획부터 스택 선정까지 2편: 로컬 LLM Ollama 연동 1. 서론: AI는 어떻게 사주를 ‘공부’하는가? AI에게 새로운 지식을 가르치는 방법 중 가장 경제적이고 정확한 RAG(Retrieval-Augmented Generation) 방식을 살펴봅니다. 질문이 들어올 때마다 관련 내용을 찾아서 읽어주며 답변하게 하는 원리입니다. 2. 데이터 주입 프로세스 (Data Ingestion) JSON 파일이 어떻게 벡터화되어 메모리에 저장되는지 그 흐름을 도식화했습니다. flowchart LR A[(sajuAPI.json)] --> B[DataLoader] B --> C[Text 정제: Key-Value형식] C --> D[Embedding Model] D --> E{SimpleVectorStore} E --> F[RAM Memory] style F fill:#f96,stroke:#333,stroke-width:2px 3. SimpleVectorStore와 DataLoader 우리 프로젝트는 별도의 DB 없이 메모리 기반의 SimpleVectorStore를 사용합니다. UnidocuDataLoader는 서버 기동 시점에 JSON 데이터를 읽어 벡터로 변환하여 주입합니다. ...

March 19, 2026 · 1 min · 149 words · Chanyeol

로컬 LLM Ollama와 Spring Boot 연동하기: 서버 설정과 성능 최적화 (2편)

[Dev-Fortune] 시리즈 다시보기 1편: 기획부터 스택 선정까지 1. 서론: 왜 유료 API 대신 로컬 LLM인가? 이번 2편에서는 본격적인 구현의 첫 단추인 AI 모델 환경 구축을 다룹니다. 우리는 비용 제로, 데이터 보안, 완전한 통제를 위해 Ollama를 활용한 로컬 LLM 방식을 선택했습니다. 2. 로컬 AI 서버 연동 구조 Spring Boot가 로컬에서 실행 중인 Ollama와 통신하는 물리적 구조입니다. graph LR subgraph "Local PC" A[Spring Boot App] -- "HTTP Post (11434)" --> B[Ollama Server] B -- "Model Load" --> C[qwen2.5:3b] subgraph "Application.properties" D[Base-URL] E[Temperature: 0.4] F[Model Name] end D -.-> A E -.-> A end 3. Spring Boot 프로젝트 설정: application.properties application.properties 파일에 담긴 설정값들을 하나씩 뜯어보며 그 의미를 파헤쳐 보겠습니다. ...

March 18, 2026 · 1 min · 167 words · Chanyeol

Spring AI와 Ollama로 만드는 AI 개발자 사주 챗봇: 기획부터 스택 선정까지 (1편)

1. 프롤로그: 왜 ‘AI 개발자’ 사주인가? 전통적인 사주 풀이는 어렵고 따분합니다. “올해는 물의 기운이 강하니…” 같은 말은 현대의 개발자들에게는 다소 와닿지 않죠. 하지만 만약 **“실리콘밸리 출신의 천재 개발자”**가 당신의 인생을 코드로 보고 ‘디버깅’해준다면 어떨까요? 이 프로젝트는 바로 그 엉뚱한 상상에서 시작되었습니다. 감정 섞인 위로 대신, 건조하고 시니컬한 말투로 당신의 사주를 “안티 패턴"과 “배드 해빗(Bad Habit)“으로 분석해 주는 챗봇, **‘Dev-Fortune’**입니다. 2. 프로젝트 시스템 구조도 전체적인 데이터 흐름과 기술 스택을 한눈에 살펴보겠습니다. ...

March 17, 2026 · 1 min · 192 words · Chanyeol
1