Interrogare e aggiornare il database

Introduzione agli Embeddings con l'API di OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Interrogare il database

La query "movies where people sing a lot" entra in un modello di embedding, si calcolano le distanze coseno e si salvano i risultati finali.

Introduzione agli Embeddings con l'API di OpenAI

Interrogare il database

La query di ricerca viene inviata direttamente al database vettoriale per l'embedding, che contiene già i documenti incorporati.

Introduzione agli Embeddings con l'API di OpenAI

Recuperare la collection

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Devi specificare la stessa embedding function usata per aggiungere i dati alla collection
Introduzione agli Embeddings con l'API di OpenAI

Interrogare la collection

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]]
Introduzione agli Embeddings con l'API di OpenAI

query() restituisce un dict con più chiavi:

  • ids: ID degli elementi restituiti
  • embeddings: embedding degli elementi restituiti
  • documents: testi sorgente degli elementi restituiti
  • metadatas: metadati degli elementi restituiti
  • distances: distanza degli elementi dal testo della query
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introduzione agli Embeddings con l'API di OpenAI

Il testo della query è evidenziato insieme agli ID dei tre risultati generati.

  • La prima lista corrisponde al primo query_text
  • Più query_text restituiscono più liste
Introduzione agli Embeddings con l'API di OpenAI

Gli ID dei risultati della query sono evidenziati con i rispettivi documenti, metadati e distanze.

Introduzione agli Embeddings con l'API di OpenAI

Aggiornare una collection

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Includi solo i campi da aggiornare; gli altri restano invariati
  • La collection crea automaticamente gli embedding
Introduzione agli Embeddings con l'API di OpenAI

Upsert di una collection

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Se gli ID mancano → aggiungili
  • Se gli ID esistono → aggiornali
Introduzione agli Embeddings con l'API di OpenAI

Eliminazione

Eliminare elementi da una collection

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

 

Eliminare tutte le collection e gli elementi

client.reset()
  • Attenzione: questo elimina tutto il database!
Introduzione agli Embeddings con l'API di OpenAI

Let's practice!

Introduzione agli Embeddings con l'API di OpenAI

Preparing Video For Download...