Weaviate — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''Weaviate''' - это современная поисковая система с открытым исходным кодом, которая реализована на языке программирования [[Go_(язык программирования) | Go]]. Основана на механизме встраивания графов со встроенной моделью НЛП, который называется Contextionary. Уникальность Weaviate заключается в том, что она хранит данные в векторном пространстве, а не в традиционной структуре строк-столбцов или графиков, что позволяет искать данные по их значению, а не по ключевым словам. Поддерживает использование нативных RESTful API, Containerized и Scalable, а в качестве языка запросов используется GraphQL. Weaviate разработан организацией SeMI Technologies.
+
'''Weaviate''' - это современная поисковая система с открытым исходным кодом, которая реализована на языке программирования [[Go_(язык программирования) | Go]]. Основана на механизме встраивания графов со встроенной моделью НЛП, который называется Contextionary. Уникальность Weaviate заключается в том, что она хранит данные в векторном пространстве, а не в традиционной структуре строк-столбцов или графиков, что позволяет искать данные по их значению, а не по ключевым словам. Поддерживает использование нативных RESTful API<ref>[https://ru.wikipedia.org/wiki/REST/ REST Википедия]</ref>, Containerized и Scalable<ref group="Источник"> Weaviate documentation//Документация Weaviate : https://www.semi.technology/documentation/weaviate/current/ (дата обращения: 23.06.2020).</ref>, а в качестве языка запросов используется GraphQL. Weaviate разработан организацией SeMI Technologies.
 
{{Infobox software
 
{{Infobox software
 
| name                  = Weaviate
 
| name                  = Weaviate
Строка 14: Строка 14:
  
 
==SeMI Technologies==
 
==SeMI Technologies==
SeMI Technologies основана 26 июня 2019 года в Нидерландах, основателями которой являются Боб Ван Луйт, Миша Верхаген и Эттьен Дилокер. Это компания, базирующаяся на поисковых графах с открытым исходным кодом. За первый год своей работы, и благодаря Weaviate, данная организация уже имеет таких партнёров как Google Cloud, METRO и Flexfab. Также эти разработчики предлагают такой продукт, как платформы для разработки искусственного интеллекта, что делает SeMI Technologies перспективной командой. Но эта компания занимается и другой деятельностью, помимо разработки программного обеспечения. Например, блог основателя Боба Ван Луйта содержит в себе статью «Исследования в области технологий, искусства и бизнеса», которая является источником для лекций на конференциях и университетах по всей Европе, США и России.
+
SeMI Technologies<ref>[https://www.semi.technology/ Официальный сайт SeMi Technologies]</ref> основана 26 июня 2019 года в Нидерландах, основателями которой являются Боб Ван Луйт, Миша Верхаген и Эттьен Дилокер. Это компания, базирующаяся на поисковых графах с открытым исходным кодом. За первый год своей работы, и благодаря Weaviate, данная организация уже имеет таких партнёров как Google Cloud, METRO и Flexfab. Также эти разработчики предлагают такой продукт, как платформы для разработки искусственного интеллекта, что делает SeMI Technologies перспективной командой. Но эта компания занимается и другой деятельностью, помимо разработки программного обеспечения. Например, блог основателя Боба Ван Луйта содержит в себе статью «Исследования в области технологий, искусства и бизнеса», которая является источником для лекций на конференциях и университетах по всей Европе, США и России.
  
  
  [[ File: Semifounders.png | 500px | center |thumb| {{center| Рисунок 1 – Основатели SeMI Technologies}} ]]
+
  [[ File: Semifounders.png | 700px | center |thumb| {{center| Рисунок 1 – Основатели SeMI Technologies}} ]]
 
==Достоинства Weaviate==
 
==Достоинства Weaviate==
 
Weaviate это графоориентированная база данных. В базе данных графы отражают представление сущностей, которые в ней хранятся,  и их отношений между собой. При сравнении с классическими реляционными базами данных, графоориентированные базы данных могут представлять сразу несколько точек зрения на одни и те же данные одновременно. Этот тип баз данных  разработан специально учитывая то, что информация в системе подвержена постоянному изменению, поэтому модель базы легко изменить в любой момент времени, в отличие от реляционных баз.<br />
 
Weaviate это графоориентированная база данных. В базе данных графы отражают представление сущностей, которые в ней хранятся,  и их отношений между собой. При сравнении с классическими реляционными базами данных, графоориентированные базы данных могут представлять сразу несколько точек зрения на одни и те же данные одновременно. Этот тип баз данных  разработан специально учитывая то, что информация в системе подвержена постоянному изменению, поэтому модель базы легко изменить в любой момент времени, в отличие от реляционных баз.<br />
 
Кроме того, такие хранилища позволяют хранить, индексировать  и получать различные данные из разных источников — например, при решении какой-то актуальной задачи по интеграции сервисов, которую можно свести к объединению разрозненных реляционных баз в единую базу и приводит к задаче обработки структурированных данных. Внутри каждой базы данные строго структурированы для работы с реляционной моделью, но каждая база структурирована по-своему, поэтому задача их интеграции в рамках реляционной модели требует того, что придётся реинжинирить всё решениё.<br />
 
Кроме того, такие хранилища позволяют хранить, индексировать  и получать различные данные из разных источников — например, при решении какой-то актуальной задачи по интеграции сервисов, которую можно свести к объединению разрозненных реляционных баз в единую базу и приводит к задаче обработки структурированных данных. Внутри каждой базы данные строго структурированы для работы с реляционной моделью, но каждая база структурирована по-своему, поэтому задача их интеграции в рамках реляционной модели требует того, что придётся реинжинирить всё решениё.<br />
 
Изменять архитектуру информационной системы, построенной и основанной на графоориентированной модели, намного легче, чем изменять систему, построенную на реляционной модели, и, в основном, даже не требуют реинжиниринга базы. Данная база данных идеально подходит для задач, требующих учета и выявления большого количества взаимосвязей. Для графа достаточно легко принимать новую информацию об узлах, он просто создаёт новые рёбра, чтобы связать поступившие данные с уже существующими. Для сравнения, в реляционной базе добавление новой структуры, которая еще не учтена в схеме, требует создания новой схемы и нового комбинированного набора данных. Способность графовой БД быстро обрабатывать новую информацию делает ее идеальной для проектов, развивающихся по этой схеме.<br />
 
Изменять архитектуру информационной системы, построенной и основанной на графоориентированной модели, намного легче, чем изменять систему, построенную на реляционной модели, и, в основном, даже не требуют реинжиниринга базы. Данная база данных идеально подходит для задач, требующих учета и выявления большого количества взаимосвязей. Для графа достаточно легко принимать новую информацию об узлах, он просто создаёт новые рёбра, чтобы связать поступившие данные с уже существующими. Для сравнения, в реляционной базе добавление новой структуры, которая еще не учтена в схеме, требует создания новой схемы и нового комбинированного набора данных. Способность графовой БД быстро обрабатывать новую информацию делает ее идеальной для проектов, развивающихся по этой схеме.<br />
 +
 +
==Семантическое хранение данных==
 +
Далее будут рассуждения Боба Ван Луйта о семантических графах<ref group="Источник"> How to semantically store data objects //Как семантически хранить объекты данных : https://hackernoon.com/the-history-of-the-weaviate-search-graph-gk9132dc/ (дата обращения: 23.06.2020).</ref>.<br />
 +
Работая над программными проектами в своей повседневной жизни, Боб Ван Луйт заметил, что одна из самых повторяющихся проблем связана с именами и поиском. Перед ним встал вопрос наименования определенных объектов и нахождения данных, которые были структурированы по-разному. Он был очень заинтересован семантическими сетями, но столкнулся с проблемой того, чтобы люди согласились с соглашениями и стандартами именования.
 +
Это заставило Боба задуматься о том, чтобы компаниям больше не приходилось договариваться об этом. "Что если бы мы могли просто хранить данные и заставить машину определить концепцию, которую представляют ваши данные?"
 +
Проверка концепции была разбита на три основных раздела, которые были подтверждены один за другим.<br />
 +
1)Можно ли получить больше контекста вокруг слова, перемещаясь по гиперпространству? Если так;<br />
 +
2)Можно ли сохранить смысловой смысл, рассчитав центроид группы слов (например, «спасибо за суши на прошлой неделе»)? Если так;<br />
 +
3)Можно ли сделать это быстро без переобучения модели ML?<br />
 +
[[ File: Db_demo.png | 900px | center |thumb| {{center| Рисунок 2 – Гиперпространство значений слов}} ]]
 +
Нахождение большего контекста вокруг слова связано с понятием, называемым устранением неоднозначности. К примеру, слово «яблоко». В гиперпространстве (см. рисунок 2), если искать другие слова по соседству, найдутся слова, относящиеся к яблочному фрукту (например, другие фрукты, соки и т.д.), а также Apple, компания (iPhone, Macintosh и другие понятия, связанные с компанией).
 +
Чтобы проверить, возможно ли устранить неоднозначность слова «яблоко», был сделан следующий простой шаг. Всего лишь стоит искать все слова, которые находятся в промежутке между «яблоком» и «фруктом». Оказывается, результаты намного лучше. Можно устранить неоднозначность, перемещаясь по гиперпространству, используя отдельные слова в качестве маяков для навигации.
 +
На следующем шаге цель - проверить, возможно ли сохранить семантическое значение при хранении объекта данных в гиперпространстве, вычисляя центроид, используя отдельные слова в качестве маяков. Сделаем это следующим образом: название этой статьи в Vogue: «Новая капсула Louis Vuitton с League of Legends привносит французскую высокую моду в онлайн-игры — и наоборот».
 +
Если посмотрить на векторные позиции для отдельных слов (то есть, Луи, Виттон, новый, капсула и так далее) и поместить новый маяк в центр пространства этих векторных позиций, то можно найти статью, выполнив поиск «от кутюр». <br />
 +
Конечно, со временем алгоритм вычисления центроидов в Weavite стал более изощренным, но общая концепция все та же.
 +
Проверяя два вышеизложенных предположения, можно выяснить, что есть возможность почти мгновенно хранить объекты данных в семантическом пространстве, а не в более традиционной структуре столбца-столбца или графе. Это позволяет индексировать данные в зависимости от их значения.
 +
Хотя были проверены предположения о семантических понятиях, этого было недостаточно для создания фактической семантической поисковой системы, Weaviate также требовалась модель данных для представления этих результатов.
 +
==Запросы в Weaviate==
 +
Разработчики уделили отдельное внимание дизайну и разработке запросового языка Weaviate, так как это очень важная часть для пользователя, не до конца углублённого в базы данных<ref group="Источник"> How Weaviate's GraphQL API was designed //Как была разработана GraphQL API для Weaviate : https://hackernoon.com/how-weaviates-graphql-api-was-designed-t93932tl/ (дата обращения: 23.06.2020).</ref>.<br/> Как известно, человек коммуницирует с помощью взаимодействий, он задаёт вопросы, когда ему что-либо требуется, либо использует глаголы или даже команды, когда ему нужна чья-то помощь. Поэтому нидерландские разработчики сделали систему запросов аналогичной взаимодействиям человека, чтобы ему было комфортно в пользовании, что в свою очередь повышает эффективность базы данных. По этому принципу и была разработана GraphQL схема.<br/>
 +
Рассмотрим пример. Представим, что пользователь зашёл в супермаркет Weaviate и хочет узнать, каких товаров меньше всего в наличии. Для этого стоит применить следующий запрос:
 +
<syntaxhighlight lang="XML">
 +
{
 +
  Get {
 +
    Things {
 +
      Product(
 +
        where: {
 +
          path: ["inStock"],
 +
          operator: LessThan,
 +
          valueInt: 100
 +
        }) {
 +
        name
 +
        inStock
 +
      }
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
 +
При этом вывод будет выглядеть так:
 +
<syntaxhighlight lang="XML">
 +
{
 +
  "data": {
 +
    "Get": {
 +
      "Things": {
 +
        "Product": [
 +
          {
 +
            "name": "Baguette",
 +
            "inStock": 8
 +
          },
 +
          {
 +
            "name": "Banana",
 +
            "inStock": 46
 +
          },
 +
          {
 +
            "name": "Pineapple",
 +
            "inStock": 17
 +
          },
 +
          {
 +
            "name": "Toilet paper",
 +
            "inStock": 38
 +
          }
 +
        ]
 +
      }
 +
    }
 +
  }
 +
}
 +
</syntaxhighlight>
 +
Как структурирован запрос : "Get" и "Things" - высокоуровневые объекты в обозначенной схеме. "Get" - глагол, который используется, когда человек хочет, что-то получить. Далее Weaviate проводит соответствие между объектами "Actions" и "Things". Происходит поиск в контейнере "Products" с параметрами "name" и "inStock". Цель этого запроса - сделать действие "Get", то есть получить все объекты типа "Products" с параметром "Stock" менее 100.
 +
==Сравнение Weaviate с другими базами данных==
 +
Ниже представлена сравнительная таблица<ref>[https://db-engines.com/en/system/AllegroGraph%3BSQLite%3BWeaviate/ Сравнение Weaviate, SQLite и AllegroGraph как БД]</ref> Weaviate и других БД, чтобы наглядно рассмотреть особенности, а также сильные и слабые стороны рассматриваемых баз данных.
 +
{| class="wikitable" style="width:50%;"
 +
|-
 +
! Название !! AllegroGraph  !! SQLite !! Weaviate
 +
|-
 +
| Описание || Высокопроизводительное постоянное хранилище RDF с дополнительной поддержкой для графовой [[DBMS (Database Management System)|СУБД]] || Широко используемая внутрипроцессная СУБД ||Smart Graph на основе GraphQL с открытым исходным кодом и основными функциями: семантический поиск, автоматическая классификация и представление знаний
 +
|-
 +
| Основная модель БД || Хранилище документов<br />Графовая СУБД<br />RDF хранилище  ||Реляционная СУБД  || Поисковый движок<br />Графовая СУБД
 +
|-
 +
|Первый релиз  || 2004 г. || 2000 г. || 2016 г.
 +
|-
 +
|Последний релиз || 7.0, Апрель 2020 ||3.32.2, Июнь 2020  || 0.22.10, Июнь 2020
 +
|-
 +
| Лицензия  || Проприетарное ПО  ||  Открытый код || Открытый код
 +
|-
 +
| Код реализации || [[Common Lisp]], [[Java]], [[Python]] || [[C]]  || [[Go_(язык программирования) | Go]]
 +
|-
 +
| Поддержка SQL || SPARQL в качестве языка запросов ||  Да ||GraphQL в качестве языка запросов
 +
|-
 +
| API и другие виды доступа|| RESTful HTTP API<br/>SPARQL || ADO.NET<br/>JDBC<br/>ODBC || Язык запросов GraphQL<br/>RESTful HTTP/JSON API
 +
|-
 +
| Методы репликации  || Master-slave репликация<br/>Multi-master репликация || Отсутствуют || Есть
 +
|-
 +
|Управление доступом для пользователя ||Пользователи с мелкозернистой концепцией разрешения, есть роли пользователей или выключаемая аутентификация  ||  Отсутствует ||OpenID Connect Discovery
 +
|}
 +
 
==Применение графовых СУБД==
 
==Применение графовых СУБД==
 
Можно выделить несколько направлений, в которых применение графовых СУБД наиболее эффективно:
 
Можно выделить несколько направлений, в которых применение графовых СУБД наиболее эффективно:
===Государственный сектор===
+
*'''Образовательные процессы'''. Можно построить адаптивные обучающие системы, если в течение деятельности студента выстраивать граф взаимосвязей между терминами, понятиями, программами обучения, задачами, тестами, знаниями учащегося .
Управление процессами, документооборот, аналитика, социологические исследования, и т.д. Клиентами могут быть федеральные и региональные министерства, исследовательские организации, и т.д.
+
*'''Государственный сектор'''.Управление процессами, документооборот, аналитика, социологические исследования, и т.д. Клиентами могут быть федеральные и региональные министерства, исследовательские организации, и т.д.
===Жизненный цикл предприятий===
+
*'''Жизненный цикл предприятий'''.Интеграция и управление жизненным циклом предприятий в системах автоматизации предприятий. Применение графовых технологий дает возможность единообразно хранить и обрабатывать очень разнородную информацию, включая данные систем ERP, EAM, PLM, САПР и т.д. Платформа унификации данных Stardog решает существенную проблему при производстве: от замены бумажных систем до использования специализированных инженерных систем и внедрения инноваций в IoT: данные из любого источника бессмысленны, если они не объединены.  
Интеграция и управление жизненным циклом предприятий в системах автоматизации предприятий. Применение графовых технологий дает возможность единообразно хранить и обрабатывать очень разнородную информацию, включая данные систем ERP, EAM, PLM, САПР и т.д. Платформа унификации данных Stardog решает существенную проблему при производстве: от замены бумажных систем до использования специализированных инженерных систем и внедрения инноваций в IoT: данные из любого источника бессмысленны, если они не объединены.  
+
*'''Маркетинг, реклама, PR'''.Сбор и анализ разнородной информации из блогов, соц. сетей и т.д. для выявления источников информации, предпочтений пользователей; программы лояльности; SEO и т. д.
===Маркетинг, реклама, PR===
+
*'''Средства массовой информации'''.Все произошедшие события, факты, компаний, предприятий, журналистов, изданий, статей, сообщений можно объединить в общую единая базу.
Сбор и анализ разнородной информации из блогов, соц. сетей и т.д. для выявления источников информации, предпочтений пользователей; программы лояльности; SEO и т. д.
+
*'''Обеспечение безопасности'''.Анализ логов, электронной почты, интернет трафика; финансовый анализ; анализ информации о людях из разных источников, включая данные о работе, собственности, доходах; анализ информации о связях и интересах из социальных сетей.  
===СМИ===
+
*'''Бизнес-аналитика'''.С помощью Stardog финансовые учреждения могут создать единую платформу, чтобы получить полное представление о клиентах, транзакциях, счетах, рисках и различных взаимосвязанных рисках в масштабах всей фирмы, чтобы обеспечить широкий спектр вариантов использования - от соответствия нормативным требованиям до выявления мошенничества.
Единая база событий, фактов, компаний, предприятий, журналистов, изданий, статей, сообщений и т.д.
+
*'''Управление сетями и дата-центрами'''.Управление жизненным циклом вычислительных комплексов, дата-центров, компьютерных и телекоммуникационных сетей и т.д.; моделирование и оптимизация взаимодействия физического, сетевого и других. уровней. Социальные приложения, рекомендационные сервисы и коммерция
===Безопасность===
+
*'''Сервисы геолокации'''. Построение взаимосвязей разнородных данных на карте, связанной с людьми, местами и событиями, компаниями, предприятиями и т.д.; решение задач логистики, маршрутизации и т.д.
Анализ логов, электронной почты, интернет трафика; финансовый анализ; анализ информации о людях из разных источников, включая данные о работе, собственности, доходах; анализ информации о связях и интересах из социальных сетей.  
+
==Введение в Weaviate и Knowledge Graph==
===Бизнес-аналитика===
+
<center><youtube>https://www.youtube.com/watch?v=hm9ibPZOUcw</youtube></center>
С помощью Stardog финансовые учреждения могут создать единую платформу, чтобы получить полное представление о клиентах, транзакциях, счетах, рисках и различных взаимосвязанных рисках в масштабах всей фирмы, чтобы обеспечить широкий спектр вариантов использования - от соответствия нормативным требованиям до выявления мошенничества.
+
===Управление сетями и дата-центрами===
+
Управление жизненным циклом вычислительных комплексов, дата-центров, компьютерных и телекоммуникационных сетей и т.д.; моделирование и оптимизация взаимодействия физического, сетевого и других. уровней. Социальные приложения, рекомендационные сервисы и коммерция
+
===Построение и анализ социальных графов===
+
Применение графовых подходов позволяет выявлять модели аналогичного поведения, групп влияния, неявных групп, и т.д.
+
===Образование===
+
Построение графа взаимосвязей между терминами, понятиями, программами обучения, задачами, тестами, знаниями учащегося и т.д. для построения адаптивных обучающих систем.
+
===Геосервисы, геоприложения===
+
Построение взаимосвязей разнородных данных на карте, связанной с людьми, местами и событиями, компаниями, предприятиями и т.д.; решение задач логистики, маршрутизации и т.д.
+
 
==Источники==
 
==Источники==
 
{{reflist|group=Источник}}
 
{{reflist|group=Источник}}

Версия 12:34, 29 июня 2020

Weaviate - это современная поисковая система с открытым исходным кодом, которая реализована на языке программирования Go. Основана на механизме встраивания графов со встроенной моделью НЛП, который называется Contextionary. Уникальность Weaviate заключается в том, что она хранит данные в векторном пространстве, а не в традиционной структуре строк-столбцов или графиков, что позволяет искать данные по их значению, а не по ключевым словам. Поддерживает использование нативных RESTful API[1], Containerized и Scalable[Источник 1], а в качестве языка запросов используется GraphQL. Weaviate разработан организацией SeMI Technologies.

Weaviate
fraimed
Разработчики: SeMI Technologies
Постоянный выпуск: 0.22.10 / 19 июня 2020 г.
Состояние разработки: Активное
Написана на: Go
Операционная система: MacOS X , Linux
Тип ПО: графовая СУБД
Веб-сайт Официальный сайт Weaviate

SeMI Technologies

SeMI Technologies[2] основана 26 июня 2019 года в Нидерландах, основателями которой являются Боб Ван Луйт, Миша Верхаген и Эттьен Дилокер. Это компания, базирующаяся на поисковых графах с открытым исходным кодом. За первый год своей работы, и благодаря Weaviate, данная организация уже имеет таких партнёров как Google Cloud, METRO и Flexfab. Также эти разработчики предлагают такой продукт, как платформы для разработки искусственного интеллекта, что делает SeMI Technologies перспективной командой. Но эта компания занимается и другой деятельностью, помимо разработки программного обеспечения. Например, блог основателя Боба Ван Луйта содержит в себе статью «Исследования в области технологий, искусства и бизнеса», которая является источником для лекций на конференциях и университетах по всей Европе, США и России.


Рисунок 1 – Основатели SeMI Technologies

Достоинства Weaviate

Weaviate это графоориентированная база данных. В базе данных графы отражают представление сущностей, которые в ней хранятся, и их отношений между собой. При сравнении с классическими реляционными базами данных, графоориентированные базы данных могут представлять сразу несколько точек зрения на одни и те же данные одновременно. Этот тип баз данных разработан специально учитывая то, что информация в системе подвержена постоянному изменению, поэтому модель базы легко изменить в любой момент времени, в отличие от реляционных баз.
Кроме того, такие хранилища позволяют хранить, индексировать и получать различные данные из разных источников — например, при решении какой-то актуальной задачи по интеграции сервисов, которую можно свести к объединению разрозненных реляционных баз в единую базу и приводит к задаче обработки структурированных данных. Внутри каждой базы данные строго структурированы для работы с реляционной моделью, но каждая база структурирована по-своему, поэтому задача их интеграции в рамках реляционной модели требует того, что придётся реинжинирить всё решениё.
Изменять архитектуру информационной системы, построенной и основанной на графоориентированной модели, намного легче, чем изменять систему, построенную на реляционной модели, и, в основном, даже не требуют реинжиниринга базы. Данная база данных идеально подходит для задач, требующих учета и выявления большого количества взаимосвязей. Для графа достаточно легко принимать новую информацию об узлах, он просто создаёт новые рёбра, чтобы связать поступившие данные с уже существующими. Для сравнения, в реляционной базе добавление новой структуры, которая еще не учтена в схеме, требует создания новой схемы и нового комбинированного набора данных. Способность графовой БД быстро обрабатывать новую информацию делает ее идеальной для проектов, развивающихся по этой схеме.

Семантическое хранение данных

Далее будут рассуждения Боба Ван Луйта о семантических графах[Источник 2].
Работая над программными проектами в своей повседневной жизни, Боб Ван Луйт заметил, что одна из самых повторяющихся проблем связана с именами и поиском. Перед ним встал вопрос наименования определенных объектов и нахождения данных, которые были структурированы по-разному. Он был очень заинтересован семантическими сетями, но столкнулся с проблемой того, чтобы люди согласились с соглашениями и стандартами именования. Это заставило Боба задуматься о том, чтобы компаниям больше не приходилось договариваться об этом. "Что если бы мы могли просто хранить данные и заставить машину определить концепцию, которую представляют ваши данные?" Проверка концепции была разбита на три основных раздела, которые были подтверждены один за другим.
1)Можно ли получить больше контекста вокруг слова, перемещаясь по гиперпространству? Если так;
2)Можно ли сохранить смысловой смысл, рассчитав центроид группы слов (например, «спасибо за суши на прошлой неделе»)? Если так;
3)Можно ли сделать это быстро без переобучения модели ML?

Рисунок 2 – Гиперпространство значений слов

Нахождение большего контекста вокруг слова связано с понятием, называемым устранением неоднозначности. К примеру, слово «яблоко». В гиперпространстве (см. рисунок 2), если искать другие слова по соседству, найдутся слова, относящиеся к яблочному фрукту (например, другие фрукты, соки и т.д.), а также Apple, компания (iPhone, Macintosh и другие понятия, связанные с компанией). Чтобы проверить, возможно ли устранить неоднозначность слова «яблоко», был сделан следующий простой шаг. Всего лишь стоит искать все слова, которые находятся в промежутке между «яблоком» и «фруктом». Оказывается, результаты намного лучше. Можно устранить неоднозначность, перемещаясь по гиперпространству, используя отдельные слова в качестве маяков для навигации. На следующем шаге цель - проверить, возможно ли сохранить семантическое значение при хранении объекта данных в гиперпространстве, вычисляя центроид, используя отдельные слова в качестве маяков. Сделаем это следующим образом: название этой статьи в Vogue: «Новая капсула Louis Vuitton с League of Legends привносит французскую высокую моду в онлайн-игры — и наоборот». Если посмотрить на векторные позиции для отдельных слов (то есть, Луи, Виттон, новый, капсула и так далее) и поместить новый маяк в центр пространства этих векторных позиций, то можно найти статью, выполнив поиск «от кутюр».
Конечно, со временем алгоритм вычисления центроидов в Weavite стал более изощренным, но общая концепция все та же. Проверяя два вышеизложенных предположения, можно выяснить, что есть возможность почти мгновенно хранить объекты данных в семантическом пространстве, а не в более традиционной структуре столбца-столбца или графе. Это позволяет индексировать данные в зависимости от их значения. Хотя были проверены предположения о семантических понятиях, этого было недостаточно для создания фактической семантической поисковой системы, Weaviate также требовалась модель данных для представления этих результатов.

Запросы в Weaviate

Разработчики уделили отдельное внимание дизайну и разработке запросового языка Weaviate, так как это очень важная часть для пользователя, не до конца углублённого в базы данных[Источник 3].
Как известно, человек коммуницирует с помощью взаимодействий, он задаёт вопросы, когда ему что-либо требуется, либо использует глаголы или даже команды, когда ему нужна чья-то помощь. Поэтому нидерландские разработчики сделали систему запросов аналогичной взаимодействиям человека, чтобы ему было комфортно в пользовании, что в свою очередь повышает эффективность базы данных. По этому принципу и была разработана GraphQL схема.
Рассмотрим пример. Представим, что пользователь зашёл в супермаркет Weaviate и хочет узнать, каких товаров меньше всего в наличии. Для этого стоит применить следующий запрос:

{
  Get {
    Things {
      Product(
        where: {
          path: ["inStock"], 
          operator: LessThan, 
          valueInt: 100
        }) {
        name
        inStock
      }
    }
  }
}

При этом вывод будет выглядеть так:

{
  "data": {
    "Get": {
      "Things": {
        "Product": [
          {
            "name": "Baguette",
            "inStock": 8
          },
          {
            "name": "Banana",
            "inStock": 46
          },
          {
            "name": "Pineapple",
            "inStock": 17
          },
          {
            "name": "Toilet paper",
            "inStock": 38
          }
        ]
      }
    }
  }
}

Как структурирован запрос : "Get" и "Things" - высокоуровневые объекты в обозначенной схеме. "Get" - глагол, который используется, когда человек хочет, что-то получить. Далее Weaviate проводит соответствие между объектами "Actions" и "Things". Происходит поиск в контейнере "Products" с параметрами "name" и "inStock". Цель этого запроса - сделать действие "Get", то есть получить все объекты типа "Products" с параметром "Stock" менее 100.

Сравнение Weaviate с другими базами данных

Ниже представлена сравнительная таблица[3] Weaviate и других БД, чтобы наглядно рассмотреть особенности, а также сильные и слабые стороны рассматриваемых баз данных.

Название AllegroGraph SQLite Weaviate
Описание Высокопроизводительное постоянное хранилище RDF с дополнительной поддержкой для графовой СУБД Широко используемая внутрипроцессная СУБД Smart Graph на основе GraphQL с открытым исходным кодом и основными функциями: семантический поиск, автоматическая классификация и представление знаний
Основная модель БД Хранилище документов
Графовая СУБД
RDF хранилище
Реляционная СУБД Поисковый движок
Графовая СУБД
Первый релиз 2004 г. 2000 г. 2016 г.
Последний релиз 7.0, Апрель 2020 3.32.2, Июнь 2020 0.22.10, Июнь 2020
Лицензия Проприетарное ПО Открытый код Открытый код
Код реализации Common Lisp, Java, Python C Go
Поддержка SQL SPARQL в качестве языка запросов Да GraphQL в качестве языка запросов
API и другие виды доступа RESTful HTTP API
SPARQL
ADO.NET
JDBC
ODBC
Язык запросов GraphQL
RESTful HTTP/JSON API
Методы репликации Master-slave репликация
Multi-master репликация
Отсутствуют Есть
Управление доступом для пользователя Пользователи с мелкозернистой концепцией разрешения, есть роли пользователей или выключаемая аутентификация Отсутствует OpenID Connect Discovery

Применение графовых СУБД

Можно выделить несколько направлений, в которых применение графовых СУБД наиболее эффективно:

  • Образовательные процессы. Можно построить адаптивные обучающие системы, если в течение деятельности студента выстраивать граф взаимосвязей между терминами, понятиями, программами обучения, задачами, тестами, знаниями учащегося .
  • Государственный сектор.Управление процессами, документооборот, аналитика, социологические исследования, и т.д. Клиентами могут быть федеральные и региональные министерства, исследовательские организации, и т.д.
  • Жизненный цикл предприятий.Интеграция и управление жизненным циклом предприятий в системах автоматизации предприятий. Применение графовых технологий дает возможность единообразно хранить и обрабатывать очень разнородную информацию, включая данные систем ERP, EAM, PLM, САПР и т.д. Платформа унификации данных Stardog решает существенную проблему при производстве: от замены бумажных систем до использования специализированных инженерных систем и внедрения инноваций в IoT: данные из любого источника бессмысленны, если они не объединены.
  • Маркетинг, реклама, PR.Сбор и анализ разнородной информации из блогов, соц. сетей и т.д. для выявления источников информации, предпочтений пользователей; программы лояльности; SEO и т. д.
  • Средства массовой информации.Все произошедшие события, факты, компаний, предприятий, журналистов, изданий, статей, сообщений можно объединить в общую единая базу.
  • Обеспечение безопасности.Анализ логов, электронной почты, интернет трафика; финансовый анализ; анализ информации о людях из разных источников, включая данные о работе, собственности, доходах; анализ информации о связях и интересах из социальных сетей.
  • Бизнес-аналитика.С помощью Stardog финансовые учреждения могут создать единую платформу, чтобы получить полное представление о клиентах, транзакциях, счетах, рисках и различных взаимосвязанных рисках в масштабах всей фирмы, чтобы обеспечить широкий спектр вариантов использования - от соответствия нормативным требованиям до выявления мошенничества.
  • Управление сетями и дата-центрами.Управление жизненным циклом вычислительных комплексов, дата-центров, компьютерных и телекоммуникационных сетей и т.д.; моделирование и оптимизация взаимодействия физического, сетевого и других. уровней. Социальные приложения, рекомендационные сервисы и коммерция
  • Сервисы геолокации. Построение взаимосвязей разнородных данных на карте, связанной с людьми, местами и событиями, компаниями, предприятиями и т.д.; решение задач логистики, маршрутизации и т.д.

Введение в Weaviate и Knowledge Graph

Источники

  1. Weaviate documentation//Документация Weaviate : https://www.semi.technology/documentation/weaviate/current/ (дата обращения: 23.06.2020).
  2. How to semantically store data objects //Как семантически хранить объекты данных : https://hackernoon.com/the-history-of-the-weaviate-search-graph-gk9132dc/ (дата обращения: 23.06.2020).
  3. How Weaviate's GraphQL API was designed //Как была разработана GraphQL API для Weaviate : https://hackernoon.com/how-weaviates-graphql-api-was-designed-t93932tl/ (дата обращения: 23.06.2020).

Примечания