Menyelidiki ruang vektor

Pengantar Embeddings dengan OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Contoh: Embedding judul berita

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"}
]
Pengantar Embeddings dengan OpenAI API

Contoh: Embedding judul berita

Daftar kamus yang berisi judul dan embedding-nya.

Pengantar Embeddings dengan OpenAI API

Embedding banyak input

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 lebih efisien daripada banyak panggilan API
Pengantar Embeddings dengan OpenAI API
[...]

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

[...]
Pengantar Embeddings dengan OpenAI API

Embedding banyak input

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]}]
Pengantar Embeddings dengan OpenAI API

Seberapa panjang vektor embedding?

  • "Pertumbuhan Ekonomi Berlanjut di Tengah Ketidakpastian Global"
len(articles[0]['embedding'])
1536
  • "Perusahaan Teknologi Luncurkan Produk Inovatif untuk Meningkatkan Aksesibilitas"
len(articles[5]['embedding'])
1536
  • Selalu mengembalikan 1536 angka!
Pengantar Embeddings dengan OpenAI API

Reduksi dimensi dan t-SNE

 

  • Beragam teknik untuk mengurangi jumlah dimensi
  • t-SNE (t-distributed Stochastic Neighbor Embedding)
1 https://www.datacamp.com/tutorial/introduction-t-sne
Pengantar Embeddings dengan OpenAI API

Mengimplementasikan t-SNE

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: jumlah dimensi hasil
  • perplexity: parameter algoritme, harus kurang dari jumlah data
  • Akan menyebabkan kehilangan informasi
1 https://www.datacamp.com/tutorial/introduction-t-sne
Pengantar Embeddings dengan OpenAI API

Memvisualisasikan embedding

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()
Pengantar Embeddings dengan OpenAI API

Memvisualisasikan embedding

 

  • Artikel yang mirip dikelompokkan bersama!
  • Model menangkap makna semantik

 

  • Berikutnya: Menghitung kemiripan

 

Plot ruang vektor 2D yang menunjukkan ulasan dengan sentimen dan topik yang sama dipetakan lebih berdekatan di ruang vektor.

Pengantar Embeddings dengan OpenAI API

Ayo berlatih!

Pengantar Embeddings dengan OpenAI API

Preparing Video For Download...