Vektoritietokannat: Pinecone, Weaviate ja pgvector · Oppitunti

Dataobjektien tuominen

Oppikaa tuomaan dataobjekteja tehokkaasti Weaviate-instanssiin ja hallinnoimaan niitä niihin liittyvine vektoreineen.

Oppitunti 2/411 vaihetta

Dataobjektien tuominen on ilmainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.

Tietojen tuominen Weaviateen

Tervetuloa! Tässä oppitunnissa opitte siirtämään arvokkaat tietonne Weaviate-instanssiinne. Tämä on tärkeä vaihe semanttisten hakujen tekemisessä ja Weaviaten tehokkaiden ominaisuuksien hyödyntämisessä.

Käsittelemme yksittäisten dataobjektien lisäämistä ja ennen kaikkea suurten tietojoukkojen tehokasta tuomista eräajoilla, mukaan lukien mukautettujen vektoreiden käsittely.

Weaviate-asiakasohjelman määrittäminen

Ennen tietojen tuomista Teidän on muodostettava yhteys Weaviate-instanssiinne Python-asiakasohjelman avulla. Tämä asiakasohjelma toimii ensisijaisena rajapintananne tietokannan käsittelyyn.

Suorittakaa alla oleva koodi nähdäksenne, miten paikalliseen Weaviate-instanssiin muodostetaan yhteys.

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

Weaviate-objektien ymmärtäminen

Weaviatessa tietonne tallennetaan dataobjekteina. Kukin objekti kuuluu tiettyyn kokoelmaan (taulun tai luokan tapaan), ja sillä on:

  • Ominaisuudet: dataanne kuvaavia avain–arvo-pareja (esimerkiksi artikkelin 'title' tai 'content').
  • Vektori: objektin merkityksen numeerinen esitys (embedding), jota käytetään samankaltaisuushauissa.

Weaviate voi luoda nämä vektorit puolestanne, tai voitte toimittaa omat vektorinne.

Yksittäisen dataobjektin lisääminen

Yksinkertaisin tapa lisätä tietoja on luoda yksi objekti kerrallaan. Tämä sopii pienille tietomäärille tai testaamiseen. Weaviate luo objektille automaattisesti embeddingin sen ominaisuuksien perusteella.

Tässä esimerkissä oletetaan, että olette määrittäneet 'Article'-kokoelman edellisessä oppitunnissa.

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

Mukautettujen vektoreiden käyttäminen

Usein haluatte käyttää omilla malleillanne valmiiksi luotuja embedding-esityksiä (esimerkiksi OpenAI API -kutsun tuloksena). Voitte antaa nämä mukautetut vektorit objektia luotaessa.

Esimerkissä käytetään paikkamerkkivektoria. Todellisessa sovelluksessa kyseessä olisi embedding-mallin tuottama korkeaulotteinen vektori.

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

Tehokas erätuonti

Suurissa tietojoukoissa objektien tuominen yksi kerrallaan on verkkoliikenteen aiheuttaman kuormituksen vuoksi tehotonta. Weaviaten erätuontitoiminnon avulla voitte lähettää useita objekteja yhdellä pyynnöllä, mikä parantaa suorituskykyä huomattavasti.

Tätä menetelmää suositellaan vahvasti tuotantosovelluksiin ja suurten tietomäärien siirtämiseen.

Peruserätuonnin toteuttaminen

Weaviate-asiakasohjelma tarjoaa eräajoon kätevän kontekstinhallinnan. Lisäätte objektit erään, ja asiakasohjelma huolehtii niiden tehokkaasta lähettämisestä.

Tässä esimerkissä Weaviate luo vektorit jokaiselle erään kuuluvalle artikkelille.

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

Eräajo valmiiksi luoduilla vektoreilla

Kuten yksittäisiä objekteja tuotaessa, voitte antaa kullekin objektille mukautetun vektorin myös erätuonnin yhteydessä. Tämä on yleistä silloin, kun olette jo käsitelleet tietonne embedding-mallilla.

Varmistakaa, että vektorien dimensiot vastaavat kokoelman määrityksiä.

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

Parhaat käytännöt tietojen tuontiin

Voitte tehostaa tietojen tuontia seuraavasti:

  • Eräkoko: Kokeilkaa arvoja batch_size-parametrille (esimerkiksi 64, 128 ja 256) optimaalisen läpimenon saavuttamiseksi verkkoyhteytenne ja Weaviate-instanssinne perusteella.
  • Virheenkäsittely: Toteuttakaa vankka virheenkäsittely ja uudelleenyritysmekanismit erityisesti suurissa tuonneissa, joissa voi ilmetä tilapäisiä verkkoyhteysongelmia.
  • Esikäsitelkää tiedot: Puhdistakaa ja jäsentäkää tietonne ennen tuontia, jotta ne ovat yhdenmukaisia Weaviate-skeemanne kanssa.
  • Asynkroniset tuonnit: Harkitkaa erittäin suurissa tietojoukoissa asynkronista eräajoa tehokkuuden parantamiseksi entisestään.

Ymmärryksenne tarkistaminen

Mitkä näistä ovat Weaviaten erätuontitoiminnon etuja verrattuna objektien tuomiseen yksi kerrallaan?

Kertaus: Weaviate-tietojen tuonti

Hienoa työtä! Olette oppineet perusteet tietojen tuomisesta Weaviateen:

  • Weaviate-instanssiin yhdistäminen asiakasohjelman avulla.
  • Weaviate-dataobjektin rakenne, mukaan lukien ominaisuudet ja vektorit.
  • Yksittäisten dataobjektien lisääminen mukautetuilla vektoreilla tai ilman niitä.
  • Tehokkaiden erätuontien merkitys ja toteuttaminen suurille tietojoukoille.

Olette nyt valmiita täyttämään Weaviate-kokoelmanne omilla tiedoillanne!

Aloita maksutta

Opi Vektoritietokannat: Pinecone, Weaviate ja pgvector tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Dataobjektien tuominen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolun 3 oppituntia, myös oppitunnin “Dataobjektien tuominen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Vektoritietokannat: Pinecone, Weaviate ja pgvector-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Dataobjektien tuominen”?

Oppikaa tuomaan dataobjekteja tehokkaasti Weaviate-instanssiin ja hallinnoimaan niitä niihin liittyvine vektoreineen. Harjoittelet Vektoritietokannat: Pinecone, Weaviate ja pgvector-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Vektoritietokannat: Pinecone, Weaviate ja pgvector-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Dataobjektien tuominen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunnilla?

Kyllä. Jokainen Vektoritietokannat: Pinecone, Weaviate ja pgvector-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Weaviate-skeeman määrittely
  2. Dataobjektien tuominen
  3. Weaviate GraphQL -kyselyt
  4. Vectorizer-moduulit ja automaattinen embedding
← Takaisin: Vektoritietokannat: Pinecone, Weaviate ja pgvector