fos-blog
/study
01 / 홈
02 / 카테고리
03 / 시리즈
검색
⌘K
01 / 홈
02 / 카테고리
03 / 시리즈
INDEX · LATEST
최신 글
업데이트 순
선언한 LoadBalancer가 안 만들어질 때 — cloud-controller-manager 장애 격리 진단기
> 외부 트래픽은 어떻게 Pod까지 닿는가를 먼저 읽으면 좋다. 그 글이 "LoadBalancer 타입 Service를 선언하면 클라우드가 LB를 만들어준다"까지 다뤘다면, 이 글은 선언했는데 안 만들어질 때 어디서부터 파고드는지를 다룬다. 공인 진입점 전환 작업에서 외부 전용 ingress-nginx controller를 배포했다. controller P...
🚀 devops
0
devops
0
HNSW 심화 — 파라미터 튜닝과 구현체별 성능 차이
벡터 검색 알고리즘 입문에서 HNSW가 kNN을 실시간에 쓰게 만든 표준 알고리즘이라는 걸 봤다. 이 글은 그 다음 단계다 — 파라미터를 어떻게 튜닝하고, 왜 같은 설정인데 제품마다 성능이 다른가. - HNSW 튜닝은 파라미터 3개로 끝난다 — M(그래프 밀도), efconstruction(빌드 품질), efsearch(검색 품질). 앞 둘은 인덱스에 고정...
🤖 ai
0
ai
0
OpenSearch를 벡터 DB로 굴리며 알게 된 것 — 벡터는 heap이 아니라 native에 산다
벡터 검색용 OpenSearch 클러스터의 모니터링 대시보드를 만들다가 이상한 걸 봤다. JVM heap 사용량이 12%밖에 안 됐다. "벡터 DB인데 메모리를 이것밖에 안 쓴다고?" 싶어 파봤더니, 정작 벡터는 heap이 아니라 off-heap native memory에 살고 있었다. 이 글의 결론을 먼저 적으면 이렇다. - OpenSearch의 벡터(H...
🗄️ db
11
db
11
Milvus 벡터 데이터베이스 입문 — 아키텍처와 동작, 그리고 실무 규모에서의 성능
RAG 시스템을 OpenSearch 의 k-NN 으로 운영해 오다가, 전용 벡터 데이터베이스인 Milvus 를 본격적으로 들여다볼 일이 생겼다. 막상 공부해 보니 일반적인 DB 와 구조가 꽤 달랐다. 컴포넌트가 예닐곱 개로 쪼개져 있고, "storage 와 compute 를 분리했다"는 말이 핵심이라는데 처음엔 그게 왜 중요한지 잘 와닿지 않았다. 이 글은...
🗄️ db
31
db
31
OpenSearch로 RAG 검색 품질 높이기 — Hybrid Search, Reranking, Sentence Window
RAG 파이프라인에서 OpenSearch를 검색 엔진으로 쓸 때, 순수 벡터 검색만으로는 한계가 있다. 실제로 구현된 코드를 분석하면서 검색 품질을 높이는 세 가지 기법을 정리해봤다. --- 벡터 검색(kNN)은 의미적으로 유사한 문서를 찾는 데 강하다. 그런데 사용자가 고유명사, 코드명, 오타가 섞인 키워드로 검색하면 벡터 유사도가 낮게 나오는 경우가 있...
🗄️ db
148
db
148
벡터 DB 어떻게 고를까 — OpenSearch · Milvus · Qdrant · Vespa · pgvector 비교
RAG 를 만들면 임베딩한 벡터를 어딘가에 저장하고 검색해야 한다. 처음엔 쓰던 검색엔진(OpenSearch)에 벡터 기능을 얹어 시작했는데, 전용 벡터 DB 로 옮길지 고민이 생기면서 후보들을 제대로 비교해 봤다. 결론부터 말하면, 규모가 크지 않으면 뭘 골라도 성능은 충분하고 선택을 가르는 건 성능이 아니라 기능과 운영이라는 것이었다. 이 글은 Open...
🗄️ db
26
db
26
벡터 DB를 실제로 도입한 사례 — 빅테크 프로덕션
벡터 DB를 공부하다 보면 "실제 큰 서비스가 전용 벡터 DB를 운영에 올린 사례"가 궁금하다. ANN 라이브러리(FAISS·Annoy)나 임베딩 모델이 아니라, 벡터 DB 제품을 프로덕션에 도입한 사례를 회사 엔지니어링 블로그(1차 출처) 중심으로 모았다. | 회사 | 도입 | 규모 | use case | | --- | --- | --- | --- | |...
🗄️ db
19
db
19
OpenSearch의 샤딩 — 개념, 공식, 실무 가이드
"HashMap의 동작 원리"를 떠올리면 이해가 가장 빠르다. 데이터를 여러 조각(샤드)으로 쪼개서 여러 노드에 분산하고, 특정 데이터가 어느 조각에 있는지는 결정론적 계산으로 즉시 찾아낸다. 단일 노드는 저장 용량과 처리량에 물리적 한계가 있다. 데이터가 계속 늘면 노드 하나로는 감당이 안 되는 시점이 온다. 샤딩은 데이터를 여러 조각으로 나눠 여러 노드...
🗄️ db
95
db
95
Vespa 아키텍처 입문 — 왜 강력한데 학습 곡선이 가파른가
벡터 DB 어떻게 고를까에서 "Vespa 는 강력하지만 학습 곡선이 가팔라서, 대규모 서빙·복잡한 ML 랭킹이 필요한 게 아니면 과한 선택이 되기 쉽다"라고 짧게 정리했었다. 정확히 뭐가 강력하고 뭐가 가파른지 근거를 파봤다. 결론부터 말하면, Vespa 는 서버 사이드에서 임의 랭킹 함수와 ML 모델 추론을 인라인 실행하는 유일한 엔진이다. 그 표현력을...
🗄️ db
0
db
0
Qdrant 벡터 데이터베이스 입문 — "컴포넌트가 단순하다"는 게 정확히 뭔가
벡터 DB 어떻게 고를까에서 "가장 가볍게 운영하고 싶다 → Qdrant. 컴포넌트가 단순하다"라고만 짧게 썼었다. 정확히 뭐가 단순한지, Milvus 대비 무엇이 빠지는지 근거 없이는 판단할 수 없다는 피드백을 받고 다시 파봤다. 결론부터 말하면, Qdrant는 Milvus 가 별도 프로세스로 떼어낸 역할들을 전부 하나의 Rust 바이너리 안으로 흡수했다...
🗄️ db
0
db
0
더 보기