Căutare semantică și embeddings îmbogățite

Introducere în Embeddings cu API-ul OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Căutare semantică

  • Utilizați embeddings pentru a returna rezultatele cele mai similare cu o interogare
  • Exemplu: Căutare semantică pentru un site de știri online

Cum funcționează căutarea semantică: textul de căutare este transformat în embedding de modelul de embedding, apoi se calculează distanța dintre embedding-ul textului de căutare și embedding-urile titlurilor. Titlul cel mai apropiat este returnat.

Introducere în Embeddings cu API-ul OpenAI

Căutare semantică

Cum funcționează căutarea semantică: textul de căutare este transformat în embedding de modelul de embedding, apoi se calculează distanța dintre embedding-ul textului de căutare și embedding-urile titlurilor. Titlul cel mai apropiat este returnat.

  1. Transformați interogarea și textele în embeddings
  2. Calculați distanțele cosinus
  3. Extrageți textele cu distanța cosinus minimă
Introducere în Embeddings cu API-ul OpenAI

Embeddings îmbogățite

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
Introducere în Embeddings cu API-ul OpenAI

Combinarea caracteristicilor cu F-strings

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
Introducere în Embeddings cu API-ul OpenAI

Crearea de embeddings îmbogățite

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]]
Introducere în Embeddings cu API-ul OpenAI

Calcularea distanțelor

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]
Introducere în Embeddings cu API-ul OpenAI

Returnarea rezultatelor căutării

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
Introducere în Embeddings cu API-ul OpenAI

Să exersăm!

Introducere în Embeddings cu API-ul OpenAI

Preparing Video For Download...