データベースのクエリと更新

OpenAI API ではじめる Embeddings 入門

Emmanuel Pire

Senior Software Engineer, DataCamp

データベースへのクエリ

「人々がたくさん歌う映画」というクエリがembeddingモデルに入力され、コサイン距離が計算されて最終結果が格納される。

OpenAI API ではじめる Embeddings 入門

データベースへのクエリ

検索クエリが直接ベクターデータベースに送られてembeddingが作成される。データベースにはすでにembedding済みのドキュメントが格納されている。

OpenAI API ではじめる Embeddings 入門

コレクションの取得

from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction

collection = client.get_collection(
    name="netflix_titles", 
    embedding_function=OpenAIEmbeddingFunction(api_key="...")
)
  • データ追加時と同じembedding関数を指定する必要あり
OpenAI API ではじめる Embeddings 入門

コレクションへのクエリ

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 ではじめる Embeddings 入門

query() は複数のキーを持つ辞書を返します:

  • ids: 返されたアイテムのID
  • embeddings: 返されたアイテムのembedding
  • documents: 返されたアイテムのソーステキスト
  • metadatas: 返されたアイテムのメタデータ
  • distances: クエリテキストからの距離
{'ids': [...],
 'embeddings': None,
 'documents': [...],
 'metadatas': [...],
 'distances': [...]}
OpenAI API ではじめる Embeddings 入門

クエリテキストと、それが生成した3つのクエリ結果のIDがハイライトされている。

  • 最初のリストは最初のquery_textに対応
  • 複数のquery_textは複数のリストを返す
OpenAI API ではじめる Embeddings 入門

クエリ結果のIDと、対応するドキュメント・メタデータ・距離がハイライトされている。

OpenAI API ではじめる Embeddings 入門

コレクションの更新

collection.update(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • 更新するフィールド_のみ_指定し、他は変更なし
  • コレクションが自動的にembeddingを生成
OpenAI API ではじめる Embeddings 入門

コレクションのupsert

collection.upsert(
  ids=["id-1", "id-2"],
  documents=["New document 1", "New document 2"]
)
  • IDが存在しない場合 → 追加
  • IDが存在する場合 → 更新
OpenAI API ではじめる Embeddings 入門

削除

コレクションからアイテムを削除

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

 

すべてのコレクションとアイテムを削除

client.reset()
  • 警告: データベース内のすべてが削除されます!
OpenAI API ではじめる Embeddings 入門

さあ、練習しましょう!

OpenAI API ではじめる Embeddings 入門

Preparing Video For Download...