Vektordatabaser: Pinecone, Weaviate og pgvector · leksjon

Importere dataobjekter

Lær å importere og administrere dataobjekter effektivt i Weaviate-instansen din, inkludert tilhørende vektorer.

Leksjon 2 av 411 trinn

Importere dataobjekter er en gratis leksjon i Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Vektordatabaser: Pinecone, Weaviate og pgvector, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Vektordatabaser: Pinecone, Weaviate og pgvector inneholder totalt 4 leksjoner.

Importere data til Weaviate

Velkommen! I denne leksjonen lærer du hvordan du får verdifulle data inn i Weaviate-instansen din. Dette er et viktig trinn for å utføre semantiske søk og utnytte Weaviates kraftige funksjoner.

Vi går gjennom hvordan du legger til individuelle dataobjekter og, enda viktigere, hvordan du effektivt importerer store datasett ved hjelp av batch-operasjoner, inkludert håndtering av egendefinerte vektorer.

Konfigurere Weaviate-klienten

Før du kan importere data, må du opprette en tilkobling til Weaviate-instansen din ved hjelp av Python-klienten. Denne klienten fungerer som hovedgrensesnittet ditt for samhandling med databasen.

Kjør koden nedenfor for å se hvordan du kobler til en lokal Weaviate-instans.

import weaviate

def main():
  # Connect to a local Weaviate instance
  # For a cloud instance, you'd use weaviate.connect_to_wcs(...)
  client = weaviate.connect_to_local()
  
  if client.is_connected():
    print("Weaviate client connected successfully!")
  else:
    print("Failed to connect to Weaviate.")
  
  client.close() # Always close the connection

if __name__ == "__main__":
  main()

Forstå Weaviate-objekter

I Weaviate lagres dataene dine som dataobjekter. Hvert objekt tilhører en bestemt samling (tilsvarende en tabell eller klasse) og har:

  • Egenskaper: Nøkkel-verdi-par som beskriver dataene dine (for eksempel en «title» eller «content» for en artikkel).
  • Vektor: En numerisk representasjon (embedding) av objektets betydning, som brukes til likhetssøk.

Weaviate kan generere disse vektorene for deg, eller du kan oppgi dine egne.

Legge til ett dataobjekt

Den enkleste måten å legge til data på er å opprette ett objekt om gangen. Dette er nyttig for små datamengder eller ved testing. Weaviate genererer automatisk en embedding for objektet basert på egenskapene.

Dette eksempelet forutsetter at du har definert en «Article»-samling (fra den forrige leksjonen).

import weaviate

def main():
  client = weaviate.connect_to_local()
  if not client.is_connected():
    print("Connection error. Exiting.")
    return

  article_obj = {
    "title": "Introduction to Embeddings",
    "content": "Embeddings convert data into numerical vectors for AI tasks."
  }

  try:
    data_id = client.data_object.create(
      properties=article_obj,
      collection="Article" # Must match your schema
    )
    print(f"Article object created with ID: {data_id}")
  except Exception as e:
    print(f"Error creating object: {e}")
  finally:
    client.close()

if __name__ == "__main__":
  main()

Inkludere egendefinerte vektorer

Ofte ønsker du å bruke embedding-er som er forhåndsgenerert av dine egne modeller (for eksempel fra et kall til OpenAI API). Du kan oppgi disse egendefinerte vektorene når du oppretter et objekt.

Eksempelet bruker en plassholdervektor. I en virkelig applikasjon ville dette vært en vektor med mange dimensjoner fra en embedding-modell.

import weaviate

def main():
  client = weaviate.connect_to_local()
  if not client.is_connected():
    print("Connection error. Exiting.")
    return

  article_obj = {
    "title": "Advanced RAG Techniques",
    "content": "RAG systems can be enhanced with query transformations."
  }

  # Example custom vector (dimensions must match your collection config)
  custom_vector = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]

  try:
    data_id = client.data_object.create(
      properties=article_obj,
      collection="Article",
      vector=custom_vector # Provide your pre-generated vector
    )
    print(f"Article object created with ID: {data_id}")
  except Exception as e:
    print(f"Error creating object: {e}")
  finally:
    client.close()

if __name__ == "__main__":
  main()

Effektive batch-importer

For store datasett er det ineffektivt å importere objekter ett og ett på grunn av nettverksoverhead. Weaviates funksjonalitet for batch-import lar deg sende flere objekter i én forespørsel, noe som forbedrer ytelsen betydelig.

Denne metoden anbefales sterkt for produksjonsapplikasjoner og storskala datainnhenting.

Implementere grunnleggende batch-import

Weaviate-klienten tilbyr en praktisk konteksthåndterer for batching. Du legger objekter til i batchen, og klienten håndterer sendingen på en effektiv måte.

