素晴らしき埋め込みの世界!

OpenAI API で学ぶ埋め込み入門

Emmanuel Pire

Senior Software Engineer, DataCamp

埋め込みとは?

  • NLPNatural Language Processing、自然言語処理)における基本的概念
  • テキストの数値表現

A word being inputted to an embedding model, which outputs a numerical representation of the text.

OpenAI API で学ぶ埋め込み入門

埋め込みとは?

  • テキストは 多次元 の ベクトル空間 にマッピングされる
  • モデルが出力した数値は空間内でのテキストの位置を表す
  • 類似した単語は近くに
  • 意味的に遠い単語は離れた位置に表示される

Text represented numerically, where more similar text is closer together.

OpenAI API で学ぶ埋め込み入門

埋め込みはなぜ有用か?

  • 埋め込みによりセマンティックな意味を捉えられる
  • セマンティックな意味: 文脈と意図
    • 「スーパーマーケットへはどう行けばいいですか?」
    • 「お店までの道を教えてもらえますか?」

Text represented numerically, where more similar text is closer together.

OpenAI API で学ぶ埋め込み入門

セマンティック検索エンジン

  • 従来の検索エンジン
    • キーワードのパターンマッチング
    • 真の意図を見逃す可能性がある
    • 類似した単語を見逃す可能性がある

A traditional search engine showing irrelevant results.

OpenAI API で学ぶ埋め込み入門

セマンティック検索エンジン

  • 埋め込みを使用して意図と文脈を理解する

The text "comfortable running shoes" being embedded.

OpenAI API で学ぶ埋め込み入門

セマンティック検索エンジン

  • 埋め込みを使用して意図と文脈を理解する

The embedded text displayed in the multi-dimensional space.

OpenAI API で学ぶ埋め込み入門

レコメンドシステム

  • : 求人投稿のおすすめ
    • すでに閲覧した内容に基づいて求人をおすすめする
    • 職種名のゆれの問題を軽減

Job recommendations displayed as embeddings.

OpenAI API で学ぶ埋め込み入門

分類

分類タスク:

  • 感情分類
  • クラスタリング
  • カテゴリ分類

  • ニュース見出しの分類

An unknown news headline displayed as embeddings to classify it.

OpenAI API で学ぶ埋め込み入門

埋め込みリクエストの作成

  • 埋め込みエンドポイント
from openai import OpenAI


client = OpenAI(api_key="<OPENAI_API_KEY>")
response = client.embeddings.create(
model="text-embedding-3-small",
input="Embeddings are a numerical representation of text that can be used to measure the relatedness between two pieces of text."
)
response_dict = response.model_dump() print(response_dict)
1 https://platform.openai.com/docs/api-reference/embeddings
OpenAI API で学ぶ埋め込み入門

埋め込みレスポンス

{'object': 'list',
 'data': [
    {
      "embedding": [0.0023064255, ..., -0.0028842222],
      "index": 0,
      "object": "embedding"
    }
  ],
 'model': 'text-embedding-3-small',
 'usage': {
  "prompt_tokens": 24,
  "total_tokens": 24
  }
}
OpenAI API で学ぶ埋め込み入門

埋め込みの抽出

print(response_dict['data'][0]['embedding'])
[0.0023064255, ...., -0.0028842222]
OpenAI API で学ぶ埋め込み入門

練習しましょう!

OpenAI API で学ぶ埋め込み入門

Preparing Video For Download...