В нашем предыдущем сообщении в блоге мы представили новую категорию базы данных: прогностическая база данных.

Теперь мы углубимся в то, как использовать эту прогностическую базу данных.

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 успешно используется в таких проектах клиентов, как:

В целом, 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