De vectorruimte onderzoeken

Introductie tot Embeddings met de OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Voorbeeld: koppen embedden

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"}
]
Introductie tot Embeddings met de OpenAI API

Voorbeeld: koppen embedden

Een lijst met dictionaries met de koppen en hun embeddings.

Introductie tot Embeddings met de OpenAI API

Meerdere inputs embedden

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 is efficiënter dan meerdere API-calls gebruiken
Introductie tot Embeddings met de OpenAI API
[...]

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

[...]
Introductie tot Embeddings met de OpenAI API

Meerdere inputs embedden

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]}]
Introductie tot Embeddings met de OpenAI API

Hoe lang is de embeddingsvector?

  • "Economic Growth Continues Amid Global Uncertainty"
len(articles[0]['embedding'])
1536
  • "Tech Company Launches Innovative Product to Improve Accessibility"
len(articles[5]['embedding'])
1536
  • Geeft altijd 1536 getallen terug!
Introductie tot Embeddings met de OpenAI API

Dimensiereductie en t-SNE

 

  • Diverse technieken om het aantal dimensies te reduceren
  • t-SNE (t-distributed Stochastic Neighbor Embedding)
1 https://www.datacamp.com/tutorial/introduction-t-sne
Introductie tot Embeddings met de OpenAI API

t-SNE implementeren

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: het resulterende aantal dimensies
  • perplexity: gebruikt door het algoritme, moet lager zijn dan het aantal datapunten
  • Leidt tot informatieverlies
1 https://www.datacamp.com/tutorial/introduction-t-sne
Introductie tot Embeddings met de OpenAI API

Embeddings visualiseren

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()
Introductie tot Embeddings met de OpenAI API

Embeddings visualiseren

 

  • Vergelijkbare artikelen clusteren samen!
  • Model pakt de semantische betekenis

 

  • Straks: gelijkenis berekenen

 

Een plot van de 2D-vectorruimte die laat zien dat reviews met hetzelfde sentiment en onderwerp dichter bij elkaar liggen in de vectorruimte.

Introductie tot Embeddings met de OpenAI API

Laten we oefenen!

Introductie tot Embeddings met de OpenAI API

Preparing Video For Download...