Mendefinisikan Skema Weaviate
Rancang dan kelola skema data Anda di Weaviate dengan mendefinisikan kelas dan properti untuk objek vektor.
Mendefinisikan Skema Weaviate adalah pelajaran Vector Databases: Pinecone, Weaviate & pgvector gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Vector Databases: Pinecone, Weaviate & pgvector, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Vector Databases: Pinecone, Weaviate & pgvector mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendefinisikan Skema Weaviate” gratis?
Ya — teks lengkap “Mendefinisikan Skema Weaviate” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Vector Databases: Pinecone, Weaviate & pgvector, upgrade ke CoddyKit PRO. Kursus Vector Databases: Pinecone, Weaviate & pgvector mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendefinisikan Skema Weaviate”?
Rancang dan kelola skema data Anda di Weaviate dengan mendefinisikan kelas dan properti untuk objek vektor. Kamu berlatih Vector Databases: Pinecone, Weaviate & pgvector dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Vector Databases: Pinecone, Weaviate & pgvector?
Tidak diperlukan pengalaman sebelumnya. Vector Databases: Pinecone, Weaviate & pgvector di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mendefinisikan Skema Weaviate” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Vector Databases: Pinecone, Weaviate & pgvector ini?
Ya. Setiap pelajaran Vector Databases: Pinecone, Weaviate & pgvector menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendefinisikan Skema Weaviate
- Mengimpor Objek Data
- Kueri GraphQL Weaviate
- Modul Vektorisasi dan Embedding Otomatis