Hacker News가 주목한 ACORN-1·RaBitQ 기반 DuckDB vector search 개선

Hacker News는 DuckDB community extension project를 주목하게 했는데, 이는 매우 실용적인 vector search 문제를 겨냥한다. database가 HNSW index가 이미 후보를 고른 뒤 WHERE clauses를 적용하면 filtered nearest-neighbor queries가 쓸모를 잃는 문제다. 링크된 GitHub repository는 duckdb-vss의 fork이며, SQL-native retrieval는 graph traversal 이후가 아니라 그 과정에서 filters를 존중해야 한다고 주장한다.

이 extension은 predicates가 HNSW traversal 안으로 push되도록 ACORN-1 filtered search를 추가한다. 쉽게 말해, 'category X 안의 top 10 vectors' 같은 query가 더 작고 왜곡된 result set이 아니라 그 subset 안에서의 진짜 top 10을 반환할 수 있다는 뜻이다. README는 selectivity strategy를 설명한다. high-selectivity queries는 standard HNSW에 머물고, mid-selectivity queries는 ACORN-1 two-hop expansion을 사용하며, extremely selective queries는 brute-force exact scan으로 fallback한다. 이런 switching은 production retrieval pipelines에서 중요하다. filters가 vector distance만큼이나 중요할 때가 많기 때문이다.

두 번째 추가 사항은 RaBitQ quantization이다. 프로젝트는 index가 vectors를 dimension당 1 bit로 저장한 다음, 최종 ranking을 위해 원본 F32 vectors에 대해 candidates를 rescore할 수 있다고 주장한다. 보고된 memory savings는 128 dimensions에서 대략 21x, 768 dimensions에서 30x에 이르며, benchmark tables는 oversampling과 rescoring을 활성화했을 때 recall gains를 보여준다. 사용자가 이 수치를 중립적인 평가가 아니라 repository benchmarks로 본다 하더라도, 방향성은 분명하다. 모든 것을 전용 vector store로 내보내는 대신 vector compression과 filtered search를 analytical database 안으로 가져오려는 것이다.

Hacker News가 주목한 이유는 이것이 retrieval-augmented systems가 단순함을 유지할지, 아니면 여러 infrastructure layers로 분리될지를 결정하는 종류의 plumbing이기 때문이다. 이 프로젝트에는 여전히 RAM-resident indexes, FLOAT-only arrays, 그리고 sequential scan으로 fallback하는 일부 query shapes 같은 제약이 있지만, 이미 많은 RAG teams가 겪은 pain point를 겨냥한다.

핵심 포인트

ACORN-1은 filters를 HNSW traversal 안으로 밀어 넣어 filtered queries가 설정한 limit를 온전히 반환할 수 있게 한다.

RaBitQ는 정확한 distance rescoring을 곁들인 공격적인 vector compression을 추가한다.

이 프로젝트는 filter selectivity에 따라 서로 다른 search strategies를 사용한다.

retrieval workloads를 DuckDB와 SQL 안에 유지해야 한다는 논리를 강화한다.