피드로 돌아가기
Dev.toBackend
원문 읽기
Embedding 모델보다 Ingestion Pipeline 설계가 결정하는 Semantic Search 품질
Semantic Search Is an Architecture Problem
AI 요약
Context
Spring Boot와 pgvector 기반의 Semantic Search API 구축 과정에서 벡터 연산 자체보다 시스템 설계의 부재로 인한 검색 결과의 불확실성 발생. 단순 유사도(Similarity) 기반 검색이 실제 유용성(Usefulness)으로 이어지지 않는 아키텍처적 한계 직면.
Technical Solution
- Embedding 전 단계에서 데이터 형식을 강제하는 System-level Contract 도입을 통한 벡터 공간의 결정론적 확보
- 단순 결합 방식의 Embedding 입력을 지양하고 노이즈 데이터(예: 'Notes', 'Draft' 등의 제목)를 정규화하여 벡터 왜곡 방지
- 데이터 모델링 관점에서 Ingestion 단계의 검증 및 정규화 프로세스를 강화하여 검색 품질의 상한선 결정
- JPA의 추상화 한계를 인정하고 벡터 연산 및 JSONB 접근 등 DB 특화 쿼리에 대해 JDBC 기반 SQL로 경계를 명확히 분리한 설계 채택
실천 포인트
- Embedding 입력값에 대한 Canonical Input Shape를 정의하고 계약(Contract) 기반의 파이프라인을 구축했는가? - Ingestion 단계에서 단순 유사도 왜곡을 일으키는 메타데이터나 노이즈 필터링 로직이 포함되었는가? - ORM의 추상화 계층이 DB 전용 연산(Vector/JSONB)의 효율성과 유연성을 저해하고 있지는 않은가?