Выбор правильного имени для свойств в схеме для Weaviate

При загрузке схемы в Weaviate я получаю сообщение об ошибке, что имя свойства не может быть найдено в контекстном справочнике. Некоторые из необходимых мне свойств - это сокращения.

Это элемент схемы, на который он жалуется:

{
    "cardinality": "atMostOne",
    "dataType": [
       "boolean"
    ],
    "description": "Is this a BLWS elbow yes or no",
    "keywords": [
        {
            "keyword": "BLWS",
            "weight": 1
        }
    ],
    "name": "blws"
}

Я получаю следующее сообщение об ошибке:

2019-09-04T11:47:07.202646 ОШИБКА: {'error': [{'message': "Не удалось найти слово 'blws' из свойства 'blws' в имени класса 'Elbow' в контекстном справочнике. Рассмотрите возможность использования ключевые слова для определения семантического значения этого класса."}]}

1 ответ

Решение

Вводящая в заблуждение ошибка

Сообщение об ошибке

Consider using keywords to define the semantic meaning of this class

устарел, и эта рекомендация фактически бесполезна. Уже существует проблема с GitHub, чтобы исправить это: https://github.com/semi-technologies/weaviate/issues/929

До https://github.com/semi-technologies/weaviate/issues/856 можно было заменить неизвестное слово свойства известными ключевыми словами, но #856 устранил эту возможность.

Однако даже до изменения ваша схема не была принята, см. Ниже.

Об именах свойств, не входящих в контекст

Имя свойства состоит из одной или нескольких распознанных частей, известных контексту. Под словом "часть" я подразумеваю, что если вы объедините несколько слов с помощью camelCasing, каждое слово будет одной частью. Так например

  • drivesVehicle будет действительным, поскольку он состоит из двух известных слов: drives, vehicle
  • drivesAVehicle также будет действительным, поскольку он содержит два известных слова и стоп-слово (a). Примечание. Стоп-слова допустимы, если ваш ресурс содержит хотя бы одно непрерывное слово.
  • drivesBlws будет недействительным, так как blws это неизвестное слово

Мы обсудили добавление возможности добавлять собственные слова. Предложение можно считать принятым, но на момент написания этого предложения оно не находилось в непосредственной приоритетности.

Почему так строго по отношению к известным словам?

Одной из основных функций weaviate является поиск концептов ("векторный поиск"), поэтому weaviate должен иметь возможность вычислять векторную позицию для каждого свойства. Он может это сделать, только если распознает слова

Как это решить?

Попробуйте описать "болвана" известными словами. Например, если "blws" было аббревиатурой от "жирный, длинный, широкий, короткий", вы могли бы назвать свойствоboldLongWideShort. Как упоминалось выше, мы добавим возможность добавлять собственные слова в будущем, но на данный момент это еще не поддерживается.

Другие вопросы по тегам