В нашем предыдущем сообщении в блоге мы представили новую категорию базы данных: прогностическая база данных.
Теперь мы углубимся в то, как использовать эту прогностическую базу данных.
Aito был разработан, чтобы быть знакомым для аудитории разработчиков, и его можно использовать как любую базу данных.
Синтаксис схемы JSON был вдохновлен ElasticSearch:
{
"schema": {
"messages": {
"type": "table",
"columns": {
"content": { "type": "Text" }
}
}
}
}
Таблицу, определенную схемой, можно создать в Aito с помощью простого HTTP-запроса PUT:
curl -X PUT "https://$AITO_ENVIRONMENT.api.aito.ai/api/v1/schema" \
-H "x-api-key: $API_KEY" \
-H "content-type: application/json" \
[email protected]
С другой стороны, синтаксис запроса был вдохновлен как SQL, так и MongoDB. Вот пример для данных hello world:
curl -X POST \ https://$AITO_ENVIRONMENT.api.aito.ai/api/v1/_search \ -H "x-api-key: $API_KEY" \ -H "content-type: application/json" \ -d '{ "from": "messages" }'
Данные JSON можно загрузить с помощью простого запроса POST, как и в большинстве API:
curl -X POST \
https://$AITO_ENVIRONMENT.api.aito.ai/api/v1/data/messages/batch \
-H "x-api-key: $API_KEY" \
-H "content-type: application/json" \
-d '
[
{ "content": "Hello world" },
{ "content": "A second message" }
]'
С другой стороны, синтаксис запроса был вдохновлен как SQL, так и MongoDB. Вот пример для данных hello world:
curl -X POST \
https://$AITO_ENVIRONMENT.api.aito.ai/api/v1/_search \
-H "x-api-key: $API_KEY" \
-H "content-type: application/json" \
-d '{
"from": "messages"
}'
Это обеспечивает следующий ответ:
{
"offset": 0,
"total": 2,
"hits": [
{ "content": "Hello world" },
{ "content": "A second message" }
]
}
Использование статистического мышления
Давайте теперь рассмотрим немного более сложный пример, который называется демонстрация продуктового магазина. Вы можете найти демо-приложение здесь. Он имеет 3 интеллектуальные функции, которые
- рекомендации,
- персонализированный поиск и
- автоматическая маркировка товаров.
Рассмотрим первый функционал, рекомендации. Чтобы понять функциональность, мы должны сначала понять проблему, поэтому давайте посмотрим на следующий скриншот:
{
"from": "impressions",
"where": {
"session.user": "larry",
"product.id": {
"$and": [
{ "$not": "6409100046286" }
]
}
},
"recommend": "product",
"goal": {
"purchase": true
},
"limit": 5
}
Скриншот наглядно описывает постановку задачи, когда продуктовый магазин должен порекомендовать покупателю (Ларри) продукты, которых у этого покупателя еще нет в корзине.
Запрос представлен на следующем изображении. Запрос состоит из объекта json, содержащего такие поля, как «откуда», «где» и «лимит», которые напоминают запросы SQL, а предложение «где» напоминает MongoDB:
Айто отвечает на запрос следующим JSON:
{
"offset": 0,
"total": 41,
"hits": [
{
"$p": 0.38044899845646235,
"category": "104",
"id": "6408430000258",
"name": "Valio eila™ Lactose-free semi-skimmed milk drink 1l",
"price": 1.95,
"tags": "lactose-free drink"
},
{
"$p": 0.20982669270272708,
"category": "104",
"id": "6410405216120",
"name": "Pirkka lactose-free semi-skimmed milk drink 1l",
"price": 1.25,
"tags": "lactose-free drink pirkka"
},
{
"$p": 0.04097576026274742,
"category": "100",
"id": "6410405093677",
"name": "Pirkka iceberg salad Finland 100g 1st class",
"price": 1.29,
"tags": "fresh vegetable pirkka"
},
{
"$p": 0.04017592239308106,
"category": "108",
"id": "6415600501811",
"name": "Coca-Cola 1,5l soft drink",
"price": 2.49,
"tags": "drink"
},
{
"$p": 0.03593903693070478,
"category": "103",
"id": "6412000030026",
"name": "Saarioinen Maksalaatikko liver casserole 400g",
"price": 1.99,
"tags": "meat food"
}
]
}
В JSON: мы можем найти смещение страницы, общее количество просмотров, фактические документы и вероятность покупки в поле $p.
Хотя запрос и ответ могут выглядеть простыми, во время довольно мгновенной операции:
- Айто создал рекомендательную модель на основе запроса и всей таблицы показов.
- И Айто использовал запрос и модель для фильтрации и оценки всего содержимого таблицы продуктов.
Приложения
В настоящее время Aito находится в стадии бета-тестирования, но как база данных она достаточно стабильна, и существует множество приложений, в которых Aito имеет хорошую производительность и пропускную способность.
Aito успешно используется в таких проектах клиентов, как:
- Заполнение корзины покупок из PDF
- Поиск релевантных людей по их цифровому следу в чатах, мероприятиях и проектах
- Прогнозирование и аналитика оттока
- Оценка спроса
- Автоматизация чата и рабочего процесса
- Автоматизация счетов
В целом, Aito в настоящее время лучше всего используется
- для оптимизации процесса
- для внутренних инструментов и аналитики
- для прототипов и проверки концепций
- а также для MVP и небольших постановок
Числа
У Aito есть наборы для оценки, стресс-тестирования и тестирования производительности, которые раскрывают некоторые текущие возможности Aito.
Хотя ценность Айто не заключается в том, чтобы давать наилучшие возможные оценки, Айто очень хорошо справляется с классическими задачами обучения под наблюдением. Здесь есть 2 эталонных тестовых примера (репозиторий UCI набора данных ДНК-сплайса и SMS-спама), где Aito дает лучшие результаты, чем сравнение:
В среднем прогнозирование спама заняло 8 мс, а набора данных сплайсинга — 12 мс.
Айто также был разработан, чтобы быть не просто классификатором, но и надлежащим байесовским оценщиком вероятности. Хотя оценки вероятности могут время от времени быть необъективными, во многих случаях оценки могут быть достаточно точными, как показано здесь (для набора данных о спаме):
Тесты и наш собственный опыт показывают, что Aito нормально работает до 1 млн строк и 1 млн функций. Если база данных Aito обработана операцией _optimize, Aito может работать достаточно хорошо и с примерно 10 миллионами строк.
Следующий тестовый пример демонстрирует Aito со сгенерированным набором данных электронной торговли. В таблице также указана стоимость добавления 1000 показов в пакетном режиме.
Хотя результаты показывают, что традиционные базы данных (такие как Postgres, MySql, Mongo и т. д.) могут с большим отрывом превзойти Aito в обычных операциях с базами данных, Aito по-прежнему обеспечивает достойную производительность базы данных для многих приложений в качестве дополнения к своим службам искусственного интеллекта.
Ахиллесова пята Айто сейчас — это быстродействие с большими наборами данных, если база данных сталкивается с непрерывной записью. Если у вас есть функции 1M, после операции записи выполнение следующей операции запроса может занять несколько секунд. Это часто не имеет значения при внутреннем использовании, и этим можно управлять, обновляя базу данных каждую ночь, ежечасно или ежеминутно.
При этом скорость записи и многие другие характеристики в порядке. Следующий график демонстрирует размер таблицы показов, среднюю скорость запросов и пропускную способность запросов. Эти результаты можно улучшить (Aito все еще находится в стадии бета-тестирования), но они уже достаточно хороши для многих приложений, таких как внутренние инструменты корпораций, используемые сотнями или тысячами пользователей:
Будущее
Мы верим, что создаем будущее. Хотя сейчас Aito является скорее заменой более узким инструментам ML/AI, в будущем мы хотели бы, чтобы Aito играл роль основной базы данных. В этом будущем, которое мы стремимся создать: каждая база данных умна и способна предоставить программному обеспечению не только свою память, но и свой интеллект.
Мы сердечно приглашаем вас поделиться нашим видением будущего. Лучший способ почувствовать вкус этого будущего и помочь реализовать его — попробовать Айто. Для этого просто запросите бесплатную пробную версию на этой странице и, пожалуйста, расскажите сообществу и нам, что вам в нем нравится, каковы ваши впечатления от него, а также что вы хотели бы, чтобы мы улучшили.
Первоначально опубликовано на https://aito.ai.
Автор: Антти Раухала, соучредитель и главный специалист по данным в aito.ai