피드로 돌아가기
Dev.toBackend
원문 읽기
pgvector와 선형 가중치 모델 기반의 고효율 매칭 엔진 구축
The four-line cron that decides who falls in love (in my dating app)
AI 요약
Context
복잡한 ML 스택과 마이크로서비스 없이 최소한의 리소스로 작동하는 데이팅 앱 매칭 시스템 구현 필요. 기존의 무거운 매칭 모델 대신 데이터 기반의 단순한 랭킹 로직을 통한 빠른 검증과 배포 효율성 확보에 집중함.
Technical Solution
- pgvector의 Cosine Distance 연산자를 활용하여 Top 100 후보군을 추출하는 Candidate Generation 레이어 단순화
- Postgres 내부 함수를 통한 intent_overlap 필터링으로 도메인 제약 사항을 쿼리 레벨에서 즉시 처리
- Cosine 유사도(55%), 의도 일치도(20%), 작성 주기(15%), 지리적 거리(10%)의 4개 피처를 결합한 Linear Rerank 모델 설계
- 정교한 ML 모델 대신 실제 매칭 데이터를 기반으로 한 수동 가중치 튜닝(Hand-weighted) 방식을 채택하여 오버피팅 방지
- Vercel Cron의 플랜 제약으로 인한 배포 병목을 해결하기 위해 launchd 기반의 외부 트리거 구조로 스케줄러 분리
- 0.45 이상의 점수만 필터링하여 suggested_matches 테이블에 Upsert 하는 임계값 기반의 데이터 정제 프로세스 적용
실천 포인트
- Vector DB 도입 전 pgvector와 같은 DB 내장 확장 기능으로 프로토타입 구현 검토 - 복잡한 Reranking 모델 도입 전 단순 가중치 합산 방식의 선형 모델로 Baseline 성능 측정 - 인프라 플랫폼의 제약 사항이 CI/CD 파이프라인을 차단하지 않도록 스케줄러와 배포 환경의 의존성 분리 - 사용자 행동 데이터 기반의 임계값(Threshold) 설정을 통한 불필요한 데이터 저장 및 노출 최소화