- Cohere가 위키피디아 전체를 벡터로 임베딩한 데이터셋을 공개했음
- 이 데이터셋을 사용하면 개인이 위키피디아의 의미 기반 벡터 인덱스를 만들 수 있게 됨
어려운 점
- 데이터셋 크기(영어 코퍼스만 180GB)가 문제는 아님
- 기존 벡터 데이터베이스는 메모리보다 큰 데이터셋을 인덱싱할 수 없었음
- JVector 라이브러리는 압축 벡터를 사용해 메모리보다 큰 데이터셋을 인덱싱할 수 있게 함
요구 사항
- Linux 또는 MacOS 필요 (Windows는 ChronicleMap의 제한으로 인해 사용 불가)
- 데이터셋을 위한 180GB의 여유 공간과 인덱스를 위한 90GB의 공간 필요
- 인덱스 구축 시 36GB의 힙 공간을 가진 JVM을 실행할 수 있는 충분한 RAM 필요
- 인덱스 구축 전에 스왑 비활성화 필요
인덱스 구축 및 검색
작동 원리
- JVector로 벡터 인덱스 생성, Chronicle Map으로 기사 데이터 저장
- 벡터 압축을 위해 Locally-Adaptive Quantization (LVQ) 사용
- 병렬 스트림을 사용해 데이터 병렬 처리
결론
- JVector 라이브러리 덕분에 노트북에서 영어 위키피디아 전체를 인덱싱하는 것이 현실화됨
- DataStax Astra 서비스와 함께 사용하면 실시간 삽입, 업데이트, 삭제를 지원하는 강력한 인덱싱 기능을 활용할 수 있음
GN⁺의 의견
-
JVector의 혁신성: JVector는 대용량 데이터셋을 메모리 제약 없이 인덱싱할 수 있게 해줌으로써 데이터 과학 및 검색 엔진 분야에 큰 혁신을 가져올 수 있음.
-
실용성: 개인이 노트북에서 위키피디아 전체를 인덱싱할 수 있게 되면서, 연구자나 개발자들이 더 쉽게 대규모 데이터셋을 활용할 수 있게 됨.
-
기술적 고려 사항: 이 기술을 도입할 때는 충분한 디스크 공간과 메모리, 그리고 스왑 비활성화 등의 시스템 설정이 필요함.
-
대안 기술: 유사한 기능을 제공하는 다른 오픈소스 프로젝트로는 FAISS(Facebook AI Similarity Search)나 Annoy(Approximate Nearest Neighbors Oh Yeah)가 있음.
-
성능 최적화: 병렬 처리와 벡터 압축 기술을 통해 성능을 최적화할 수 있지만, 시스템 자원 관리에 주의가 필요함.