피드로 돌아가기
The challenges of creating a semantic memory layer on Cloudflare Workers, D1, and Vectorize.
Dev.toDev.to
AI/ML

Cloudflare 기반 Semantic Memory 구축을 통한 컨텍스트 유지 및 고정밀 Reranking 구현

The challenges of creating a semantic memory layer on Cloudflare Workers, D1, and Vectorize.

Rahil Pirani2026년 6월 6일5advanced

Context

단순 Vector DB 저장만으로는 데이터 무결성 유지와 정교한 관련성 검색에 한계가 존재함. 특히 Vectorize의 제한적인 삭제 기능과 Cosine Similarity 기반 검색의 낮은 정확도를 해결해야 하는 상황임.

Technical Solution

  • Source of Truth 분리를 위해 D1(메타데이터 및 원문)과 Vectorize(임베딩 인덱스)를 분리한 이중 저장 구조 설계
  • 의미적 단절 방지를 위해 문자 수 기준이 아닌 문장 경계 및 개행 문자를 인식하는 Semantic Chunking 로직 적용
  • Vectorize의 쿼리 1회로 중복·모순·병합 여부를 결정하는 3단계 Score Band(0.95 / 0.85 / 0.45) 기반의 의사결정 프로세스 구축
  • Vectorize의 ID 기반 삭제 제약을 극복하기 위해 D1에 Vector ID 리스트를 저장하여 Orphaned Vector 발생을 원천 차단
  • Cosine Similarity의 한계를 보완하고자 Recency, Frequency, Importance 세 가지 가중치를 결합한 커스텀 Reranker 구현
  • Chunk 단위 검색 시 발생하는 결과 편향을 막기 위해 TopK 값을 3배 확장 후 ParentId 기준으로 중복 제거하는 전략 채택

- Vector DB를 단독 저장소로 쓰지 말고 RDBMS와 조합하여 Source of Truth를 명확히 분리할 것 - Chunking 시 단순 길이 제한보다 문장 구조를 반영한 분할 지점 선정 로직을 검토할 것 - 임베딩 유사도 점수 외에 도메인 특성에 맞는 시간적 감쇄(Exponential Decay) 및 중요도 가중치를 추가하여 Reranking을 수행할 것 - Vector DB의 삭제 성능 및 기능을 확인하고, 필요 시 RDBMS에 매핑 ID를 저장하여 정교한 생명주기 관리를 수행할 것

원문 읽기