Этот проект был создан, чтобы продемонстрировать, как мы можем создавать современные поисковые системы, используя простую структуру текстовых встроков (трансформаторы Huggingface) и векторную базу данных.
В качестве основы для данных поиска я использовал последние шесть месяцев Clawled Data Plawled Data, но, поскольку, поскольку на моем ноутбуке потребовалось почти две недели (M1 Max), чтобы векторизировать ~ 1 млн домены, я предполагаю, что кто -то, кто будет использовать этот репозиторий, не будет пытаться векторизировать весь набор данных?
Чтобы запустить этот проект на месте, вам понадобится!
data-worker и webapp (next.js)Этот проект не был оптимизирован для производства, поэтому не существует реализации развертывания производства одной команды. Это будет примером того, как создать поиск вашего сайта, чтобы сделать результаты больше похожи на Google (вроде…)
Вы найдете больше информации об использовании интерфейса Text Fext Faceface на их официальной странице GitHub. Тем не менее, в контексте этого репозитория я был заинтересован в том, чтобы собирать его для MacOS M1 и использовать его с помощью графического процессора M1 Max Metal, который доступен только через прямую компиляцию. Вы можете использовать контейнеры Docker на основе Intel, которые предварительно построены и доступны для графических процессоров NVIDIA.
Приведенные ниже команды будут клонировать интерфейс Text Enceddings и создавать их для драйвера MacOS Metal для использования графических процессоров M1.
git clone https://github.com/huggingface/text-embeddings-inference.git
cd text-embeddings-inference
cargo install --path router -F candle -F metalЭто может занять несколько минут и 100% вашего процессора, так что возьмите кофе, тем временем ☕
Каталог data-worker содержит простые сценарии Node.js, которые предназначены для загрузки указанных сроков данных общего проведения и запуска векторизации текстового содержимого из ползаемого HTML и сохранения результатов в виде векторов в базу данных Qdrant и MongoDB для последующего поиска.
Важно отметить, что объем данных является огромным для «локального запуска», поэтому не пытайтесь ждать, пока векторизация завершена, потребуется месяцы подряд, чтобы завершить это, если он даже поместится на ваш ноутбук. После 2 недель исполнения я только что сдался, потому что это потребовалось почти 300 ГБ хранения, и у меня было всего 4% из этих 6 месяцев набора данных CommonCrawl.
Само webapp очень простое приложение next.js с тейсфером CSS и некоторыми пользовательскими файлами в каталоге webapp/src/utils , где у меня есть функциональность подключения к монгодбу, Qdrant Databases, а также просит текстовый интерфейс Enterdings, чтобы векторизировать текст поиска перед выполнением фактического запроса на поиск.
Эти команды ниже представляют собой шаги для запуска этого проекта локально и запуска векторизации и поиска набора данных 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. Новый терминал: клонировать этот репозиторий и запустите службы Docker Compose для MongoDB и Qdrant
git clone [email protected]:tigranbs/search-engine-example-text-embeddings.git
cd search-engine-example-text-embeddings
docker compose up -d3. Новый терминал: запустите работник данных, чтобы запустить векторизацию данных поиска путем загрузки файлов CommonCraw
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 поверх уже синхронизированных текстов, которые у вас уже будут.