1

将我的架构加载到 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':“在上下文中的类名'Elbow'中的属性'blws'中找不到单词'blws'。考虑使用关键字来定义这个类的语义。"}]}

4

1 回答 1

0

误导性错误

错误信息

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”。例如,如果“blws”是“bold long wide short”的首字母缩写词,您可以将属性命名为boldLongWideShort。如上所述,我们将在未来添加添加自定义单词的功能,但目前尚不支持。

于 2019-09-04T11:35:28.040 回答