SQLite와 SIMD 하이퍼벡터를 이용해 1.2GB VRAM 이하에서 벡터 데이터베이스 대체하기 (Hillock)
요약
본 글은 SQLite와 SIMD 하이퍼벡터를 활용하여 1.2GB VRAM 이하 환경에서 벡터 데이터베이스의 한계를 극복하는 오픈 소스 프로젝트 'Hillock'을 소개합니다. Hillock은 경량 바이 인코더로 관계형 사실을 추출하고, 후기 상호작용 점수화와 하이퍼벡터 게이트를 통해 LLM 호출 전 환각(hallucination)을 방지하여 RAG의 안정성을 높입니다.
핵심 포인트
- SQLite 기반으로 벡터 DB 없이 관계형 사실 추출 가능
- 하이퍼벡터 비트 패킹 및 SIMD 명령어 사용으로 고속 게이팅 검사 구현
- LLM 호출 전 수학적 중첩 확인으로 환각(Hallucination) 방지 효과 극대화
- OpenAI 호환 API 서버를 제공하여 다양한 로컬 환경에 쉽게 통합 가능
공개 고지: 저는 이 프로젝트의 제작자입니다. 며칠 동안 지켜보고 충분한 커마(karma)를 쌓은 후에야 드디어 여기에 게시할 수 있게 되었습니다.
제가 제 자신의 컴퓨터에서 로컬 RAG(Retrieval-Augmented Generation)를 실행하려고 할 때마다 정확히 같은 병목 현상에 부딪혔습니다. 첫째, 8B 모델과 함께 Chroma나 다른 벡터 데이터베이스를 구동하여 문서를 청크(chunk)로 나누고 파싱하는 것만으로도 주 모델에 필요한 귀중한 VRAM을 소모합니다. 둘째, 텍스트 청크에 대한 코사인 유사도(cosine similarity)는 종종 어려운 부정 적합성(hard negative rejection)에서 실패하기 때문에, 모델은 심지어 파일에 없는 질문에 답하려고 시도하며 완전한 확신과 함께 환각(hallucinates)을 일으킵니다.
저는 지난 몇 달 동안 벡터 데이터베이스 없이 이 문제를 해결할 수 있는지 알아보기 위해 Hillock이라는 오픈 소스 프로젝트를 구축하는 데 시간을 보냈습니다. 이는 경량의 바이 인코더(bi encoders)를 사용하여 깨끗한 관계형 사실(relational facts)을 SQLite에 약 5초 만에 추출하며, 데이터 수집 과정에서 생성형 LLM(generative LLM)을 완전히 우회합니다. 환각을 막기 위해, 쿼리는 후기 상호작용 점수화(late interaction scoring)를 사용하여 10,000 차원의 하이퍼벡터 게이트(hypervector gate)를 통과합니다. 만약 사실 그래프가 질문과 수학적으로 중첩되지 않으면, 토큰 생성이 시작되기도 전에 LLM 호출을 차단합니다.
방금 버전 0.8을 푸시했는데, 이는 하이퍼벡터를 157개의 uint64 정수로 비트 패킹(bit packs)하여 CPU가 하드웨어 popcount 명령어를 사용하여 0.01밀리초 이내에 게이팅 검사를 실행할 수 있게 했습니다. 또한 Open WebUI, AnythingLLM 또는 Obsidian에 바로 적용할 수 있도록 OpenAI와 호환되는 API 서버도 포함하고 있습니다. pip install hillock을 통해 PyPI에도 게시되었습니다.
솔직히 말해서 트레이드오프는 이 파이프라인이 기술 사양, 사람, 날짜와 같은 구조화되고 관계적인 사실에 맞춰져 있다는 것입니다. 이는 재현율(recall)보다는 정밀도(precision)에 크게 편향되어 있으므로, 70B 모델처럼 광범위한 시적 또는 서사적 요약을 수행하지는 못할 것입니다.
코드는 GitHub의 https://github.com/roandejager/Hillock에서 확인할 수 있습니다.
문서 또한 https://hillock.mintlify.site에 설정했으며, 개발자 Discord는 https://discord.gg/BGUPNBcVdp입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기