이 프로젝트는 텍스트 임베드 (Huggingface Transformers)와 벡터 데이터베이스의 간단한 구조를 사용하여 최신 검색 엔진을 구축 할 수있는 방법을 보여주기 위해 만들어졌습니다.
검색 데이터의 기초로, 나는 CommonCrawl의 지난 6 개월간 크롤링 된 웹 사이트 데이터를 사용했지만 ~ 1mln 도메인을 벡터화하는 데 랩톱 (M1 Max)에서 거의 2 주가 걸렸기 때문에이 리포지토리를 사용하는 사람은 전체 데이터 세트를 벡터화하지 않겠다고 가정합니다.
이 프로젝트를 현지에서 운영하려면 필요합니다!
data-worker 및 webapp (next.js)이 프로젝트는 생산에 최적화되지 않았으므로 "하나의 명령"생산 배포 구현은 없습니다. 이것은 Google과 같은 결과를 얻기 위해 웹 사이트 검색을 구축하는 방법의 예가 될 것입니다.
공식 GitHub 페이지에서 Huggingface Text Embedings Interface 사용에 대한 자세한 정보를 찾을 수 있습니다. 그럼에도 불구하고,이 저장소의 맥락에서, 나는 MacOS M1을 위해 그것을 컴파일하고 직접 편집을 통해서만 사용할 수있는 M1 Max Metal GPU와 함께 사용하는 데 관심이있었습니다. NVIDIA GPUS에서 사전 제작되고 사용할 수있는 인텔 기반 프로세서의 Docker 컨테이너를 사용할 수 있습니다.
아래 명령은 텍스트 임베딩 인터페이스를 복제하고 MACOS 금속 드라이버가 M1 프로세서 GPU를 사용하도록 빌드합니다.
git clone https://github.com/huggingface/text-embeddings-inference.git
cd text-embeddings-inference
cargo install --path router -F candle -F metalCPU의 몇 분 100%가 소요될 수 있으므로 커피를 마시십시오.
data-worker 디렉토리에는 간단한 Node.js 스크립트가 포함되어 있으며, 지정된 CommonCrawl Data Timeframe을 다운로드하고 크롤링 된 HTML에서 텍스트 컨텐츠를 벡터화하고 나중에 검색 참조를 위해 QDRANT 데이터베이스 및 MONGODB로 결과를 저장하도록 설계되었습니다.
데이터의 양은 "로컬 실행"에 대해 엄청나다는 점에 유의해야하므로 벡터화가 완료 될 때까지 기다리지 말고 노트북에 맞을 경우이를 완료하는 데 몇 달이 걸립니다. 2 주간의 실행 후, 나는 거의 300GB의 저장 공간이 필요했고 6 개월의 CommonCrawl 데이터 세트에서 4% 만 수행했기 때문에 포기했습니다.
webapp 자체는 Tailwind CSS와 webapp/src/utils 디렉토리 내부의 일부 사용자 정의 파일이있는 매우 간단한 Next.js 앱입니다. 여기서 MongoDB, Qdrant 데이터베이스에 연결하는 기능이 있으며 실제 검색 요청을 수행하기 전에 텍스트 임베드 인터페이스를 벡터화하기 위해 텍스트 임베드 인터페이스를 요청합니다.
아래 명령은이 프로젝트를 로컬로 실행하고 CommonCrawl 데이터 세트를 벡터화하고 검색하는 단계입니다.
BAAI/bge-large-en-v1.5 MTEB 모델을 사용하여 텍스트 임베딩 인터페이스를 실행합니다. cd text-embeddings-inference
text-embeddings-router --model-id BAAI/bge-large-en-v1.5 --max-client-batch-size 5000 --port 88882. 새로운 터미널 :이 저장소를 복제하고 MongoDB 및 Qdrant 용 Docker Compose 서비스를 실행합니다.
git clone [email protected]:tigranbs/search-engine-example-text-embeddings.git
cd search-engine-example-text-embeddings
docker compose up -d3. 새로운 터미널 : 데이터 작업자를 실행하여 CommonCrawl 파일을 다운로드하여 텍스트 임베드 인터페이스로 보내어 검색 데이터를 벡터화하기 시작합니다.
cd search-engine-example-text-embeddings
cd data-worker
npm i
npm start4 새로운 터미널 : 검색을 시작하려면 WebApp을 실행하십시오
cd search-engine-example-text-embeddings
cd webapp
npm i
npm run dev이 단계 후에는 http : // localhost : 3000으로 탐색하고 검색 페이지를 확인할 수있어서 이미 정리 된 텍스트 위에 MongoDB 및 Qdrant와 직접 작동합니다.