Query’s uitvoeren en de database bijwerken

Introductie tot Embeddings met de OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

De database bevragen

De query “movies where people sing a lot” gaat naar een embeddingmodel, de cosinusafstanden worden berekend en de eindresultaten worden opgeslagen.

Introductie tot Embeddings met de OpenAI API

De database bevragen

De zoekquery gaat direct naar de vectordatabase voor embedding, die de embedded documenten al bevat.

Introductie tot Embeddings met de OpenAI API

De collectie ophalen

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Geef dezelfde embeddingfunctie op als bij het toevoegen van data aan de collectie
Introductie tot Embeddings met de OpenAI API

De collectie bevragen

result = collection.query(
  query_texts=["movies where people sing a lot"],
  n_results=3
)
print(result)
{'ids': [['s4068', 's293', 's2213']],
 'embeddings': None,
 'documents': [['Title: Quién te cantará (Movie)\nDescription: When a near-...',
   'Title: Quartet (Movie)\nDescription: To save their posh retirement home, ...',
   'Title: Sing On! Spain (TV Show)\nDescription: In this fast-paced, high-...']],
 'metadatas': [[None, None, None]],
 'distances': [[0.350419282913208, 0.36049118638038635, 0.37080681324005127]]
Introductie tot Embeddings met de OpenAI API

query() geeft een dict met meerdere keys terug:

  • ids: de id’s van de resultaten
  • embeddings: de embeddings van de resultaten
  • documents: de bronteksten van de resultaten
  • metadatas: de metadata van de resultaten
  • distances: de afstanden tot de querytekst
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introductie tot Embeddings met de OpenAI API

De querytekst is gemarkeerd, samen met de id’s van de drie bijbehorende queryresultaten.

  • Eerste lijst hoort bij de eerste query_text
  • Meerdere query’s geven meerdere lijsten terug
Introductie tot Embeddings met de OpenAI API

De ID’s van de queryresultaten zijn gemarkeerd, samen met hun documenten, metadata en afstanden.

Introductie tot Embeddings met de OpenAI API

Een collectie updaten

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Neem alleen de te updaten velden op; andere blijven ongewijzigd
  • Collection maakt automatisch embeddings aan
Introductie tot Embeddings met de OpenAI API

Een collectie upserten

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Ontbrekende ID’s → toevoegen
  • Bestaande ID’s → bijwerken
Introductie tot Embeddings met de OpenAI API

Verwijderen

Items uit een collectie verwijderen

collection.delete(ids=["id-1", "id-2"])

 

Alle collecties en items verwijderen

client.reset()
  • Waarschuwing: dit verwijdert alles in de database!
Introductie tot Embeddings met de OpenAI API

Laten we oefenen!

Introductie tot Embeddings met de OpenAI API

Preparing Video For Download...