| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 스프링 부트
- 스프링 컨테이너
- DI
- 생성자 주입
- SQL
- 스프링
- 싱글톤
- 스프링 부트 입문
- thymeleaf
- java
- db
- mybatis
- 스프링 빈
- Effective Java
- kafka
- Javascript
- 스프링부트
- DIP
- springboot
- 스프링 프레임워크
- resultMap
- 필드 주입
- assertThrows
- @Configuration
- sqld
- JPA
- 스프링 부트 기본
- jdbc
- spring
- assertThat
- Today
- Total
목록전체 글 (318)
선 조치 후 분석
들어가며"클라우드"라고 하면 보통 AWS 같은 퍼블릭 클라우드를 먼저 떠올리게 된다. 하지만 실제로는 온프레미스에서도 클라우드처럼 운영하는 방식이 있고, 클라우드 서비스도 IaaS/PaaS/SaaS로 역할이 나뉘어 있다. 여기에 쿠버네티스를 안 쓰고도 비슷한 효과를 낼 수 있는 방법까지 정리해본다.IaaS / PaaS / SaaS클라우드 서비스 모델을 "내가 직접 관리하는 범위가 얼마나 되나"로 구분한 것이다. 위로 올라갈수록 내가 신경 쓸 게 줄어들고, 플랫폼이 대신 해주는 게 늘어난다.온프레미스: 하드웨어, OS, 미들웨어, 앱, 데이터를 전부 직접 관리 (예: 직접 산 서버에 직접 구축)IaaS (Infrastructure as a Service): 하드웨어와 가상화 계층만 플랫폼이 제공, OS부터..
들어가며오늘 RAG 파이프라인에 임베딩 모델을 붙이면서 챗 모델(Nemotron)과 임베딩 모델(nemotron-3-embed)을 같이 다뤘는데, 둘이 완전히 다른 모델이라는 걸 확인했다. "LLM"이라는 말로 다 뭉뚱그려 부르지만 실제로는 역할별로 나뉜 여러 종류의 모델이 있어서, 자주 마주치는 것들을 정리해본다.1. 생성형(Chat/Generative) 모델흔히 "LLM"이라고 하면 떠올리는 그 모델이다. 입력 뒤에 이어질 텍스트를 예측해서 생성한다. 질문에 답하거나, 글을 요약하거나, 코드를 짜는 등 "결과물을 만들어내는" 모든 작업에 쓰인다.예: GPT, Claude, NVIDIA Nemotron 계열입력: 프롬프트(텍스트) / 출력: 생성된 텍스트2. 임베딩(Embedding) 모델텍스트를 의미..
들어가며RAG(검색 증강 생성) 파이프라인을 직접 만들어보면서 가장 많이 헷갈렸던 개념이 임베딩이었다. "벡터로 바꾼다"는 말은 들어봤는데, 정확히 뭘 어떻게 바꾸고 그걸로 뭘 하는 건지 정리해본다.임베딩(Embedding)이란임베딩은 텍스트(단어, 문장, 문서)를 숫자로 이루어진 벡터로 바꾸는 것을 말한다. 예를 들어 "OpenSearch"라는 문장을 [0.12, -0.05, 0.88, ...] 같은 실수 배열로 바꾸는 것이다.이때 핵심은 단순히 숫자로 바꾸는 게 아니라, 의미가 비슷한 텍스트는 벡터 공간에서 서로 가까운 위치에 놓이도록 바꾼다는 점이다.왜 필요한가 - 키워드 매칭의 한계전통적인 검색(SQL의 LIKE, 단순 키워드 매칭)은 문자열이 겹쳐야만 찾을 수 있다."포트 번호"로 검색 → "포..
들어가며업무에서 파일 저장소로 MinIO를 마주쳤는데 제대로 정리해본 적이 없어서, 개념부터 실무에서 쓰이는 방식까지 한 번에 정리한다.오브젝트 스토리지가 뭔가파일을 저장하는 방식은 크게 세 가지로 나뉜다.블록 스토리지: 디스크를 블록 단위로 잘라서 제공. DB 서버의 디스크처럼 저수준 I/O가 필요할 때 쓴다.파일 스토리지: 우리가 흔히 아는 디렉토리/파일 구조(NFS 같은). 계층 구조가 있다.오브젝트 스토리지: 파일(데이터) + 메타데이터 + 고유 Key를 하나의 "오브젝트"로 묶어서 평평한(flat) 네임스페이스인 "버킷"에 저장한다. 디렉토리 개념이 없고, Key 문자열이 경로처럼 보일 뿐이다.대용량 비정형 데이터(이미지, 동영상, 로그, 백업 파일, AI 파이프라인의 원본 문서 등)를 다룰 때..
최근 기업 보안 이슈로 인해 외부 API(OpenAI 등)를 쓰지 않고 로컬에서 LLM을 구동하려는 수요가 많습니다.오늘은 S3(MinIO), OpenSearch, Ollama를 활용해 자바 환경에서 간단한 RAG 시스템을 구축한 과정을 공유합니다.1. 전체 아키텍처본 시스템은 데이터 수집 → 벡터화 → 저장 → 검색 → 답변 생성의 5단계 흐름을 가집니다.Storage: MinIO (S3 compatible)Vector DB: OpenSearchLLM Engine: Ollama (Llama 3)Framework: LangChain4j2. 핵심 기술 스택 및 역할기술역할비고MinIO원본 데이터(txt) 저장소S3 호환 로컬 스토리지OpenSearch벡터 데이터 및 텍스트 검색지식 창고 역할Ollama (..
먼저 간단하게 요약하면, 세션스토리지(SessionStorage)는 '일회용 포스트잇' 같고, 로컬스토리지(LocalStorage)는 '지워지지 않는 메모장' 같다고 표현할 수 있을 거 같다.두 저장소 모두 브라우저 내부에 데이터를 저장하는 공간이지만, 데이터가 "언제까지 유지되는가"와"범위가 어디까지인가"에서 큰 차이가 있다.개념도 (Storage Structure)● 브라우저 내부는 아래와 같은 구조로 데이터를 관리한다.① 로컬스토리지 (LocalStorage) → 도메인별로 할단된 영구적인 서랍장 (브라우저를 꺼도 유지)② 세션스토리지 (SessionStorage) → 탭마다 할당된 임시 포스트잇 (탭을 닫으면 파기)③ 쿠키 (Cookie) → 서버와 주고받는 작은 증표 (용량이 작고 만료일이 있음..
