Skip to content

librados: add lsh-v0 vector placement and query routing#8

Open
ppomee2002 wants to merge 4 commits into
myoungwon:wip-vector-nativefrom
ppomee2002:pr-lsh-v0
Open

librados: add lsh-v0 vector placement and query routing#8
ppomee2002 wants to merge 4 commits into
myoungwon:wip-vector-nativefrom
ppomee2002:pr-lsh-v0

Conversation

@ppomee2002

Copy link
Copy Markdown

query_vectors end-to-end path 위에 기본 vector routing을 hash-v0 placeholder에서 lsh-v0 기반 placement로 바꿉니다.
--> 현재 native put/query path에서 실제로 쓰는 lsh-v0 경로만 정리


변경 사항

lsh-v0 placement primitive 추가

  • vector_query_algorithm_lsh / vector_placement_algorithm_lsh_v0 추가
  • LSH signature bits / table 관련 기본 constant 추가
  • vector_placement.h에 lsh-v0 공통 함수 추가
  • put/query validation에서 lsh-v0 placement key / probe key를 허용되게 함

lsh-v0 planner 추가

  • put_vector 시 vector를 table별 LSH signature로 변환하고, 각 table/signature에 대응하는 object target을 생성
  • query_vectors 시 query vector에서 probe 대상 object 목록을 계산
  • exact bucket probe와 hamming probe를 librados planner 쪽에서 생성
  • OSD에는 planner-only 파라미터가 아니라 routed query request만 전달

public put/query path에 lsh-v0 연결

  • IoCtxImpl::put_vector() / query_vectors() 기본 planner를 hash-v0에서 lsh-v0로 변경
  • 환경변수로 lsh-v0 fanout 설정
  • 최종 결과는 기존 query_vectors merge semantics에 맞춰 정렬 / top-k trim

테스트 반영

  • 기존 put/query 테스트에서 expected OID 계산을 lsh-v0 placement 방식으로 변경
  • PG-LSH 관련 테스트나 helper는 아직 없습니다

후속 PR 계획

lsh-v0 기본 path가 안정화된 뒤, PG 기반 routing이나 다른 ANN planner는 recall / 성능 기준을 잡고 별도 PR로 분리해서 진행할 예정입니다.
++ 현재 pg기반 routing 하였으나 리콜이 만족스럽지 않아 보완하고 있습니다

@myoungwon

Copy link
Copy Markdown
Owner

현시점에서 LSH과 hash의 차이가 뭘까요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants