Запросы к базе данных и её обновление

Введение в эмбеддинги с OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Запрос к базе данных

Запрос «фильмы, где много поют» подаётся в модель эмбеддингов, вычисляются косинусные расстояния, и результаты сохраняются.

Введение в эмбеддинги с OpenAI API

Запрос к базе данных

Поисковый запрос передаётся напрямую в векторную базу данных для создания эмбеддинга; база уже содержит эмбеддинги документов.

Введение в эмбеддинги с OpenAI API

Получение коллекции

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • Необходимо указать ту же функцию эмбеддинга, что использовалась при добавлении данных в коллекцию
Введение в эмбеддинги с OpenAI API

Запрос к коллекции

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]]
Введение в эмбеддинги с OpenAI API

query() возвращает словарь со следующими ключами:

  • ids: идентификаторы найденных элементов
  • embeddings: эмбеддинги найденных элементов
  • documents: исходные тексты найденных элементов
  • metadatas: метаданные найденных элементов
  • distances: расстояния найденных элементов от текста запроса
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
Введение в эмбеддинги с OpenAI API

Выделен текст запроса и идентификаторы трёх найденных результатов.

  • Первый список соответствует первому query_text
  • Несколько текстов запроса вернут несколько списков
Введение в эмбеддинги с OpenAI API

Выделены идентификаторы результатов запроса вместе со связанными документами, метаданными и расстояниями.

Введение в эмбеддинги с OpenAI API

Обновление коллекции

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Указывайте только поля для обновления — остальные останутся без изменений
  • Коллекция автоматически создаст эмбеддинги
Введение в эмбеддинги с OpenAI API

Upsert коллекции

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • Если ID отсутствуют → добавить их
  • Если ID присутствуют → обновить их
Введение в эмбеддинги с OpenAI API

Удаление

Удаление элементов из коллекции

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

 

Удаление всех коллекций и элементов

client.reset()
  • Внимание: это удалит всё содержимое базы данных!
Введение в эмбеддинги с OpenAI API

Давайте потренируемся!

Введение в эмбеддинги с OpenAI API

Preparing Video For Download...