为 Weaviate 的架构中的属性选择正确的名称

Choosing the right name for properties in schema for 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: {'error': [{'message': "Could not find the word 'blws' from the property 'blws' in the class name 'Elbow' in the contextionary. Consider using keywords to define the semantic meaning of this class."}]}

误导性错误

错误信息

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 消除了这种可能性。

但是,即使在更改之前您的架构也不会被接受,请参见下文。

关于 属性 个不在上下文中的名字

一个属性名字由一个或多个可识别的部分组成,在上下文中是已知的。 "part" 我的意思是,如果您使用驼峰式拼接组合多个单词,每个单词都是一个部分。例如

  • drivesVehicle 是有效的,因为它由两个已知词组成:drivesvehicle
  • drivesAVehicle 也是有效的,因为它包含两个已知词和一个停用词 (a)。注意:只要您的 属性 包含至少一个非停用词,停用词就可以。
  • drivesBlws 将无效,因为 blws 不是已知词

我们已经讨论过添加添加自定义单词的功能。该提案可以被视为已接受,但在撰写本文时,它还没有被立即列为优先级。

为什么对已知单词如此严格?

weaviate 的核心功能之一是概念搜索 ("vector-based searching"),因此 weaviate 必须能够为每个 属性 计算向量位置。只有当它识别出单词

时,它才能这样做

如何解决这个问题?

尝试用熟悉的词描述 "blws"。例如,如果 "blws" 是 "bold long wide short" 的缩写,您可以将 属性 命名为 boldLongWideShort。如上所述,我们将在未来增加添加自定义词的功能,但目前还不支持。