Vektordatabaser: Pinecone, Weaviate og pgvector · Lektion

Import af dataobjekter

Lær at importere og administrere dataobjekter effektivt i Deres Weaviate-instans, herunder de tilknyttede vektorer.

Lektion 2 af 411 trin

Import af dataobjekter er en gratis Vektordatabaser: Pinecone, Weaviate og pgvector-lektion på CoddyKit. Dette er lektion 2 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.

Import af data til Weaviate

Velkommen! I denne lektion lærer du, hvordan du får dine værdifulde data ind i din Weaviate-instans. Det er et vigtigt trin for at udføre semantiske søgninger og udnytte Weaviates effektive funktioner.

Vi gennemgår, hvordan du tilføjer individuelle dataobjekter og, endnu vigtigere, hvordan du effektivt importerer store datasæt ved hjælp af batchhandlinger, herunder håndtering af brugerdefinerede vektorer.

Opsætning af Weaviate-klienten

Før du kan importere data, skal du oprette forbindelse til din Weaviate-instans ved hjælp af dens Python-klient. Denne klient fungerer som din primære grænseflade til at interagere med databasen.

Kør koden nedenfor for at se, hvordan du opretter forbindelse 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 gemmes dine data som dataobjekter. Hvert objekt tilhører en bestemt samling (svarende til en tabel eller klasse) og har:

  • Egenskaber: Nøgle-værdi-par, der beskriver dine data (f.eks. en 'title' eller 'content' for en artikel).
  • Vektor: En numerisk repræsentation (embedding) af objektets betydning, som bruges til lighedssøgninger.

Weaviate kan generere disse vektorer for dig, eller du kan angive dine egne.

Tilføjelse af et enkelt dataobjekt

Den enkleste måde at tilføje data på er at oprette ét objekt ad gangen. Det er nyttigt ved små datamængder eller under test. Weaviate genererer automatisk en embedding for dit objekt baseret på dets egenskaber.

Dette eksempel forudsætter, at du har defineret en 'Article'-samling (fra den forrige lektion).

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()

Inkludering af brugerdefinerede vektorer

Ofte vil du gerne bruge embeddings, der på forhånd er genereret af dine egne modeller (f.eks. fra et OpenAI API-kald). Du kan angive disse brugerdefinerede vektorer, når du opretter et objekt.

Eksemplet bruger en pladsholdervektor. I en rigtig applikation ville dette være en højdimensionel vektor fra en embedding-model.

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()

Effektiv batchimport

For store datasæt er det ineffektivt at importere objekter ét ad gangen på grund af netværksoverhead. Weaviates funktion til batchimport giver dig mulighed for at sende flere objekter i én forespørgsel, hvilket forbedrer ydeevnen markant.

Denne metode anbefales stærkt til produktionsapplikationer og dataindlæsning i stor skala.

Implementering af grundlæggende batchimport

Weaviates klient stiller en praktisk kontekstmanager til rådighed til batchbehandling. Du tilføjer objekter til batchen, og klienten sørger for at sende dem effektivt.

I dette eksempel genererer Weaviate vektorerne for hver artikel 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()

Batchbehandling med forhåndsgenererede vektorer

Ligesom ved import af enkelte objekter kan du angive brugerdefinerede vektorer for hvert objekt, når du udfører en batchimport. Det er almindeligt, når du allerede har behandlet dine data gennem en embedding-model.

Sørg for, at vektordimensionerne svarer til konfigurationen af din samling.

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()

Bedste praksis for import

Sådan optimerer du din dataimport:

  • Batchstørrelse: Eksperimentér med batch_size (f.eks. 64, 128 eller 256) for at opnå optimal gennemstrømning baseret på dit netværk og din Weaviate-instans.
  • Fejlhåndtering: Implementér robust fejlhåndtering og mekanismer til nye forsøg, især ved store importer, der kan blive ramt af midlertidige netværksproblemer.
  • Forbehandling af data: Rens og strukturér dine data før importen for at sikre overensstemmelse med dit Weaviate-skema.
  • Asynkrone importer: Ved meget store datasæt kan du overveje asynkron batchbehandling for endnu større effektivitet.

Test din forståelse

Hvilke af disse er fordele ved at bruge Weaviates funktion til batchimport sammenlignet med at importere objekter ét ad gangen?

Opsummering: import af Weaviate-data

Godt gået! Du har lært det vigtigste om at få dine data ind i Weaviate:

  • Hvordan du opretter forbindelse til din Weaviate-instans ved hjælp af klienten.
  • Strukturen af et Weaviate-dataobjekt, herunder egenskaber og vektorer.
  • Tilføjelse af individuelle dataobjekter med eller uden brugerdefinerede vektorer.
  • Betydningen af og implementeringen af effektive batchimporter til store datasæt.

Nu er du klar til at udfylde dine Weaviate-samlinger med dine egne data!

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 “Import af dataobjekter” gratis?

Ja — alle 3 lektioner i læringssporet Vektordatabaser: Pinecone, Weaviate og pgvector, inklusive “Import af dataobjekter”, 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 “Import af dataobjekter”?

Lær at importere og administrere dataobjekter effektivt i Deres Weaviate-instans, herunder de tilknyttede vektorer. 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 2 af 4.

Hvor lang tid tager lektionen “Import af dataobjekter”?

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