0Pricing
Vector Databases: Pinecone, Weaviate & pgvector · Lektion

Weaviate-Schema definieren

Entwerfen und verwalten Sie Ihr Datenschema in Weaviate und definieren Sie Klassen und Eigenschaften für Ihre Vektorobjekte.

Weaviate-Schema definieren ist eine kostenlose Vector Databases: Pinecone, Weaviate & pgvector-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Vector Databases: Pinecone, Weaviate & pgvector-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Vector Databases: Pinecone, Weaviate & pgvector-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Weaviate Schema: Your Data Map

Welcome to Weaviate! To store and search data effectively, Weaviate needs to understand its structure. This is where the schema comes in.

Think of a schema as a blueprint for your data. It defines the types of data you'll store and how they relate.

Why Schema Matters

A well-defined schema is crucial for:

  • Data Consistency: Ensuring all objects conform to expected types.
  • Efficient Indexing: Weaviate uses the schema to build efficient search indexes.
  • Vectorization: Guiding how Weaviate generates and stores vector embeddings for your data.
  • Querying: Enabling powerful semantic and filtered searches.

Classes: Main Data Types

In Weaviate, the primary building blocks of your schema are classes. A class is like a table in a relational database or a collection in a NoSQL database.

Each class represents a distinct type of object you want to store, such as an "Article", "Product", or "User".

Your First Weaviate Class

Let's define a simple class named Article. This class will represent articles in our database.

In Weaviate, a class definition includes its name and an optional description. We'll add properties later.

import weaviate

if __name__ == "__main__":
    # Define a basic class schema
    article_class_schema = {
        "class": "Article",
        "description": "A class for storing articles"
    }
    print("--- Defined Article Class Schema ---")
    print(f"Class Name: {article_class_schema['class']}")
    print(f"Description: {article_class_schema['description']}")
    # In a real app, you'd add this to Weaviate:
    # client.schema.create_class(article_class_schema)

Properties: Data Fields

Within each class, you define properties. These are the individual fields or attributes that describe an object of that class.

For an Article class, properties might include title, content, author, or publicationDate.

Essential Property Types

Weaviate supports various data types for properties. Some common ones include:

  • text: For strings of text (e.g., names, descriptions).
  • int: For whole numbers.
  • number: For floating-point numbers.
  • boolean: For true/false values.
  • date: For date and time values.
  • text[]: For arrays of text strings.

Each property must have a defined data type.

Class with Properties

Now, let's enhance our Article class by adding some properties. We'll include title, content, and wordCount.

Notice how each property has a name and a dataType.

import weaviate

if __name__ == "__main__":
    # Define a class schema with properties
    article_class_with_props = {
        "class": "Article",
        "description": "A class for storing articles with properties",
        "properties": [
            {
                "name": "title",
                "dataType": ["text"],
                "description": "The title of the article"
            },
            {
                "name": "content",
                "dataType": ["text"],
                "description": "The main content of the article"
            },
            {
                "name": "wordCount",
                "dataType": ["int"],
                "description": "The number of words in the article"
            }
        ]
    }
    print("--- Defined Article Class with Properties ---")
    print(f"Class Name: {article_class_with_props['class']}")
    for prop in article_class_with_props['properties']:
        print(f"  Property: {prop['name']}, Type: {prop['dataType'][0]}")
    # client.schema.create_class(article_class_with_props)

Vectorization & Indexing

Weaviate automatically handles vectorizing your data and building a vector index. By default, it uses a text2vec model for text properties.

You can configure the vectorizer (e.g., which model to use) and the vector index (e.g., HNSW parameters) directly within your class definition.

import weaviate

if __name__ == "__main__":
    # Example of a class with vectorizer configuration
    product_class_schema = {
        "class": "Product",
        "description": "A class for e-commerce products",
        "vectorizer": "text2vec-openai", # Or "text2vec-huggingface", etc.
        "vectorIndexConfig": {
            "efConstruction": 128,
            "maxConnections": 64,
            "ef": -1 # default for queries
        },
        "properties": [
            {"name": "name", "dataType": ["text"]},
            {"name": "description", "dataType": ["text"]}
        ]
    }
    print("--- Defined Product Class with Vector Config ---")
    print(f"Class Name: {product_class_schema['class']}")
    print(f"Vectorizer: {product_class_schema['vectorizer']}")
    print(f"Vector Index Config (efConstruction): {product_class_schema['vectorIndexConfig']['efConstruction']}")
    # client.schema.create_class(product_class_schema)

Adding a New Property

What if you need to add a new property to an existing class? Weaviate allows you to update your schema by adding new properties.

You cannot change existing property types or delete properties directly without re-creating the class (and potentially losing data).

import weaviate

if __name__ == "__main__":
    # Imagine 'Article' class already exists
    # This defines the NEW property to add
    new_property = {
        "name": "category",
        "dataType": ["text"],
        "description": "The category of the article"
    }
    print("--- New Property Definition ---")
    print(f"Name: {new_property['name']}, Type: {new_property['dataType'][0]}")
    # In a real app, you'd add this to Weaviate:
    # client.schema.property.create(
    #     class_name="Article",
    #     property=new_property
    # )
    print("\nTo add this, you'd call client.schema.property.create(class_name, property_object)")

Schema Quick Check

Which of the following statements about Weaviate schema definition are TRUE?

Recap: Schema Essentials

You've learned the fundamentals of Weaviate schema definition!

  • Classes are your main data types.
  • Properties define the attributes within each class.
  • Weaviate uses the schema for indexing and vectorization.
  • You can add new properties to existing classes to evolve your schema.

A well-structured schema is key to powerful semantic search in Weaviate.

Häufig gestellte Fragen

Ist die Lektion „Weaviate-Schema definieren“ kostenlos?

Ja — der vollständige Text von „Weaviate-Schema definieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Vector Databases: Pinecone, Weaviate & pgvector-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Vector Databases: Pinecone, Weaviate & pgvector-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Weaviate-Schema definieren“?

Entwerfen und verwalten Sie Ihr Datenschema in Weaviate und definieren Sie Klassen und Eigenschaften für Ihre Vektorobjekte. Du übst Vector Databases: Pinecone, Weaviate & pgvector mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Vector Databases: Pinecone, Weaviate & pgvector zu starten?

Keine Vorkenntnisse erforderlich. Vector Databases: Pinecone, Weaviate & pgvector auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Weaviate-Schema definieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Vector Databases: Pinecone, Weaviate & pgvector-Lektion Code schreiben und ausführen?

Ja. Jede Vector Databases: Pinecone, Weaviate & pgvector-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Weaviate-Schema definieren
  2. Datenobjekte importieren
  3. Weaviate-GraphQL-Abfragen
  4. Vectorizer-Module und Auto-Embedding
← Zurück zu Vector Databases: Pinecone, Weaviate & pgvector