Definición de esquemas en Weaviate
Diseñe y gestione su esquema de datos en Weaviate, definiendo clases y propiedades para sus objetos vectoriales.
Definición de esquemas en Weaviate es una lección gratuita de Vector Databases: Pinecone, Weaviate & pgvector en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Vector Databases: Pinecone, Weaviate & pgvector, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Vector Databases: Pinecone, Weaviate & pgvector incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en 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.
Preguntas frecuentes
¿La lección «Definición de esquemas en Weaviate» es gratis?
Sí — el texto completo de «Definición de esquemas en Weaviate» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Vector Databases: Pinecone, Weaviate & pgvector, actualiza a CoddyKit PRO. El curso de Vector Databases: Pinecone, Weaviate & pgvector incluye 4 lecciones en total.
¿Qué aprenderé en «Definición de esquemas en Weaviate»?
Diseñe y gestione su esquema de datos en Weaviate, definiendo clases y propiedades para sus objetos vectoriales. Practicas Vector Databases: Pinecone, Weaviate & pgvector con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Vector Databases: Pinecone, Weaviate & pgvector?
No se requiere experiencia previa. Vector Databases: Pinecone, Weaviate & pgvector en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Definición de esquemas en Weaviate»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Vector Databases: Pinecone, Weaviate & pgvector?
Sí. Cada lección de Vector Databases: Pinecone, Weaviate & pgvector incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Definición de esquemas en Weaviate
- Importación de objetos de datos
- Consultas GraphQL en Weaviate
- Módulos vectorizer y generación automática de embeddings