このプロジェクトは、テキストの埋め込み(ハギングフェイストランス)とベクトルデータベースの簡単な構造を使用して最新の検索エンジンを構築する方法を示すために作成されました。
検索データの根拠として、私はCommonCrawlの最後の6か月のクロールされたWebサイトデータを使用しましたが、ラップトップ(M1 Max)で約2週間かかって〜1MLNドメインをベクトル化したため、このリポジトリを使用する人は誰でもデータセット全体をベクトル化しようとしないと思います。
このプロジェクトをローカルに実行するには、必要になります!
data-workerとwebapp用(next.js)このプロジェクトは生産用に最適化されていないため、「1つのコマンド」生産展開の実装はありません。これは、Googleのように結果を作成するためにWebサイトの検索を構築する方法の例です(一種の…)
公式のGitHubページで、Huggingface Text Embeddingsインターフェイスの使用に関する詳細情報をご覧ください。それでも、このリポジトリのコンテキストのために、MacOS M1用にコンパイルし、M1 Max Metal GPUで使用することに興味があります。 IntelベースのプロセッサのDockerコンテナを使用できます。これは、事前に構築され、NVIDIA GPUで利用可能です。
以下のコマンドは、テキストエンミングインターフェイスをクローンし、Macos Metalドライバーが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ディレクトリには、指定されたCommonCrawlデータの時間枠をダウンロードし、クロールされたHTMLからテキストコンテンツのベクトル化を開始し、後の検索リファレンスのためにQDRANTデータベースとMongoDBのベクトリとして結果を保存するように設計されたSimple Node.jsスクリプトが含まれています。
データの量は「ローカルラン」には膨大であることに注意することが重要です。そのため、ベクトル化が完了するまで待ってはいけません。ラップトップに適合する場合は、これを完了するには数か月連続かかります。 2週間の実行の後、私はあきらめました。なぜなら、それはほぼ300GBのストレージを必要とし、その6か月のCommonCrawlデータセットから4%しか完了しなかったからです。
webapp自体は非常にシンプルです。次は非常にシンプルです。JSアプリは、Tailwind CSSとwebapp/src/utilsディレクトリ内のいくつかのカスタムファイルを備えています。ここでは、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 Servicesを実行します
git clone [email protected]:tigranbs/search-engine-example-text-embeddings.git
cd search-engine-example-text-embeddings
docker compose up -d3.新しい端末:CommonCrawlファイルをダウンロードしてテキストEmbeddingsインターフェイスに送信して、データワーカーを実行して検索データのベクトル化を開始します
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で直接動作する検索ページを参照してください。