Interogarea și actualizarea bazei de date

Introducere în Embeddings cu API-ul OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Interogarea bazei de date

Interogarea „movies where people sing a lot" este introdusă într-un model de embedding, se calculează distanțele cosinus, iar rezultatele finale sunt stocate.

Introducere în Embeddings cu API-ul OpenAI

Interogarea bazei de date

Interogarea de căutare este trimisă direct în baza de date vectorială pentru embedding, care conține deja documentele indexate.

Introducere în Embeddings cu API-ul OpenAI

Recuperarea colecției

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Trebuie specificată aceeași funcție de embedding utilizată la adăugarea datelor în colecție
Introducere în Embeddings cu API-ul OpenAI

Interogarea colecției

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]]
Introducere în Embeddings cu API-ul OpenAI

query() returnează un dicționar cu mai multe chei:

  • ids: ID-urile elementelor returnate
  • embeddings: Embedding-urile elementelor returnate
  • documents: Textele sursă ale elementelor returnate
  • metadatas: Metadatele elementelor returnate
  • distances: Distanțele elementelor față de textul interogării
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introducere în Embeddings cu API-ul OpenAI

Textul interogării este evidențiat împreună cu ID-urile celor trei rezultate generate.

  • Prima listă corespunde primului query_text
  • Mai multe query_texts returnează mai multe liste
Introducere în Embeddings cu API-ul OpenAI

ID-urile rezultatelor sunt evidențiate împreună cu documentele, metadatele și distanțele asociate.

Introducere în Embeddings cu API-ul OpenAI

Actualizarea unei colecții

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Includeți doar câmpurile de actualizat; celelalte rămân neschimbate
  • Colecția va genera automat embedding-uri
Introducere în Embeddings cu API-ul OpenAI

Upsert într-o colecție

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Dacă ID-urile lipsesc → sunt adăugate
  • Dacă ID-urile există → sunt actualizate
Introducere în Embeddings cu API-ul OpenAI

Ștergerea

Ștergerea elementelor dintr-o colecție

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

 

Ștergerea tuturor colecțiilor și elementelor

client.reset()
  • Avertisment: aceasta va șterge tot din baza de date!
Introducere în Embeddings cu API-ul OpenAI

Să exersăm!

Introducere în Embeddings cu API-ul OpenAI

Preparing Video For Download...