Den Vektorraum untersuchen

Einführung in Embeddings mit der OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Beispiel: Schlagzeilen einbetten

articles = [
    {"headline": "Economic Growth Continues Amid Global Uncertainty", "topic": "Business"},
    {"headline": "Interest rates fall to historic lows", "topic": "Business"},
    {"headline": "Scientists Make Breakthrough Discovery in Renewable Energy", "topic": "Science"},
    {"headline": "India Successfully Lands Near Moon's South Pole", "topic": "Science"},
    {"headline": "New Particle Discovered at CERN", "topic": "Science"},
    {"headline": "Tech Company Launches Innovative Product to Improve Online Accessibility", "topic": "Tech"},
    {"headline": "Tech Giant Buys 49% Stake In AI Startup", "topic": "Tech"},
    {"headline": "New Social Media Platform Has Everyone Talking!", "topic": "Tech"},
    {"headline": "The Blues get promoted on the final day of the season!", "topic": "Sport"},
    {"headline": "1.5 Billion Tune-in to the World Cup Final", "topic": "Sport"}
]
Einführung in Embeddings mit der OpenAI API

Beispiel: Schlagzeilen einbetten

Eine Liste von Dictionaries mit den Schlagzeilen und ihren Embeddings.

Einführung in Embeddings mit der OpenAI API

Mehrere Eingaben einbetten

headline_text = [article['headline'] for article in articles]
headline_text
["Economic Growth Continues Amid Global Uncertainty",
 ...,
 "1.5 Billion Tune-in to the World Cup Final"]
response = client.embeddings.create(
  model="text-embedding-3-small",
  input=headline_text
)
response_dict = response.model_dump()
  • Batching ist effizienter als mehrere API-Calls zu machen
Einführung in Embeddings mit der OpenAI API
[...]

'data': [
    {
      "embedding": [-0.017142612487077713, ..., -0.0012911480152979493],
      "index": 0,
      "object": "embedding"
    },
    {
      "embedding": [-0.032995883375406265, ..., -0.0028605300467461348],
      "index": 1,
      "object": "embedding"
    },
    ...
  ]

[...]
Einführung in Embeddings mit der OpenAI API

Mehrere Eingaben einbetten

articles = [
    {"headline": "Economic Growth Continues Amid Global Uncertainty", "topic": "Business"},
     ...
]
for i, article in enumerate(articles):

article['embedding'] = response_dict['data'][i]['embedding']
print(articles[:2])
[{'headline': 'Economic Growth Continues Amid Global Uncertainty',
  'topic': 'Business',
  'embedding': [-0.017142612487077713, ..., -0.0012911480152979493]}
 {'headline': 'Interest rates fall to historic lows',
  'topic': 'Business',
  'embedding': [-0.032995883375406265, ..., -0.0028605300467461348]}]
Einführung in Embeddings mit der OpenAI API

Wie lang ist der Embeddings-Vektor?

  • „Economic Growth Continues Amid Global Uncertainty"
len(articles[0]['embedding'])
1536
  • „Tech Company Launches Innovative Product to Improve Accessibility"
len(articles[5]['embedding'])
1536
  • Gibt immer 1536 Zahlen zurück!
Einführung in Embeddings mit der OpenAI API

Dimensionsreduktion und t-SNE

 

  • Verschiedene Techniken zur Reduktion der Dimensionen
  • t-SNE (t-distributed Stochastic Neighbor Embedding)
1 https://www.datacamp.com/tutorial/introduction-t-sne
Einführung in Embeddings mit der OpenAI API

t-SNE implementieren

from sklearn.manifold import TSNE
import numpy as np


embeddings = [article['embedding'] for article in articles]
tsne = TSNE(n_components=2, perplexity=5)
embeddings_2d = tsne.fit_transform(np.array(embeddings))
  • n_components: Anzahl der Ziel-Dimensionen
  • perplexity: vom Algorithmus genutzt, muss kleiner als die Anzahl Datenpunkte sein
  • Führt zu Informationsverlust
1 https://www.datacamp.com/tutorial/introduction-t-sne
Einführung in Embeddings mit der OpenAI API

Embeddings visualisieren

import matplotlib.pyplot as plt

plt.scatter(embeddings_2d[:, 0], embeddings_2d[:, 1])

topics = [article['topic'] for article in articles] for i, topic in enumerate(topics): plt.annotate(topic, (embeddings_2d[i, 0], embeddings_2d[i, 1])) plt.show()
Einführung in Embeddings mit der OpenAI API

Embeddings visualisieren

 

  • Ähnliche Artikel liegen beieinander!
  • Das Modell hat die semantische Bedeutung erfasst

 

  • Als Nächstes: Ähnlichkeit berechnen

 

Ein Plot des 2D-Vektorraums, der zeigt, dass Rezensionen mit gleichem Sentiment und Thema im Vektorraum näher beieinander liegen.

Einführung in Embeddings mit der OpenAI API

Lass uns üben!

Einführung in Embeddings mit der OpenAI API

Preparing Video For Download...