如何在 Weaviate 上下文中对分类法进行编码

问题描述

在 Weaviate (https://github.com/semi-technologies/weaviate) 中矢量化实际数据之前,我想为我的数据创建语义上下文。 假设我们有一个分类法,其中我们有一组特定于领域的概念以及指向它们相关概念的链接。您能告诉我使用上下文对这些概念以及它们之间的关系进行编码的最佳方法是什么吗?

解决方法

根据您的用例,有几个可能的答案。

  1. 您可以在 Weaviate 模式中创建“语义上下文”,并使用矢量化模块根据此模式对数据进行矢量化。
  2. 您的数据中包含开箱即用的矢量化模块不知道的特定领域概念(例如,特定缩写)。
  3. 您想在将图添加到 Weaviate 之前捕获(即矢量化)图本身的语义上下文。

第一个是最简单直接的,最后一个是最深奥的。

为您的数据创建架构并使用矢量化器

在您的情况下,您将根据您的分类法创建一个架构并使用开箱即用的矢量化器加载数据(this configurator 可帮助您构建 Docker-compose 文件)。

无论如何我都建议从这个开始,因为它将确定您的数据模型以及您如何搜索和/或分类数据。甚至对于您的用例,这一步可能已经解决了问题,因为开箱即用的矢量化器(偏差警报)相当不错。

特定领域的概念

在撰写本文时,Weaviate 有两个矢量化器,contextionarytransformers 模块。

如果您想使用自定义上下文扩展 Weaviate,您可以extend the contextionaryfine tune and distribute custom transformers

如果你这样做了,我强烈建议你仍然迈出第一步。因为它只会改善结果。

捕获图形的语义上下文

我认为这不是您想要的,但它可能并且非常深奥。原则上,您可以将矢量化图存储在 Weaviate 中,但您需要自己生成矢量。例如,在撰写本文时,我们正在查看 RDF2Vec

附注:
因为人们经常询问 Weaviate 中本体和分类法的作用,所以我写了 this blog post