피드로 돌아가기
I Built a Search Engine That Understands Meaning — in ~150 Lines, Zero API Keys
Dev.toDev.to
AI/ML

Local Embedding과 pgvector 기반의 Zero-API 시맨틱 검색 엔진 구현

I Built a Search Engine That Understands Meaning — in ~150 Lines, Zero API Keys

Devanshu Biswas2026년 6월 13일5intermediate

Context

키워드 일치 방식의 기존 검색 엔진이 가진 문맥 이해 부족 문제를 해결하기 위한 과제. 단순 텍스트 매칭으로는 단어 공유 없는 의미적 유사 문서(예: 'ocean' 쿼리에 'Blue whale' 문서)를 검색하지 못하는 한계 존재.

Technical Solution

  • Transformers.js 기반의 all-MiniLM-L6-v2 모델을 통한 로컬 Embedding 추출 구조 설계
  • 클라우드 API 의존성을 제거하여 25MB 모델 파일 다운로드 후 로컬 런타임에서 384차원 벡터 생성
  • pgvector Extension을 통한 Postgres 내 Vector 타입 컬럼 도입으로 별도 벡터 DB 구축 비용 제거
  • HNSW Index 적용을 통한 대규모 데이터셋에서의 Approximate Nearest Neighbor 검색 속도 최적화
  • Cosine Distance 연산자(<=>)를 활용한 쿼리 벡터와 문서 벡터 간의 거리 측정 및 유사도 랭킹 구현

- 데이터가 이미 Postgres에 존재한다면 별도 벡터 DB 대신 pgvector 도입 검토 - 낮은 지연시간과 비용 절감을 위해 Transformers.js 기반의 Local Embedding 모델 활용 고려 - 검색 정확도 향상을 위해 단순 키워드 검색에서 Vector Search 기반의 시맨틱 검색으로 전환 - 대규모 벡터 데이터 조회 성능 확보를 위해 HNSW 인덱스 설정 필수 적용

원문 읽기