stdio.h 님의 글 93
llama.cpp로 로컬에 비전 모델 서빙하기
로컬에서 LLM을 돌릴 때 llama.cpp를 쓰는 사람은 많은데, 이미지를 넣는 멀티모달 쪽은 한동안 손이 잘 안 갔다. 예전엔 llava용 바이너리, clip 변환 스크립트가 모델마다 따로 있어…
pgvector가 버거울 때 Qdrant로 넘어가기
사내 RAG를 pgvector로 시작했다. 처음 수십만 벡터까지는 PostgreSQL 한 대로 충분했다. 그런데 문서가 쌓이고 벡터가 수백만 단위로 늘자 인덱스 빌드 시간이 길어지고, 검색 지연이 …
GGUF 양자화 레벨 벤치마크로 고르기
로컬에서 LLM을 돌리기 시작하면 모델 자체보다 "어느 양자화 레벨을 받아야 하나"에서 더 오래 고민하게 된다. Hugging Face 저장소에 같은 모델이 Q4_K_M, Q5_K_M, Q8_0으로…
LLM 응답을 깨지지 않는 JSON으로 강제하기
사내에 vLLM이나 Ollama로 모델을 띄워놓고 거기에 데이터 추출이나 함수호출을 맡기다 보면, 결국 같은 자리에서 막힌다. 모델이 뱉은 텍스트를 json.loads() 에 넣는 순간이다. 열에 …
RAG 정확도를 리랭커로 끌어올리기
RAG를 붙여 놓고 나면 꼭 한 번은 겪는 장면이 있다. 질문은 멀쩡한데 모델이 엉뚱한 문단을 근거로 답을 지어낸다. 로그를 열어 보면 벡터 검색이 가져온 상위 문서부터 질문과 미묘하게 어긋나 있다…
Open WebUI로 사내 자체 호스팅 ChatGPT 만들기
사내에서 외부 ChatGPT 사용을 막아둔 곳이 늘고 있다. 계약서나 소스 코드를 붙여넣는 순간 데이터가 밖으로 나가니 보안팀 입장에선 당연한 조치다. 그래서 요즘 "우리 망 안에서만 도는 챗봇을 …
MongoDB 3노드 레플리카셋 자동 장애조치 구성
단일 MongoDB 노드로 서비스를 돌리다 보면 결국 한 번은 겪는다. 프로세스가 죽거나 디스크가 꽉 차면 그 순간 데이터베이스 전체가 멈춘다. 예전에 mongodump와 oplog로 백업 복구를 …
mongodump와 oplog로 MongoDB 백업하고 장애 직전 시점으로 복구(PITR)하기
운영 중인 MongoDB에서 누군가 db.orders.drop() 을 잘못 날리는 사고는 생각보다 흔하다. 새벽에 받아둔 풀 백업만 있으면 그 시점으로는 돌아가지만, 백업 이후 낮 동안 들어온 주문…
Apache Tomcat과 Spring Boot의 차이 - WAS와 프레임워크, 내장 톰캣까지 관계 정리
톰캣 설치나 커넥터 설정을 정리해두면 현장에서 꼭 따라오는 질문이 있다. 스프링 부트를 쓰는데 톰캣을 따로 깔아야 하는지, 둘 중 무엇을 먼저 익혀야 하는지 같은 것들이다. 신입 개발자만 묻는 것도…
Prometheus에 대한 최근의 소소한 이야기
1. Prometheus PromQL Prometheus는 CNCF 졸업(graduated) 프로젝트인 모니터링·알림 시스템이다. 질의에는 PromQL 을 쓰는데, 타임시리즈 데이터 조회에 최적화돼…
Google App Engine 빨리 시작하기
1. 개요 2. 시작 SDK는 설치되어있다는 전제 하에 작업한다. gcloud app create --project=[YOUR_PROJECT_ID] 3. App Engine 자바 구성요소 설치 gc…
GKE에 Ingress 생성하기
1. 개요 GKE 에 Ingress를 생성한다. 2. 샘플 애플리케이션 배포 * web-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployme…