Dotazování a aktualizace databáze

Introduction to Embeddings with the OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Dotazování databáze

Dotaz „movies where people sing a lot" je zpracován embeddovacím modelem, vypočítají se kosinové vzdálenosti a výsledky jsou uloženy.

Introduction to Embeddings with the OpenAI API

Dotazování databáze

Vyhledávací dotaz je předán přímo do vektorové databáze k embeddingu, která již obsahuje embeddované dokumenty.

Introduction to Embeddings with the OpenAI API

Načtení kolekce

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Je nutné zadat stejnou embeddovací funkci, která byla použita při přidávání dat do kolekce
Introduction to Embeddings with the OpenAI API

Dotazování kolekce

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]]
Introduction to Embeddings with the OpenAI API

query() vrátí slovník s více klíči:

  • ids: ID vrácených položek
  • embeddings: Embeddingy vrácených položek
  • documents: Zdrojové texty vrácených položek
  • metadatas: Metadata vrácených položek
  • distances: Vzdálenosti vrácených položek od textu dotazu
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introduction to Embeddings with the OpenAI API

Text dotazu je zvýrazněn spolu s ID tří výsledků, které vygeneroval.

  • První seznam odpovídá prvnímu query_text
  • Více textů dotazu vrátí více seznamů
Introduction to Embeddings with the OpenAI API

ID výsledků dotazu jsou zvýrazněna spolu s příslušnými dokumenty, metadaty a vzdálenostmi.

Introduction to Embeddings with the OpenAI API

Aktualizace kolekce

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Uveďte pouze pole k aktualizaci, ostatní pole zůstanou nezměněna
  • Kolekce automaticky vytvoří embeddingy
Introduction to Embeddings with the OpenAI API

Upsert kolekce

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Pokud ID chybí → přidá je
  • Pokud ID existuje → aktualizuje je
Introduction to Embeddings with the OpenAI API

Mazání

Odstranění položek z kolekce

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

 

Odstranění všech kolekcí a položek

client.reset()
  • Upozornění: tato operace smaže vše v databázi!
Introduction to Embeddings with the OpenAI API

Pojďme cvičit!

Introduction to Embeddings with the OpenAI API

Preparing Video For Download...