สำรวจ vector space

การสร้าง Embeddings ด้วย OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

ตัวอย่าง: การ embed หัวข้อข่าว

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"}
]
การสร้าง Embeddings ด้วย OpenAI API

ตัวอย่าง: การ embed หัวข้อข่าว

รายการ dictionary ที่มีหัวข้อข่าวและ embedding ของแต่ละบทความ

การสร้าง Embeddings ด้วย OpenAI API

การ embed ข้อมูลหลายรายการพร้อมกัน

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 มีประสิทธิภาพมากกว่าการเรียก API หลายครั้ง
การสร้าง Embeddings ด้วย OpenAI API
[...]

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

[...]
การสร้าง Embeddings ด้วย OpenAI API

การ embed ข้อมูลหลายรายการพร้อมกัน

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]}]
การสร้าง Embeddings ด้วย OpenAI API

embedding vector มีความยาวเท่าไร?

  • "Economic Growth Continues Amid Global Uncertainty"
len(articles[0]['embedding'])
1536
  • "Tech Company Launches Innovative Product to Improve Accessibility"
len(articles[5]['embedding'])
1536
  • ผลลัพธ์คือ 1536 ตัวเลขเสมอ!
การสร้าง Embeddings ด้วย OpenAI API

การลดมิติข้อมูลและ t-SNE

 

  • มีหลายเทคนิคสำหรับการ _ลด_ จำนวนมิติ
  • t-SNE (t-distributed Stochastic Neighbor Embedding)
1 https://www.datacamp.com/tutorial/introduction-t-sne
การสร้าง Embeddings ด้วย OpenAI API

การนำ 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: จำนวนมิติของผลลัพธ์
  • perplexity: พารามิเตอร์ของอัลกอริทึม ต้องมีค่า น้อยกว่าจำนวนข้อมูล
  • จะเกิด การสูญเสียข้อมูล
1 https://www.datacamp.com/tutorial/introduction-t-sne
การสร้าง Embeddings ด้วย OpenAI API

การแสดงผล 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()
การสร้าง Embeddings ด้วย OpenAI API

การแสดงผล embedding

 

  • บทความที่ คล้ายกัน จะถูกจัดกลุ่มไว้ด้วยกัน!
  • โมเดลเข้าใจความหมาย เชิงความหมาย (semantic) ของข้อความ

 

  • ถัดไป: การคำนวณความคล้ายคลึง

 

กราฟ vector space 2 มิติ แสดงให้เห็นว่าบทความที่มีหัวข้อเดียวกันถูกจัดวางใกล้กันใน vector space

การสร้าง Embeddings ด้วย OpenAI API

มาฝึกกันเถอะ!

การสร้าง Embeddings ด้วย OpenAI API

Preparing Video For Download...