? Мы ищем бета -тестеры для нашего виртуального помощника. Свяжитесь с нами, если вы заинтересованы в использовании его на своем сайте.
Основные моменты • Обзор • Проценсы • Установка • Начало работы • Kubernetes • Документация • Учебные пособия • Внесение вклад • Заметки о выпуске • Блог
⚡ NBOOST -это масштабируемая платформа для поискового двигателя для разработки и развертывания самых современных моделей для улучшения актуальности результатов поиска.

NBOOST использует современные модели для производства нейронных поисковых систем, специфичных для домена. Платформа также может улучшить другие нисходящие задачи, требующие рангового ввода, таких как ответ на вопрос.
Свяжитесь с нами, чтобы запросить специфичные для домена модели или оставить отзыв
Рабочий процесс NBOOST относительно прост. Возьмите графику выше и представьте, что сервер в этом случае является Elasticsearch.

В обычном запросе поиска пользователь отправляет запрос Elasticsearch и возвращает результаты.

В запросе поиска NBOOST пользователь отправляет запрос на модель . Затем модель запрашивает результаты Elasticsearch и выбирает лучшие, чтобы вернуться к пользователю.
? Обратите внимание, что мы оцениваем модели на различных наборах, чем они были обучены (MS Marco vs Trec-Car), что предполагает обобщение этих моделей для многих других проблем поиска реального мира.
| Тонкие модели | Зависимость | Оценка набор | Поиск повышения [1] | Скорость на графическом процессоре |
|---|---|---|---|---|
nboost/pt-tinybert-msmarco ( по умолчанию ) | Bing Запросы | +45% (0,26 против 0,18) | ~ 50 мс/запрос | |
nboost/pt-bert-base-uncased-msmarco | Bing Запросы | +62% (0,29 против 0,18) | ~ 300 мс/запрос | |
nboost/pt-bert-large-msmarco | Bing Запросы | +77% (0,32 против 0,18) | - | |
nboost/pt-biobert-base-msmarco | биом | +66% (0,17 против 0,10) | ~ 300 мс/запрос |
Инструкции для воспроизведения здесь.
[1] MRR по сравнению с BM25, по умолчанию для Elasticsearch. Повторный топ 50.
[2] https://github.com/nyu-dl/dl4marco-bert
Чтобы использовать одну из этих тонких моделей с NBOOST, запустите nboost --model_dir bert-base-uncased-msmarco например, он будет загружать и автоматически кеш.
Используя предварительно обученные модели «Понимание языка», вы можете повысить метрики релевантности поиска почти в 2 раза по сравнению с простой текстовой поиском, практически без дополнительной конфигурации. При оценке производительности часто существует компромисс между точностью и скоростью модели, поэтому мы сравниваем оба этих фактора выше. Эта таблица лидеров находится в стадии разработки, и мы намерены выпустить более передовые модели!
Есть два способа получить NBOOST, либо в виде изображения Docker, либо как пакет PYPI. Для пользователей облаков мы настоятельно рекомендуем использовать NBOOST через Docker .
? В зависимости от вашей модели вы должны установить соответствующие зависимости Tensorflow или Pytorch. Мы упаковываем их ниже.
Для установки NBOOST следуйте таблице ниже.
| Зависимость | ? Докер | ? Пипи | ? Kubernetes |
|---|---|---|---|
| Pytorch ( рекомендуется ) | koursaros/nboost:latest-pt | pip install nboost[pt] | helm install nboost/nboost --set image.tag=latest-pt |
| Tensorflow | koursaros/nboost:latest-tf | pip install nboost[tf] | helm install nboost/nboost --set image.tag=latest-tf |
| Все | koursaros/nboost:latest-all | pip install nboost[all] | helm install nboost/nboost --set image.tag=latest-all |
| - ( для тестирования ) | koursaros/nboost:latest-alpine | pip install nboost | helm install nboost/nboost --set image.tag=latest-alpine |
В любом случае, если вы его установите, если вы в конечном итоге читаете следующее сообщение после $ nboost --help или $ docker run koursaros/nboost --help , тогда вы готовы к работе!

