Semantische Suche und angereicherte Embeddings

Einführung in Embeddings mit der OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Semantische Suche

  • Nutze Embeddings, um die ähnlichsten Treffer zu einer Suchanfrage zurückzugeben
  • Beispiel: Semantische Suche für eine Online‑News‑Website

So funktioniert semantische Suche: Der Suchtext wird vom Embedding‑Modell eingebettet, dann wird der Abstand zwischen dem eingebetteten Suchtext und den eingebetteten Überschriften berechnet. Die nächstgelegene Überschrift wird zurückgegeben.

Einführung in Embeddings mit der OpenAI API

Semantische Suche

So funktioniert semantische Suche: Der Suchtext wird vom Embedding‑Modell eingebettet, dann wird der Abstand zwischen dem eingebetteten Suchtext und den eingebetteten Überschriften berechnet. Die nächstgelegene Überschrift wird zurückgegeben.

  1. Embedd die Suchanfrage und andere Texte
  2. Berechne die Kosinusabstände
  3. Ziehe die Texte mit dem kleinsten Kosinusabstand
Einführung in Embeddings mit der OpenAI API

Angereicherte Embeddings

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"]}
]
Headline: Economic Growth Continues Amid Global Uncertainty
Topic: Business
Keywords: economy, business, finance
Einführung in Embeddings mit der OpenAI API

Features mit F‑Strings kombinieren

articles = [..., {"headline": "1.5 Billion Tune-in to the World Cup ",
                  "topic": "Sport",
                  "keywords": ["soccer", "world cup", "tv"]}]


def create_article_text(article):
return f"""Headline: {article['headline']} Topic: {article['topic']} Keywords: {', '.join(article['keywords'])}"""
print(create_article_text(articles[-1]))
Headline: 1.5 Billion Tune-in to the World Cup Final
Topic: Sport
Keywords: soccer, world cup, tv
Einführung in Embeddings mit der OpenAI API

Angereicherte Embeddings erstellen

article_texts = [create_article_text(article) for article in articles]

article_embeddings = create_embeddings(article_texts)
print(article_embeddings)
[[-0.019609929993748665, -0.03331860154867172, ...],
 ...,
 [..., -0.014373429119586945, -0.005235843360424042]]
Einführung in Embeddings mit der OpenAI API

Abstände berechnen

from scipy.spatial import distance

def find_n_closest(query_vector, embeddings, n=3):

distances = [] for index, embedding in enumerate(embeddings): dist = 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]
Einführung in Embeddings mit der OpenAI API

Suchergebnisse zurückgeben

query_text = "AI"

query_vector = create_embeddings(query_text)[0]
hits = find_n_closest(query_vector, article_embeddings)
for hit in hits: article = articles[hit['index']] print(article['headline'])
Tech Giant Buys 49% Stake In AI Startup
Tech Company Launches Innovative Product to Improve Online Accessibility
India Successfully Lands Near Moon's South Pole
Einführung in Embeddings mit der OpenAI API

Lass uns üben!

Einführung in Embeddings mit der OpenAI API

Preparing Video For Download...