I dette eksempelet genererer Weaviate vektorene for hver artikkel i batchen.

import weaviate

def main():
  client = weaviate.connect_to_local()
  if not client.is_connected():
    print("Connection error. Exiting.")
    return

  articles_to_import = [
    {"title": "Vector DBs Explained", "content": "Store and search vectors."},
    {"title": "Pinecone vs. Weaviate", "content": "Comparing vector databases."},
    {"title": "Introduction to pgvector", "content": "Vectors in PostgreSQL."}
  ]

  try:
    with client.batch as batch:
      for article in articles_to_import:
        batch.add_object(
          properties=article,
          collection="Article"
        )
    print(f"Successfully added {len(articles_to_import)} objects in batch.")
  except Exception as e:
    print(f"Error during batch import: {e}")
  finally:
    client.close()

if __name__ == "__main__":
  main()

Batching med forhåndsgenererte vektorer

Akkurat som ved import av enkeltobjekter kan du oppgi egendefinerte vektorer for hvert objekt når du utfører en batch-import. Dette er vanlig når du allerede har behandlet dataene gjennom en embedding-modell.

Pass på at vektordimensjonene samsvarer med konfigurasjonen til samlingen.

import weaviate

def main():
  client = weaviate.connect_to_local()
  if not client.is_connected():
    print("Connection error. Exiting.")
    return

  data_with_vectors = [
    {
      "properties": {"title": "AI in Healthcare", "content": "LLMs for medical research."},
      "vector": [0.11, 0.22, 0.33, 0.44, 0.55, 0.66, 0.77, 0.88]
    },
    {
      "properties": {"title": "Future of Robotics", "content": "Automation and ML."},
      "vector": [0.88, 0.77, 0.66, 0.55, 0.44, 0.33, 0.22, 0.11]
    }
  ]

  try:
    with client.batch as batch:
      for item in data_with_vectors:
        batch.add_object(
          properties=item["properties"],
          collection="Article",
          vector=item["vector"]
        )
    print(f"Successfully added {len(data_with_vectors)} objects with vectors in batch.")
  except Exception as e:
    print(f"Error during batch import with vectors: {e}")
  finally:
    client.close()

if __name__ == "__main__":
  main()

Beste praksis for import

Følg disse rådene for å optimalisere dataimportprosessen:

  • Batchstørrelse: Prøv deg frem med batch_size (for eksempel 64, 128 eller 256) for å oppnå optimal gjennomstrømming basert på nettverket ditt og Weaviate-instansen.
  • Feilhåndtering: Implementer robust feilhåndtering og mekanismer for nye forsøk, særlig ved store importer som kan bli påvirket av midlertidige nettverksproblemer.
  • Forbehandle data: Rydd opp i og strukturer dataene før import, slik at de er konsistente med Weaviate-skjemaet.
  • Asynkrone importer: For svært store datasett bør du vurdere asynkron batching for enda bedre effektivitet.

Sjekk forståelsen din

Hvilke av disse er fordeler ved å bruke Weaviates batch-importfunksjonalitet sammenlignet med å importere objekter ett og ett?

Oppsummering: importere Weaviate-data

Godt jobbet! Du har lært det viktigste om å få dataene dine inn i Weaviate:

  • Hvordan du kobler til Weaviate-instansen din ved hjelp av klienten.
  • Strukturen til et Weaviate-dataobjekt, inkludert egenskaper og vektorer.
  • Å legge til individuelle dataobjekter, med eller uten egendefinerte vektorer.
  • Betydningen av og hvordan du implementerer effektive batch-importer for store datasett.

Nå er du klar til å fylle Weaviate-samlingene dine med egne data!

Gratis å komme i gang

Lær deg Vektordatabaser: Pinecone, Weaviate og pgvector med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Importere dataobjekter» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Vektordatabaser: Pinecone, Weaviate og pgvector, inkludert «Importere dataobjekter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Vektordatabaser: Pinecone, Weaviate og pgvector inneholder totalt 4 leksjoner.

Hva lærer jeg i «Importere dataobjekter»?

Lær å importere og administrere dataobjekter effektivt i Weaviate-instansen din, inkludert tilhørende vektorer. Du øver på Vektordatabaser: Pinecone, Weaviate og pgvector med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Vektordatabaser: Pinecone, Weaviate og pgvector?

Ingen tidligere erfaring er nødvendig. Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Importere dataobjekter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

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

Ja. Alle Vektordatabaser: Pinecone, Weaviate og pgvector-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Definere Weaviate-skjemaer
  2. Importere dataobjekter
  3. Weaviate GraphQL-spørringer
  4. Vectorizer-moduler og automatisk embedding
← Tilbake til Vektordatabaser: Pinecone, Weaviate og pgvector