0Pricing
Vector Databases: Pinecone, Weaviate & pgvector · Leçon

Définir un schéma Weaviate

Concevez et gérez votre schéma de données dans Weaviate en définissant des classes et des propriétés pour vos objets vectoriels.

Définir un schéma Weaviate est une leçon Vector Databases: Pinecone, Weaviate & pgvector gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Vector Databases: Pinecone, Weaviate & pgvector, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Vector Databases: Pinecone, Weaviate & pgvector comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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.

Questions Fréquemment Posées

La leçon « Définir un schéma Weaviate » est-elle gratuite ?

Oui — le texte complet de « Définir un schéma Weaviate » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Vector Databases: Pinecone, Weaviate & pgvector, passe à CoddyKit PRO. Le cours Vector Databases: Pinecone, Weaviate & pgvector comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Définir un schéma Weaviate » ?

Concevez et gérez votre schéma de données dans Weaviate en définissant des classes et des propriétés pour vos objets vectoriels. Tu pratiques Vector Databases: Pinecone, Weaviate & pgvector avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Vector Databases: Pinecone, Weaviate & pgvector ?

Aucune expérience préalable n'est requise. Vector Databases: Pinecone, Weaviate & pgvector sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Définir un schéma Weaviate » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Vector Databases: Pinecone, Weaviate & pgvector ?

Oui. Chaque leçon Vector Databases: Pinecone, Weaviate & pgvector inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir un schéma Weaviate
  2. Importer des objets de données
  3. Requêtes GraphQL dans Weaviate
  4. Modules de vectorisation et génération automatique d’embeddings
← Retour à Vector Databases: Pinecone, Weaviate & pgvector