การค้นหาเชิงความหมายและ enriched embeddings

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

Emmanuel Pire

Senior Software Engineer, DataCamp

การค้นหาเชิงความหมาย

  • ใช้ embeddings เพื่อคืนผลลัพธ์ที่ ใกล้เคียงที่สุด กับคำค้นหา
  • ตัวอย่าง: การค้นหาเชิงความหมายสำหรับเว็บไซต์ข่าวออนไลน์

วิธีที่การค้นหาเชิงความหมายทำงาน: ข้อความค้นหาถูก embed โดยโมเดล embedding จากนั้นคำนวณระยะห่างระหว่าง embedding ของข้อความค้นหากับ embedding ของพาดหัวข่าว แล้วคืนพาดหัวที่ใกล้ที่สุด

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

การค้นหาเชิงความหมาย

วิธีที่การค้นหาเชิงความหมายทำงาน: ข้อความค้นหาถูก embed โดยโมเดล embedding จากนั้นคำนวณระยะห่างระหว่าง embedding ของข้อความค้นหากับ embedding ของพาดหัวข่าว แล้วคืนพาดหัวที่ใกล้ที่สุด

  1. Embed คำค้นหาและข้อความอื่น ๆ
  2. คำนวณ cosine distances
  3. ดึง ข้อความที่มี cosine distance น้อยที่สุด
การสร้าง Embeddings ด้วย OpenAI API

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

การรวมฟีเจอร์ด้วย 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
การสร้าง Embeddings ด้วย OpenAI API

การสร้าง enriched embeddings

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

การคำนวณระยะห่าง

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

การคืนผลลัพธ์การค้นหา

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

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

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

Preparing Video For Download...