Interroger et mettre à jour la base de données

Introduction aux embeddings avec l'API d'OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Interroger la base de données

La requête « films où les gens chantent beaucoup » est envoyée à un modèle d'intégration, les distances cosinus sont calculées, puis les résultats finaux sont stockés.

Introduction aux embeddings avec l'API d'OpenAI

Interroger la base de données

La requête de recherche est envoyée directement dans la base vectorielle pour l'intégration, qui contient déjà les documents intégrés.

Introduction aux embeddings avec l'API d'OpenAI

Récupérer la collection

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Vous devez préciser la même fonction d'intégration que celle utilisée lors de l'ajout des données à la collection
Introduction aux embeddings avec l'API d'OpenAI

Interroger 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]]
Introduction aux embeddings avec l'API d'OpenAI

query() renvoie un dict avec plusieurs clés :

  • ids : les identifiants des éléments retournés
  • embeddings : les intégrations des éléments retournés
  • documents : les textes sources des éléments retournés
  • metadatas : les métadonnées des éléments retournés
  • distances : les distances des éléments retournés par rapport au texte de requête
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introduction aux embeddings avec l'API d'OpenAI

Le texte de la requête est mis en évidence avec les identifiants des trois résultats obtenus.

  • La première liste correspond au premier query_text
  • Plusieurs textes de requête renverront plusieurs listes
Introduction aux embeddings avec l'API d'OpenAI

Les ID des résultats de la requête sont mis en évidence avec leurs documents, métadonnées et distances associés.

Introduction aux embeddings avec l'API d'OpenAI

Mettre à jour une collection

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Inclure seulement les champs à mettre à jour, les autres restent inchangés
  • La collection créera automatiquement les intégrations
Introduction aux embeddings avec l'API d'OpenAI

Upsert d'une collection

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Si des ID manquent → ajout
  • Si des ID sont présents → mise à jour
Introduction aux embeddings avec l'API d'OpenAI

Suppression

Supprimer des éléments d'une collection

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

 

Supprimer toutes les collections et tous les éléments

client.reset()
  • Avertissement : cela supprimera tout dans la base de données !
Introduction aux embeddings avec l'API d'OpenAI

Passons à la pratique !

Introduction aux embeddings avec l'API d'OpenAI

Preparing Video For Download...