Fråga och uppdatera databasen

Introduktion till inbäddningar med OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Fråga databasen

Frågan "movies where people sing a lot" matas in i en inbäddningsmodell, cosinusavstånden beräknas och resultaten lagras.

Introduktion till inbäddningar med OpenAI API

Fråga databasen

Sökfrågan matas direkt in i vektordatabasen för inbäddning, som redan innehåller de inbäddade dokumenten.

Introduktion till inbäddningar med OpenAI API

Hämta samlingen

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Måste ange samma inbäddningsfunktion som användes när data lades till i samlingen
Introduktion till inbäddningar med OpenAI API

Fråga samlingen

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]]
Introduktion till inbäddningar med OpenAI API

query() returnerar en dict med flera nycklar:

  • ids: ID:n för de returnerade objekten
  • embeddings: Inbäddningarna för de returnerade objekten
  • documents: Källtexterna för de returnerade objekten
  • metadatas: Metadata för de returnerade objekten
  • distances: Avstånden från frågetexten för de returnerade objekten
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introduktion till inbäddningar med OpenAI API

Frågetexten är markerad tillsammans med ID:n för de tre frågeresultaten den genererade.

  • Den första listan motsvarar den första query_text
  • Flera frågetexten returnerar flera listor
Introduktion till inbäddningar med OpenAI API

ID:n för frågeresultaten är markerade tillsammans med tillhörande dokument, metadata och avstånd.

Introduktion till inbäddningar med OpenAI API

Uppdatera en samling

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Inkludera endast de fält som ska uppdateras – övriga fält förblir oförändrade
  • Samlingen skapar inbäddningar automatiskt
Introduktion till inbäddningar med OpenAI API

Upserta en samling

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Om ID:n saknas → lägg till dem
  • Om ID:n finns → uppdatera dem
Introduktion till inbäddningar med OpenAI API

Ta bort

Ta bort objekt från en samling

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

 

Ta bort alla samlingar och objekt

client.reset()
  • Varning: detta tar bort allt i databasen!
Introduktion till inbäddningar med OpenAI API

Nu kör vi en övning!

Introduktion till inbäddningar med OpenAI API

Preparing Video For Download...