Vektordatabaser: Pinecone, Weaviate og pgvector · Lektion

Definition af Weaviate-schema

Design og administrer Deres dataschema i Weaviate, og definér klasser og egenskaber for vektorobjekter.

Lektion 1 af 411 trin

Definition af Weaviate-schema er en gratis Vektordatabaser: Pinecone, Weaviate og pgvector-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Vektordatabaser: Pinecone, Weaviate og pgvector, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.

Weaviate-skema: Dit datakort

Velkommen til Weaviate! For at kunne gemme og søge effektivt i data skal Weaviate forstå deres struktur. Det er her, skemaet kommer ind i billedet.

Tænk på et skema som en tegning af dine data. Det definerer de datatyper, du vil gemme, og hvordan de hænger sammen.

Hvorfor skemaet er vigtigt

Et veldefineret skema er afgørende for:

  • Datakonsistens: Sikring af, at alle objekter følger de forventede typer.
  • Effektiv indeksering: Weaviate bruger skemaet til at opbygge effektive søgeindeks.
  • Vektorisering: Styring af, hvordan Weaviate genererer og gemmer vektor-embeddings for dine data.
  • Forespørgsler: Muliggørelse af effektive semantiske søgninger og søgninger med filtre.

Klasser: Vigtigste datatyper

I Weaviate er de primære byggesten i dit skema klasser. En klasse svarer til en tabel i en relationel database eller en samling i en NoSQL-database.

Hver klasse repræsenterer en bestemt type objekt, som du vil gemme, f.eks. en "Article", "Product" eller "User".

Din første Weaviate-klasse

Lad os definere en enkel klasse med navnet Article. Denne klasse repræsenterer artikler i vores database.

I Weaviate indeholder en klassedefinition dens navn og en valgfri beskrivelse. Vi tilføjer egenskaber senere.

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)

Egenskaber: datafelter

Inden for hver klasse definerer du egenskaber. Det er de enkelte felter eller attributter, der beskriver et objekt i den pågældende klasse.

For en Article-klasse kan egenskaber f.eks. være title, content, author eller publicationDate.

Vigtige egenskabstyper

Weaviate understøtter forskellige datatyper for egenskaber. Nogle almindelige typer er:

  • text: Til tekststrenge (f.eks. navne og beskrivelser).
  • int: Til hele tal.
  • number: Til kommatal.
  • boolean: Til sand/falsk-værdier.
  • date: Til dato- og tidsværdier.
  • text[]: Til arrays med tekststrenge.

Hver egenskab skal have en defineret datatype.

Klasse med egenskaber

Lad os nu udvide vores Article-klasse ved at tilføje nogle egenskaber. Vi inkluderer title, content og wordCount.

Bemærk, at hver egenskab har et name og en 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)

Vektorisering og indeksering

Weaviate håndterer automatisk vektorisering af dine data og opbygning af et vektorindeks. Som standard bruger den en text2vec-model til text-egenskaber.

Du kan konfigurere vektorisereren (f.eks. hvilken model der skal bruges) og vektorindekset (f.eks. HNSW-parametre) direkte i din klassedefinition.

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)

Tilføjelse af en ny egenskab

Hvad gør du, hvis du skal tilføje en ny egenskab til en eksisterende klasse? Weaviate giver dig mulighed for at opdatere dit skema ved at tilføje nye egenskaber.

Du kan ikke ændre eksisterende egenskabstyper eller slette egenskaber direkte uden at oprette klassen igen (og muligvis miste 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)")

Hurtigt skematjek

Hvilke af følgende udsagn om definition af Weaviate-skemaer er sande?

Opsummering: det vigtigste om skemaer

Du har lært det grundlæggende om definition af Weaviate-skemaer!

  • Klasser er dine primære datatyper.
  • Egenskaber definerer attributterne i hver klasse.
  • Weaviate bruger skemaet til indeksering og vektorisering.
  • Du kan tilføje nye egenskaber til eksisterende klasser og dermed videreudvikle dit skema.

Et velstruktureret skema er afgørende for effektiv semantisk søgning i Weaviate.

Gratis at komme i gang

Lær Vektordatabaser: Pinecone, Weaviate og pgvector med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Definition af Weaviate-schema” gratis?

Ja — alle 3 lektioner i læringssporet Vektordatabaser: Pinecone, Weaviate og pgvector, inklusive “Definition af Weaviate-schema”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Definition af Weaviate-schema”?

Design og administrer Deres dataschema i Weaviate, og definér klasser og egenskaber for vektorobjekter. Du øver dig i Vektordatabaser: Pinecone, Weaviate og pgvector med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Vektordatabaser: Pinecone, Weaviate og pgvector?

Der kræves ingen tidligere erfaring. Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Definition af Weaviate-schema”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Vektordatabaser: Pinecone, Weaviate og pgvector-lektion?

Ja. Alle Vektordatabaser: Pinecone, Weaviate og pgvector-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Definition af Weaviate-schema
  2. Import af dataobjekter
  3. Weaviate GraphQL-forespørgsler
  4. Vectorizer-moduler og automatisk embedding
← Tilbage til Vektordatabaser: Pinecone, Weaviate og pgvector