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

Definição de Esquemas no Weaviate

Projete e gerencie seu esquema de dados no Weaviate, definindo classes e propriedades para seus objetos vetoriais.

Definição de Esquemas no Weaviate é uma aula grátis de Vector Databases: Pinecone, Weaviate & pgvector no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Vector Databases: Pinecone, Weaviate & pgvector, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

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.

Perguntas Frequentes

A aula “Definição de Esquemas no Weaviate” é grátis?

Sim — o texto completo de “Definição de Esquemas no Weaviate” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Vector Databases: Pinecone, Weaviate & pgvector, atualize para CoddyKit PRO. O curso de Vector Databases: Pinecone, Weaviate & pgvector inclui 4 aulas no total.

O que vou aprender em “Definição de Esquemas no Weaviate”?

Projete e gerencie seu esquema de dados no Weaviate, definindo classes e propriedades para seus objetos vetoriais. Você pratica Vector Databases: Pinecone, Weaviate & pgvector com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Vector Databases: Pinecone, Weaviate & pgvector?

Nenhuma experiência prévia é necessária. Vector Databases: Pinecone, Weaviate & pgvector no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Definição de Esquemas no Weaviate”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Vector Databases: Pinecone, Weaviate & pgvector?

Sim. Cada aula de Vector Databases: Pinecone, Weaviate & pgvector inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Definição de Esquemas no Weaviate
  2. Importando Objetos de Dados
  3. Consultas GraphQL no Weaviate
  4. Módulos vetorizadores e criação automática de embeddings
← Voltar para Vector Databases: Pinecone, Weaviate & pgvector