벡터 DB보다 먼저 직접 만들어보는 이유
모든 벡터 데이터베이스는 화려한 API 뒤에 똑같은 세 동작을 숨겨놨어. 텍스트를 임베딩하고, 벡터를 저장하고, 쿼리와 가장 가까운 벡터를 찾는 일이야. 이 셋을 NumPy 30줄로 직접 만들 수 있으면 벡터 DB 문서를 훨씬 빨리 읽고, 엉뚱한 결과도 더 빨리 고치며, 기본값을 무턱대고 믿지 않게 돼.
검색 흐름 전체를 한 화면에 놓자
할 일은 단순해:
- 작은 문서 모음을 로컬 모델로 임베딩해.
- 벡터는 NumPy 행렬에, 원문은 같은 순서의 목록에 저장해.
- 쿼리를 임베딩한 뒤 모든 행과 cosine 유사도를 계산하고 상위 k개를 돌려줘.
Chroma와 pgvector가 안에서 하는 일도 본질은 같아. 여기에 영속성, 메타데이터 필터, 규모를 감당할 인덱스를 더했을 뿐이지. 검색 원리는 바뀌지 않아.