Zapytania i aktualizacja bazy danych

Wprowadzenie do osadzeń z OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Zapytanie do bazy danych

Zapytanie „movies where people sing a lot" jest przetwarzane przez model embeddingów, obliczane są odległości cosinusowe, a wyniki są zapisywane.

Wprowadzenie do osadzeń z OpenAI API

Zapytanie do bazy danych

Zapytanie jest przekazywane bezpośrednio do wektorowej bazy danych w celu wygenerowania embeddingu; baza zawiera już osadzone dokumenty.

Wprowadzenie do osadzeń z OpenAI API

Pobieranie kolekcji

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Należy podać tę samą funkcję embeddingu, której użyto podczas dodawania danych do kolekcji
Wprowadzenie do osadzeń z OpenAI API

Zapytanie do kolekcji

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]]
Wprowadzenie do osadzeń z OpenAI API

query() zwraca słownik z kluczami:

  • ids: identyfikatory zwróconych elementów
  • embeddings: embeddingi zwróconych elementów
  • documents: teksty źródłowe zwróconych elementów
  • metadatas: metadane zwróconych elementów
  • distances: odległości zwróconych elementów od tekstu zapytania
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Wprowadzenie do osadzeń z OpenAI API

Tekst zapytania jest zaznaczony wraz z identyfikatorami trzech wyników, które zwróciło.

  • Pierwsza lista odpowiada pierwszemu query_text
  • Wiele tekstów zapytań zwraca wiele list
Wprowadzenie do osadzeń z OpenAI API

Identyfikatory wyników zapytania są zaznaczone wraz z powiązanymi dokumentami, metadanymi i odległościami.

Wprowadzenie do osadzeń z OpenAI API

Aktualizowanie kolekcji

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Należy podać tylko pola do zaktualizowania – pozostałe pozostają bez zmian
  • Kolekcja automatycznie tworzy embeddingi
Wprowadzenie do osadzeń z OpenAI API

Upsert kolekcji

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Jeśli identyfikatory nie istnieją → zostaną dodane
  • Jeśli identyfikatory istnieją → zostaną zaktualizowane
Wprowadzenie do osadzeń z OpenAI API

Usuwanie

Usuwanie elementów z kolekcji

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

 

Usuwanie wszystkich kolekcji i elementów

client.reset()
  • Uwaga: ta operacja usunie wszystko z bazy danych!
Wprowadzenie do osadzeń z OpenAI API

Czas na ćwiczenia!

Wprowadzenie do osadzeń z OpenAI API

Preparing Video For Download...