# 노트북에서 Wikipedia 전체를 벡터 인덱싱하기

> Clean Markdown view of GeekNews topic #15087. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15087](https://news.hada.io/topic?id=15087)
- GeekNews Markdown: [https://news.hada.io/topic/15087.md](https://news.hada.io/topic/15087.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-05-30T10:03:24+09:00
- Updated: 2024-05-30T10:03:24+09:00
- Original source: [foojay.io](https://foojay.io/today/indexing-all-of-wikipedia-on-a-laptop/)
- Points: 3
- Comments: 0

## Topic Body

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

## Comments



_No public comments on this page._