![]() | Прокси является ядром NBOOST. Прокси - это, по сути, обертка, позволяющая служить модели. Он может понять входящие сообщения из конкретных поисковых API (то есть Elasticsearch). Когда прокси получает сообщение, он увеличивает количество результатов, которые клиент просит, чтобы модель могла повлиять на больший набор и вернуть (надеюсь) лучшие результаты. Например, если клиент просит 10 результатов, чтобы сделать запрос «коричневые собаки» от Elasticsearch, то прокси может увеличить запрос результатов до 100 и отфильтровать лучшие десять результатов для клиента. |
В этом примере мы создадим прокси, чтобы сидеть между клиентом и Elasticsearch и повысить результаты!
Если вы хотите запустить пример на GPU, убедитесь, что у вас есть Tensorflow 1.14-1.15, Pytorch или Onnx Stime с CUDA для поддержки функциональности моделирования. Однако, если вы хотите просто запустить его на процессоре, не беспокойтесь об этом. Для обоих случаев просто беги:
pip install nboost[pt]? Если у вас уже есть сервер Elasticsearch, вы можете пропустить этот шаг!
Если у вас нет Elasticsearch, не волнуйтесь! Мы рекомендуем настроить локальный кластер Elasticsearch с использованием Docker (при условии установки Docker). Во -первых, получите изображение ES, работая:
docker pull elasticsearch:7.4.2После того, как у вас есть изображение, вы можете запустить сервер Elasticsearch через:
docker run -d -p 9200:9200 -p 9300:9300 -e " discovery.type=single-node " elasticsearch:7.4.2Теперь мы готовы развернуть нашу нейронную прокси! Это очень просто сделать, беги:
nboost
--uhost localhost
--uport 9200
--search_route " /<index>/_search "
--query_path url.query.q
--topk_path url.query.size
--default_topk 10
--choices_path body.hits.hits
--cvalues_path _source.passage?
--uhostи--uportдолжны быть такими же, как на сервере Elasticsearch выше! Uhost и Uport не имеют достопримечательностей для Upstream-Host и Upstream-Port (имея в виду восходящий сервер).
Если вы получите это сообщение: Listening: <host>:<port> , тогда мы готовы идти!
NBOOST имеет удобный инструмент индексации встроенный ( nboost-index ). Для демонстрационных целей будет индексировать набор отрывков о путешествиях и отелях через NBOOST. Вы можете добавить индекс на свой сервер Elasticsearch, работая:
travel.csvпоставляется с nboost
nboost-index --file travel.csv --index_name travel --delim , --id_colТеперь давайте протестируем это! Нажмите на Elasticsearch с:
curl " http://localhost:8000/travel/_search?pretty&q=passage:vegas&size=2 " Если в результате Elasticsearch есть тег nboost , поздравляю, он работает!

Давайте посмотрим на фронт NBOOST . Зайдите в свой браузер и посетите Localhost: 8000/nboost.
Если у вас нет доступа к браузеру, вы можете
curl http://localhost:8000/nboost/statusдля той же информации.

Фронт записал все, что произошло:
localhost:9200 . Чтобы увеличить количество параллельных прокси, просто увеличьте --workers . Для более надежного подхода к развертыванию вы можете распространять прокси через Kubernetes (см. Ниже).

