배경
Antonioli affiliate 승인을 받았고, Rakuten Affiliate에서 제공하는 상품 feed를 기반으로 decoded의 아이템 카탈로그 DB를 구축하려고 한다.
Rakuten feed는 SFTP 서버에서 .txt 파일 형태로 내려받는 방식이며, 이 파일을 전처리한 뒤 DB에 적재하고 이후 상품 검색/매칭을 위한 item-level embedding까지 준비하는 것이 목표다.
현재까지 정리된 방향
- 초기 파트너/머천트: Antonioli
- feed 제공 방식: Rakuten Affiliate SFTP
- feed 파일 형식:
.txt
- 초기 예상 규모: 약 12,000개 상품
- 카탈로그 데이터는 런타임 검색/매칭/affiliate 링크에 사용되므로 기본 저장 위치는 operation DB가 적합하다.
- assets DB는 raw feed 격리, 검수, 재처리, 승격 플로우가 필요하다고 판단될 때만 staging 용도로 검토한다.
- embedding은 Cody/raw_posts 벡터 검색 경로와 맞출 경우
gemini-embedding-2 + output_dimensionality=768 방향이 유력하다.
샘플 feed에서 확인한 주요 필드
샘플 Antonioli row 기준으로 다음 값들이 포함된다.
- 외부 상품 ID / product id
- 상품명
- 카테고리 계층
- affiliate URL
- 대표 이미지 URL
- long description
- brand
- 재고 상태
- 가격 / 통화
- 추가 이미지 URL 목록
- product type
- size / color / gender / age group
Embedding 텍스트 후보
우선 텍스트 embedding에는 검색 품질에 직접 도움이 되는 필드만 넣는다.
- 상품명
- brand
- 정규화된 category
- long description (중복 제거 후 1회만 사용)
- 필요 시 color / gender 등 짧은 속성
다음 값들은 embedding 텍스트에 넣지 않고 DB 메타데이터/필터/조인용으로 보관한다.
- SKU / 외부 ID
- affiliate URL
- 상품 URL
- 이미지 URL
- 가격
- tracking URL
구현 범위 초안
열려 있는 질문
- raw feed row를 assets DB에 먼저 저장한 뒤 operation DB로 승격할지, 아니면 operation DB에 바로 normalized row를 적재할지?
- item embedding을 catalog table의 전용 vector 컬럼으로 둘지, generic
embeddings 테이블의 entity_type으로 확장할지?
- 첫 retrieval 대상은 Cody outfit matching인지, 기존 solution 유사도 검색인지, 새로운 visual search flow인지?
- MVP에서 텍스트 embedding만 할지, 대표 상품 이미지 embedding도 같이 할지?
- Rakuten SFTP feed의 실제 갱신 주기와 파일 naming convention은 무엇인지?
- 품절 상품은 검색 대상에서 제외할지, DB에는 유지하되 필터링할지?
- category는 Rakuten/Antonioli 원문을 그대로 둘지, decoded 내부 category taxonomy로 매핑할지?
Acceptance Criteria
- Rakuten SFTP feed를 내려받아 로컬 또는 worker에서 파싱할 수 있다.
- Antonioli 상품 row가 중복 없이 catalog DB에 upsert된다.
- 실패 row와 실패 사유를 디버깅 가능한 형태로 확인할 수 있다.
- embedding source text 생성 로직이 deterministic하고 테스트로 보호된다.
- 초기 약 12,000개 상품에 대한 batch embedding/backfill 경로가 있다.
- 초기 import와 이후 sync를 어떻게 실행/검증하는지 문서화되어 있다.
배경
Antonioli affiliate 승인을 받았고, Rakuten Affiliate에서 제공하는 상품 feed를 기반으로 decoded의 아이템 카탈로그 DB를 구축하려고 한다.
Rakuten feed는 SFTP 서버에서
.txt파일 형태로 내려받는 방식이며, 이 파일을 전처리한 뒤 DB에 적재하고 이후 상품 검색/매칭을 위한 item-level embedding까지 준비하는 것이 목표다.현재까지 정리된 방향
.txtgemini-embedding-2+output_dimensionality=768방향이 유력하다.샘플 feed에서 확인한 주요 필드
샘플 Antonioli row 기준으로 다음 값들이 포함된다.
Embedding 텍스트 후보
우선 텍스트 embedding에는 검색 품질에 직접 도움이 되는 필드만 넣는다.
다음 값들은 embedding 텍스트에 넣지 않고 DB 메타데이터/필터/조인용으로 보관한다.
구현 범위 초안
.txtfeed 파일을 내려받는 흐름 구현merchant + external_item_id기준 idempotent upsert 구현열려 있는 질문
embeddings테이블의entity_type으로 확장할지?Acceptance Criteria