Consultando e atualizando o banco de dados

Introdução aos embeddings com o OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Consultando o banco de dados

A consulta "movies where people sing a lot" é enviada para um modelo de embeddings, as distâncias cosseno são calculadas e os resultados finais são armazenados.

Introdução aos embeddings com o OpenAI API

Consultando o banco de dados

A consulta de busca é enviada direto ao banco vetorial para criação do embedding, que já contém os documentos embutidos.

Introdução aos embeddings com o OpenAI API

Recuperar a coleção

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • É preciso especificar a mesma função de embedding usada ao adicionar dados à coleção
Introdução aos embeddings com o OpenAI API

Consultando a coleção

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]]
Introdução aos embeddings com o OpenAI API

query() retorna um dict com várias chaves:

  • ids: os IDs dos itens retornados
  • embeddings: os embeddings dos itens retornados
  • documents: os textos-fonte dos itens retornados
  • metadatas: os metadados dos itens retornados
  • distances: as distâncias dos itens em relação ao texto da consulta
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Introdução aos embeddings com o OpenAI API

O texto da consulta é destacado junto com os IDs dos três resultados que ela gerou.

  • A primeira lista corresponde ao primeiro query_text
  • Vários textos de consulta retornam várias listas
Introdução aos embeddings com o OpenAI API

Os IDs dos resultados são destacados junto com seus documentos, metadados e distâncias associados.

Introdução aos embeddings com o OpenAI API

Atualizando uma coleção

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Inclua apenas os campos a atualizar; os demais não mudam
  • A coleção criará os embeddings automaticamente
Introdução aos embeddings com o OpenAI API

Upsert em uma coleção

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Se os IDs não existirem → adiciona
  • Se os IDs existirem → atualiza
Introdução aos embeddings com o OpenAI API

Excluindo

Excluir itens de uma coleção

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

 

Excluir todas as coleções e itens

client.reset()
  • Atenção: isso vai excluir tudo no banco de dados!
Introdução aos embeddings com o OpenAI API

Vamos praticar!

Introdução aos embeddings com o OpenAI API

Preparing Video For Download...