Для углубленного запроса DSL и других поисковых решений API (таких как Bing API) см. Документы.
Мы можем легко развернуть NBOOST в кластере Kubernetes, используя Helm.
Сначала нам нужно зарегистрировать репо с вашим кластером Kubernetes.
helm repo add nboost https://raw.githubusercontent.com/koursaros-ai/nboost/master/charts/
helm repo updateПопробуем развернуть четыре реплики:
helm install --name nboost --set replicaCount=4 nboost/nboost Все возможные параметры --set (values.yaml) перечислены ниже:
| Параметр | Описание | По умолчанию |
|---|---|---|
replicaCount | Количество реплик для развертывания | 3 |
image.repository | NBOOST ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЕ | koursaros/nboost |
image.tag | NBOOST Image Tag | latest-pt |
args.model | Название модельного класса | nil |
args.model_dir | Название или каталог современной модели | pt-bert-base-uncased-msmarco |
args.qa | Использовать плагин QA | False |
args.qa_model_dir | Название или каталог модели QA | distilbert-base-uncased-distilled-squad |
args.model | Название модельного класса | nil |
args.host | Хост -имени прокси -сервера | 0.0.0.0 |
args.port | Порт для прокси для прослушивания | 8000 |
args.uhost | Имя хоста сервера API поиска вверх по течению | elasticsearch-master |
args.uport | Порт вверх по течению | 9200 |
args.data_dir | Каталог для кэша модели двоичный файл | nil |
args.max_seq_len | Макс комбинированная длина токена | 64 |
args.bufsize | Размер HTTP -буфера в байтах | 2048 |
args.batch_size | Размер партии для пробега через модель Rerank | 4 |
args.multiplier | Фактор, чтобы увеличить результаты | 5 |
args.workers | Количество потоков, обслуживающих прокси | 10 |
args.query_path | Jsonpath в просьбе найти запрос | nil |
args.topk_path | Jsonpath, чтобы найти количество запрошенных результатов | nil |
args.choices_path | Jsonpath, чтобы найти множество вариантов для повторного порядок | nil |
args.cvalues_path | Jsonpath, чтобы найти значения STR выбора | nil |
args.cids_path | Jsonpath, чтобы найти идентификаторы выбора | nil |
args.search_path | Путь URL -адреса для повторения через NBOOST | nil |
service.type | Kubernetes Service Type | LoadBalancer |
resources | Потребности и ограничения ресурсов для применения к стручке | {} |
nodeSelector | Метки узлов для назначения стручков | {} |
affinity | Настройки сродства для назначения стручков | {} |
tolerations | Toperator Labels для назначения стручков | [] |
image.pullPolicy | Политика привлечения изображений | IfNotPresent |
imagePullSecrets | Docker Registry Secret имена как массив | [] (не добавляют секреты притяжения изображения в развернутые стручки) |
nameOverride | Строка для переопределения chart.name | nil |
fullnameOverride | Строка для переопределения chart.fullName | nil |
serviceAccount.create | Указывает, создается ли учетная запись сервиса | nil |
serviceAccount.name | Название учетной записи службы для использования. Если не установить и создать, верно, имя генерируется с использованием шаблона FullName | nil |
serviceAccount.create | Указывает, создается ли учетная запись сервиса | nil |
podSecurityContext.fsGroup | Идентификатор группы для контейнера | nil |
securityContext.runAsUser | Идентификатор пользователя для контейнера | 1001 |
ingress.enabled | Включить ресурс Ingress | false |
ingress.hostName | Имя хоста для вашей установки | nil |
ingress.path | Путь внутри структуры URL | [] |
ingress.tls | Включить вход с TLS | [] |
ingress.tls.secretName | Секрет типа TLS, который будет использован | chart-example-tls |
Официальная документация NBOOST размещена на nboost.readthedocs.io. Он автоматически создан, обновляется и архивируется на каждом новом выпуске.
Вклады высоко ценятся! Вы можете внести исправления или обновления и совершить их в NBOOST. Вот шаги:
fix-nboost-typo-1Fix/model-bert: improve the readability and move sectionsFix/model-bert: improve the readability and move sectionsБолее подробную информацию можно найти в руководящих принципах участника.
Если вы используете NBOOST в академической статье, мы хотели бы, чтобы вас цитировали. Вот два способа ссылки на NBOOST:
footnote{https://github.com/koursaros-ai/nboost}
@misc{koursaros2019NBoost,
title={NBoost: Neural Boosting Search Results},
author={Thienes, Cole and Pertschuk, Jack},
howpublished={ url {https://github.com/koursaros-ai/nboost}},
year={2019}
}Если вы загрузили копию двоичного или исходного кода NBOOST, обратите внимание, что двоичный и исходный код NBOOST и исходный код лицензированы по лицензии Apache, версия 2.0.
Koursaros AI рад предоставить это программное обеспечение с открытым исходным кодом в сообщество.