피드로 돌아가기
Dev.toDatabase
원문 읽기
pgvector 기반 벡터-관계형 통합 설계로 범용 리뷰 그래프 구현
Building a cross-user review graph with pgvector on Amazon Aurora
AI 요약
Context
사용자별로 상이한 제품 표기법으로 인해 발생하는 데이터 파편화 및 중복 식별 문제 발생. 기존 RDBMS의 단순 텍스트 매칭으로는 서로 다른 입력값(예: "In-N-Out" vs "in n out burger")을 동일 객체로 통합하는 데 한계가 있음.
Technical Solution
- pgvector의 HNSW 인덱스와 Cosine Similarity를 활용한 1024-dim 임베딩 기반의 Approximate Nearest Neighbor(ANN) 검색 구조 설계
- user_items(개별 로그)와 canonical_items(통합 객체)의 2단계 데이터 모델링을 통한 데이터 정규화 및 중복 제거
- 개별 아이템의 임베딩을 기반으로 Canonical Vector를 지속적으로 업데이트하는 Running Centroid 로직을 통해 검색 정확도를 점진적으로 향상시키는 Self-sharpening 메커니즘 도입
- rating_avg를 STORED GENERATED column으로 설계하여 렌더링 시점의 Aggregation 쿼리 비용을 제거하고 읽기 성능 최적화
- Aurora PostgreSQL 단일 엔진 내에서 Vector Search, Relational Join, Transactional Update를 통합 처리하여 데이터 정합성 확보 및 시스템 복잡도 최소화
실천 포인트
- Vector Store와 RDBMS를 분리하는 대신 pgvector를 통해 트랜잭션 범위 내에서 벡터 연산과 관계형 데이터를 통합 관리할 것 - 빈번한 집계 쿼리가 예상되는 필드는 Generated Column이나 Denormalization을 통해 읽기 비용을 최적화할 것 - 사용자 입력 기반의 클러스터링 시, 초기 벡터에 안주하지 않고 데이터 축적에 따라 중심점(Centroid)을 재계산하는 피드백 루프를 설계할 것