Weaviate Şeması Tanımlama
Vektör nesneleriniz için sınıfları ve özellikleri tanımlayarak Weaviate'ta veri şemanızı tasarlayın ve yönetin.
Weaviate Şeması Tanımlama, CoddyKit'te ücretsiz bir Vector Databases: Pinecone, Weaviate & pgvector dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Vector Databases: Pinecone, Weaviate & pgvector öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Vector Databases: Pinecone, Weaviate & pgvector kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
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.
Sıkça Sorulan Sorular
“Weaviate Şeması Tanımlama” dersi ücretsiz mi?
Evet — “Weaviate Şeması Tanımlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Vector Databases: Pinecone, Weaviate & pgvector kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Vector Databases: Pinecone, Weaviate & pgvector kursu toplamda 4 dersten oluşur.
“Weaviate Şeması Tanımlama” dersinde ne öğreneceğim?
Vektör nesneleriniz için sınıfları ve özellikleri tanımlayarak Weaviate'ta veri şemanızı tasarlayın ve yönetin. Vector Databases: Pinecone, Weaviate & pgvector ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Vector Databases: Pinecone, Weaviate & pgvector öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Vector Databases: Pinecone, Weaviate & pgvector, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Weaviate Şeması Tanımlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Vector Databases: Pinecone, Weaviate & pgvector dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Vector Databases: Pinecone, Weaviate & pgvector dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Weaviate Şeması Tanımlama
- Veri Nesnelerini İçe Aktarma
- Weaviate GraphQL Sorguları
- Vektörleştirici Modülleri ve Otomatik Gömme