Home
keencho's blog
Cancel

AI 가 볼 곳을 좁혀주기

AI 가 볼 곳을 좁혀주기 전사 소스 보안점검을 하게 됐다. 레포가 수십 개다. Semgrep 과 Trivy 는 금방 붙였다. 규칙에 걸리는 패턴과 라이브러리 CVE 는 기계가 잘 찾는다. 문제는 그걸로 안 잡히는 것들이었다 — 인증 장치가 등록은 돼 있는데 실제로는 일부 API 만 검사한다든지, 남의 데이터를 ID 로 조회할 수 있다든지. 사람이 ...

서브도메인을 미리 만들 수 없을 때

서브도메인을 미리 만들 수 없을 때 어느 날 AWS 콘솔에 로그인했더니 주소가 바뀌어 있었다. 000000000000-aaaaaaaa.us-east-1.console.aws.amazon.com 계정 번호 무작위 문자열 멀티세션을 켜면 이렇게 된다. 계정을 여러 개 동시에 열 수 있게 해주는 기능인데, 켜는 순간 주소 앞에 계정 번호와...

LLM 추적을 OpenTelemetry 로 모으기

LLM 추적을 OpenTelemetry 로 모으기 RAG 챗봇을 만들고, 검색 품질을 끌어올리고, 여러 모델이 역할을 나눠 협업하게까지 했다. 그런데 운영에 올려놓고 보니 “답이 왜 이렇게 나왔나” 를 확인하는 게 매번 고역이었다. 질문 하나가 들어오면 재작성·임베딩·검색·재정렬·판정·작성·검수를 거친다. 어느 단계에서 뭘 가져왔고, 어디서 시간을 ...

Next SSR 캐시를 Lambda 밖으로 꺼내기

Next SSR 캐시를 Lambda 밖으로 꺼내기 메일 시스템 글에서 프론트를 React SPA 로 만들어 S3 에 올리고 CloudFront 로 서빙한다고 했다. 정적 파일이라 CDN 이 알아서 다 해줬고, 캐시 얘기는 Cache-Control 을 뭘로 줄지가 전부였다. 이번에 새로 만드는 몰은 SSR 이 필요했다. 상품 목록·상세가 검색에 걸려야...

RDS IOPS 의 두 천장

RDS IOPS 의 두 천장 운영하던 DB 하나가 특정 시간대에 눈에 띄게 느려지는 일이 있었다. 평소엔 멀쩡한데 배치가 몰리거나 트래픽이 튀는 구간에 응답이 쭉 늘어지고, 심하면 커넥션이 밀렸다. CPU도 메모리도 여유가 있는데 느렸다. 결국 병목은 디스크 I/O, 정확히는 IOPS였다. IOPS를 올렸더니 안정됐는데, 그 과정에서 몇 가지를 새로...

pgvector 벡터 검색이 HNSW 인덱스를 안 탈 때

pgvector 벡터 검색이 HNSW 인덱스를 안 탈 때 예전에 pgvector로 RAG 챗봇의 벡터 검색을 만든 글을 썼었다. 그때는 HNSW 인덱스 걸고 잘 돌아갔는데, 데이터가 쌓이고 회사(테넌트)가 늘면서 어느 날부터 검색이 눈에 띄게 느려졌다. 원래 수십 밀리초면 끝나던 게 수 초씩 걸렸다. 원인을 찾는 데 시간이 좀 걸렸는데, 알고 보니 ...

CloudFront Function 으로 엣지에서 처리하기

CloudFront Function 으로 엣지에서 처리하기 메일 시스템 글에서 CloudFront로 프론트(React SPA)를 S3에 서빙한다고 했다. 근데 SPA를 S3 + CloudFront로 올리면 흔히 밟는 함정이 하나 있다. 사용자가 /posts/abc 같은 경로에서 새로고침을 하면 404가 뜬다. 이유는 단순하다. SPA는 라우팅을 브라...

멀티에이전트 RAG 직접 만들기

멀티에이전트 RAG 직접 만들기 지난 글에서 검색을 다듬고, 마지막에 LLM이 “이 자료로 답할 수 있나” 를 판단하게 했다. 사실 그 판단으로 재검색·되묻기·거절을 가르는 순간, 이미 단순 RAG를 넘어 에이전트의 영역에 발을 들인 거였다. 이번 글은 그걸 제대로 밀고 나간 이야기다. 역할을 나눈 여러 LLM이 협업하고, 자료로 안 되는 건 도구(t...

가상 스크롤 직접 구현하기

가상 스크롤 직접 구현하기 회사 관리자 화면에 목록 테이블이 하나 있었는데, 데이터가 쌓이면서 행이 수만 개가 됐다. 그랬더니 페이지가 열릴 때 몇 초씩 멈추고, 스크롤은 뚝뚝 끊겼다. 원인은 단순했다. 화면엔 기껏해야 20~30행이 보이는데, DOM에는 수만 개의 행이 전부 그려져 있었던 거다. 브라우저 입장에선 보이든 안 보이든 그 수만 개를 다...

RAG 검색 품질 끌어올리기

RAG 검색 품질 끌어올리기 지난 글에서 pgvector로 벡터 검색을 붙이고, 거기에 키워드 검색까지 섞은 하이브리드를 만들었다. 의미로도 찾고 정확한 단어로도 찾으니 후보를 빠짐없이 긁어오게 됐다. 근데 운영해보니 “후보를 잘 긁어온다” 와 “좋은 답이 나온다” 는 생각보다 거리가 멀었다. 문제는 이거였다. 하이브리드 검색이 후보를 20개쯤 가져...