| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스프링 프레임워크
- 스프링 부트 입문
- resultMap
- 스프링 부트 기본
- mybatis
- JPA
- assertThat
- 스프링 컨테이너
- springboot
- thymeleaf
- DIP
- 스프링
- 스프링부트
- 싱글톤
- kafka
- jdbc
- SQL
- DI
- 생성자 주입
- java
- Effective Java
- 스프링 부트
- spring
- @Configuration
- 스프링 빈
- db
- 필드 주입
- assertThrows
- sqld
- Javascript
- Today
- Total
목록전체 글 (316)
선 조치 후 분석
임베딩(Embedding)이란 임베딩은 텍스트(단어, 문장, 문서)를 숫자로 이루어진 벡터로 바꾸는 것을 말한다. 예를 들어 "OpenSearch"라는 문장을 [0.12, -0.05, 0.88, ...] 같은 실수 배열로 바꾸는 것이다. 이때 핵심은 단순히 숫자로 바꾸는 게 아니라, 의미가 비슷한 텍스트는 벡터 공간에서 서로 가까운 위치에 놓이도록 바꾼다는 점이다. 왜 필요한가 - 키워드 매칭의 한계 전통적인 검색(예: SQL의 LIKE, 단순 키워드 매칭)은 문자열이 겹쳐야만 찾을 수 있다. "포트 번호"로 검색하면 "포트 번호"라는 단어가 들어간 문서만 찾고, 문서에 "포트 번호" 대신 "port"라고만 적혀 있으면 못 찾는다. 반면 임베딩 기반 검색은 "포트 번호"와 "port"를 의미적으로 가까운..
들어가며업무에서 파일 저장소로 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) → 서버와 주고받는 작은 증표 (용량이 작고 만료일이 있음..
개발을 진행하면서 log4j / slf4j / Logback 을 왜 사용하는지 그리고 각각의 개념을 정리했다. SLF4J (Simple Logging Facade for Java)로깅 파사드(Facade)실제 로그 구현체가 아니라 인터페이스(추상화 계층)로깅 구현체(Log4J, Logback 등)를 느슨하게 연결로깅 API의 표준 인터페이스 역할 ● 구조[ Application ] ↓ SLF4J - 표준 인터페이스 ↓[ Logback | Log4J | Log4J2 ] - 구현체 ● Lombok 사용 안하는 방법import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SampleService { private st..
개발을 진행하면서 예외처리에 대한 관심이 더 생기고 조금 더 깔끔하게 코드를 짜고 싶은 욕심이 생겨서 정리해 보았다. printStackTrace()란? 예외(Exception) 객체가 가진 스택 트레이스를 표준 에러 출력(stderr)으로 그대로 찍어주는 메서드try { int a = 10 / 0;} catch (Exception e) { e.printStackTrace();}java.lang.ArithmeticException: / by zero at com.example.Test.main(Test.java:10) 특징어디서 발생했는지 즉시 확인 가능설정 필요 없음무조건 콘솔에 출력단점로그 레벨 개념 없음파일로 남기기 어려움운영 환경에서 로그 관리 불가로그 포맷 통일 불가로그 수집(A..
