Consultar y actualizar la base de datos

Introducción a las incrustaciones con la OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Consultar la base de datos

La consulta «películas donde la gente canta mucho» se pasa a un modelo de embeddings, se calculan las distancias coseno y se guardan los resultados finales.

Introducción a las incrustaciones con la OpenAI API

Consultar la base de datos

La consulta de búsqueda se envía directamente a la base de datos vectorial para crear el embedding, que ya contiene los documentos embebidos.

Introducción a las incrustaciones con la OpenAI API

Recuperar la colección

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Debes especificar la misma función de embeddings usada al añadir datos a la colección
Introducción a las incrustaciones con la OpenAI API

Consultar la colección

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]]
Introducción a las incrustaciones con la OpenAI API

query() devuelve un dict con varias claves:

  • ids: los id de los elementos devueltos
  • embeddings: los embeddings de los elementos devueltos
  • documents: los textos fuente de los elementos devueltos
  • metadatas: los metadatos de los elementos devueltos
  • distances: las distancias de los elementos respecto al texto de consulta
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introducción a las incrustaciones con la OpenAI API

El texto de la consulta aparece resaltado junto con los id de los tres resultados que generó.

  • La primera lista corresponde al primer query_text
  • Varias consultas devuelven varias listas
Introducción a las incrustaciones con la OpenAI API

Se resaltan los ID de los resultados de la consulta junto con sus documentos, metadatos y distancias asociados.

Introducción a las incrustaciones con la OpenAI API

Actualizar una colección

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Incluye solo los campos a actualizar; el resto no cambia
  • La colección creará los embeddings automáticamente
Introducción a las incrustaciones con la OpenAI API

Upsert de una colección

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Si faltan IDs → se añaden
  • Si existen IDs → se actualizan
Introducción a las incrustaciones con la OpenAI API

Eliminación

Eliminar elementos de una colección

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

 

Eliminar todas las colecciones y elementos

client.reset()
  • Advertencia: ¡esto borrará todo en la base de datos!
Introducción a las incrustaciones con la OpenAI API

¡Vamos a practicar!

Introducción a las incrustaciones con la OpenAI API

Preparing Video For Download...