3P by neo 6달전 | favorite | 댓글과 토론
  • 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)가 있음.
  • 성능 최적화: 병렬 처리와 벡터 압축 기술을 통해 성능을 최적화할 수 있지만, 시스템 자원 관리에 주의가 필요함.