RocheDB: Data Locality as a First-Stage Retrieval Index

개요

RocheDB는 데이터의 물리적 및 논리적 위치를 첫 번째 검색 단계로 활용하여 검색, 추천, RAG 시스템 등의 성능을 최적화하는 데이터베이스 시스템입니다.

주요 내용

* 데이터 지역성(Data Locality)을 첫 번째 검색 단계로 활용: 기존 데이터베이스 및 검색 시스템에서 데이터 저장과 인덱싱을 분리하는 것과 달리, RocheDB는 데이터 배치 자체를 검색 정보로 활용하여 관련된 데이터를 물리적으로 가깝게 저장합니다.
* "어디를 열어야 하는가"라는 질문으로 검색 방식 전환: 전역 인덱스를 검색하는 대신, "어떤 지역의 데이터를 먼저 열어야 하는가"라는 질문으로 검색의 시작점을 지정하여 검색 효율을 높입니다.
* 후보 생성 및 가지치기(Candidate Generation & Pruning) 단계 개선: 랭킹 알고리즘이 처리해야 할 무관한 데이터의 양을 줄여, 검색, RAG, LLM 컨텍스트 저장 등의 후반 작업 부담을 경감시킵니다.
* 데이터 배치 자체를 인덱스처럼 활용: 링(Ring), 스텔라 네이버후드(Stellar Neighborhood), 애플리케이션 정의 지역성 그룹(Application-defined Locality Groups) 등을 통해 데이터의 위치 정보를 검색의 시작점으로 활용하며, 이는 B-tree, 역인덱스, ANN 인덱스와 같은 전통적인 인덱스를 보완합니다.
* RAG 최적화 및 LLM 컨텍스트 관리: RAG 시스템에서 불필요한 문서 탐색을 줄여 LLM 컨텍스트 창 크기, 토큰 사용량, 메모리 압력, LLM 서빙 비용 등을 절감하는 데 기여합니다.
* 일반적인 파티셔닝/샤딩과의 차별점: 파티셔닝/샤딩이 데이터 소유를 묻는다면, RocheDB는 "이 데이터와 관련된 주변 데이터는 무엇인가"라는 질문에 답하며, 이는 특히 검색 및 추천 시스템에서 중요한 후보군 탐색에 유리합니다.
* 분석 데이터 웨어하우스와의 차별점: 대규모 집계 및 임의 분석보다는 운영 데이터베이스, 검색 백엔드, RAG 인프라 등 특정 애플리케이션 컨텍스트에 맞는 지역성을 활용하는 데 중점을 둡니다.
* 실용적 설계 원칙: 애플리케이션이 함께 검색할 것으로 예상하는 관련 없는 데이터는 서로 가깝게 두지 않는다는 원칙을 제시하며, 데이터 쓰기 시 링을 지정하면 읽기 시 해당 링이 첫 번째 검색 범위가 됩니다.
* 주요 벤치마킹 지표: 작업 세트 축소, 스캔된 레코드 수, 후보 메모리, RAG 토큰 감소, 쿼리당 토큰 수 등을 중심으로 성능을 측정하며, 단순한 키-값 지연 시간뿐만 아니라 전반적인 작업 부담 감소에 초점을 맞춥니다.
* 대규모 시스템에서의 중요성: 소규모 시스템에서는 추가 데이터 읽기가 허용되지만, 대규모 시스템에서는 추가 데이터가 메모리, I/O, 네트워크 트래픽, 컴퓨팅 자원 등에서 큰 비용을 초래하므로, 관련 없는 데이터 영역을 초기에 피하는 것이 더 큰 이점을 제공합니다.

시사점

RocheDB는 데이터 저장 구조를 검색 아키텍처의 일부로 통합하여, 기존의 랭킹, 벡터 검색, LLM 컨텍스트 구축 단계에 앞서 불필요한 데이터 탐색을 최소화함으로써 대규모 검색 및 AI 시스템의 전반적인 효율성을 크게 향상시킬 잠재력을 가지고 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions