Öneri sistemleri

OpenAI API ile Embeddings’e Giriş

Emmanuel Pire

Senior Software Engineer, DataCamp

Gömme ile öneri sistemleri

 

  • Anlamsal aramaya çok benzer!

 

Süreç:

  1. Olası önerileri ve veri noktasını gömün

Vektör uzayında bir mavi veri noktası ve birkaç kırmızı veri noktası.

OpenAI API ile Embeddings’e Giriş

Gömme ile öneri sistemleri

 

  • Anlamsal aramaya çok benzer!

 

Süreç:

  1. Olası önerileri ve veri noktasını gömün
  2. Kosinüs uzaklıklarını hesaplayın

Vektör uzayında bir mavi veri noktası ve birkaç kırmızı veri noktası. Her kırmızı nokta ile mavi nokta arasında kosinüs uzaklığını gösteren bir çizgi var.

OpenAI API ile Embeddings’e Giriş

Gömme ile öneri sistemleri

 

  • Anlamsal aramaya çok benzer!

 

Süreç:

  1. Olası önerileri ve veri noktasını gömün
  2. Kosinüs uzaklıklarını hesaplayın
  3. En yakın öğeleri önerin

En yakın üç kırmızı nokta vurgulandı.

OpenAI API ile Embeddings’e Giriş

Örnek: Önerilen makaleler

articles = [
    {"headline": "Economic Growth Continues Amid Global Uncertainty",
     "topic": "Business",
     "keywords": ["economy", "business", "finance"]},
    ...
    {"headline": "1.5 Billion Tune-in to the World Cup Final",
     "topic": "Sport",
     "keywords": ["soccer", "world cup", "tv"]}
]

current_article = {"headline": "How NVIDIA GPUs Could Decide Who Wins the AI Race", "topic": "Tech", "keywords": ["ai", "business", "computers"]}
OpenAI API ile Embeddings’e Giriş

Özellikleri birleştirme

def create_article_text(article):
  return f"""Headline: {article['headline']}
Topic: {article['topic']}
Keywords: {', '.join(article['keywords'])}"""
article_texts = [create_article_text(article) for article in articles]
current_article_text = create_article_text(current_article)
print(current_article_text)
Headline: How NVIDIA GPUs Could Decide Who Wins the AI Race
Topic: Tech
Keywords: ai, business, computers
OpenAI API ile Embeddings’e Giriş

Gömme oluşturma

def create_embeddings(texts):
  response = openai.Embedding.create(
    model="text-embedding-3-small",
    input=texts
  )
  response_dict = response.model_dump()

  return [data['embedding'] for data in response_dict['data']]
current_article_embeddings = create_embeddings(current_article_text)[0]
article_embeddings = create_embeddings(article_texts)
OpenAI API ile Embeddings’e Giriş

En benzer makaleyi bulma

def find_n_closest(query_vector, embeddings, n=3):
  distances = []
  for index, embedding in enumerate(embeddings):
    dist = spatial.distance.cosine(query_vector, embedding)
    distances.append({"distance": dist, "index": index})
  distances_sorted = sorted(distances, key=lambda x: x["distance"])
  return distances_sorted[0:n]
hits = find_n_closest(current_article_embeddings, article_embeddings)

for hit in hits: article = articles[hit['index']] print(article['headline'])
OpenAI API ile Embeddings’e Giriş

En benzer makaleyi bulma

Tech Giant Buys 49% Stake In AI Startup
Tech Company Launches Innovative Product to Improve Online Accessibility
Scientists Make Breakthrough Discovery in Renewable Energy
OpenAI API ile Embeddings’e Giriş

Kullanıcı geçmişi ekleme

user_history = [
    {"headline": "How NVIDIA GPUs Could Decide Who Wins the AI Race",
     "topic": "Tech",
     "keywords": ["ai", "business", "computers"]},
    {"headline": "Tech Giant Buys 49% Stake In AI Startup",
     "topic": "Tech",
     "keywords": ["business", "AI"]}
]
OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

Gömülmüş makaleleri gösteren bir grafik; kullanıcının geçmişindekiler mavi, görmedikleri kırmızı.

OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

 

Süreç:

  • Birden çok vektörü ortalama alarak tek vektörde birleştirin
  • Kosinüs uzaklıklarını hesaplayın

İki vektörün ortalamasından hesaplanan bir nokta iki noktanın arasına eklendi.

OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

 

Süreç:

  • Birden çok vektörü ortalama alarak tek vektörde birleştirin
  • Kosinüs uzaklıklarını hesaplayın
  • En yakın vektörü önerin

Öneri için en yakın kırmızı nokta vurgulandı.

OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

 

Süreç:

  • Birden çok vektörü ortalama alarak tek vektörde birleştirin
  • Kosinüs uzaklıklarını hesaplayın
  • En yakın vektörü önerin

Kullanıcının zaten okuduğu makalelerin hariç tutulması gerektiğini vurgulamak için en yakın nokta maviye boyandı.

OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

 

Süreç:

  • Birden çok vektörü ortalama alarak tek vektörde birleştirin
  • Kosinüs uzaklıklarını hesaplayın
  • En yakın vektörü önerin
    • Okunmamış olduğundan emin olun

Bu kez daha uzaktaki en yakın kırmızı nokta vurgulandı.

OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

def create_article_text(article):
  return f"""Headline: {article['headline']}
Topic: {article['topic']}
Keywords: {', '.join(article['keywords'])}"""

history_texts = [create_article_text(article) for article in user_history]
history_embeddings = create_embeddings(history_texts)

mean_history_embeddings = np.mean(history_embeddings, axis=0)
articles_filtered = [article for article in articles if article not in user_history]
article_texts = [create_article_text(article) for article in articles_filtered] article_embeddings = create_embeddings(article_texts)
OpenAI API ile Embeddings’e Giriş

Birden çok veri noktasında öneriler

hits = find_n_closest(mean_history_embeddings, article_embeddings)

for hit in hits: article = articles_filtered[hit['index']] print(article['headline'])
Tech Company Launches Innovative Product to Improve Online Accessibility
New Social Media Platform Has Everyone Talking!
Scientists Make Breakthrough Discovery in Renewable Energy
OpenAI API ile Embeddings’e Giriş

Vamos praticar!

OpenAI API ile Embeddings’e Giriş

Preparing Video For Download...