Software:Weaviate

From HandWiki
Weaviate
Weaviate logo (no text).svg
Original author(s)Bob van Luijt[1]
Developer(s)SeMI Technologies
Initial releaseMay 21, 2019; 4 years ago (2019-05-21)[2]
Repositoryhttps://github.com/semi-technologies/weaviate
Written inGo, C++
Operating systemCross-platform
TypeKnowledge engine[disambiguation needed], Knowledge graph, Search and index
LicenseBSD-3, Weaviate Enterprice (commercial)
Websitehttps://www.semi.technology/

Weaviate is an open source knowledge graph based on a vector storage mechanism called the contextionary. It allows a user to search for context or keywords in a dataset rather than fixed keywords alone. It provides a GraphQL interface to query the knowledge graph and an HTTP web interface to add the data via an ontology schema.

Contextionary

The contextionary (c11y)[3] is the knowledge engine[disambiguation needed] at the core of Weaviate. Conceptually it is a form of word embeddings. From every data object added to Weaviate, a new point in the vector space is created giving the data a unique, semantic meaning. When querying Weaviate, known as exploring,[4] one can target data-objects directly or based on contextual and semantic search. For example, a City with the name Amsterdam can be found by targeting place, Netherlands, canals, Rembrandt.

Ontology & Concepts

Weaviate defines things and actions which are called concepts[5] where things often consist of nouns and actions consist of verbs. Weaviate's ontology-schema is class-based and determines the semantic meaning of the concepts. For example, a class Animal with the name-property Seal translates into a weighted centroid representing a Seal.

# Example of a Weaviate ontology in YAML
class: Zoo
keywords:
- keyword: park
  weight: 0.7
- keyword: animals
  weight: 0.7
description: Animal park
properties:
- dataType:
  - string
  cardinality: atMostOne
  description: Name of the Zoo
  name: name
  keywords:
  - keyword: identifier
    weight: 0.8

GraphQL interface

Weaviate exposes the complete knowledge graph through a GraphQL API-interface.[6] The interface allows targeting individual concepts directly or through identifiers inside the vector space called beacons.

{
  Local {
    Explore {
      Concepts(keywords: ["fins", "marine", "mammal"]) {
        beacon
        className
      }
    }
    Get {
      Things {
        Animal {
          name
          age
          InZoo {
            ... on Zoo {
              name
            }
          }
        }
      }
    }
  }
}

Open Source Contextionary

The open source contextionary is based on WikiPedia and the Wiktionary [7] but can also be created based on custom documents such as scientific journals or legal documents.

References