Lewati ke konten utama

Pengantar Embedding Teks dengan OpenAI API

Jelajahi panduan kami tentang penggunaan OpenAI API untuk membuat embedding teks. Temukan penerapannya dalam klasifikasi teks, penelusuran informasi, dan deteksi kesamaan semantik.
Diperbarui 28 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Embedding teks adalah alat penting dalam bidang pemrosesan bahasa alami (NLP). Ini merupakan representasi numerik dari teks di mana setiap kata atau frasa direpresentasikan sebagai vektor padat berupa bilangan real.

Keunggulan utama embedding ini adalah kemampuannya menangkap makna semantik dan hubungan antar kata atau frasa, yang memungkinkan mesin memahami dan memproses bahasa manusia secara efisien.

Embedding teks sangat penting dalam skenario seperti klasifikasi teks, penelusuran informasi, dan deteksi kesamaan semantik.

OpenAI, yang dikenal atas kontribusinya yang luar biasa di bidang kecerdasan buatan, saat ini merekomendasikan penggunaan model Ada V2 untuk membuat embedding teks. Model ini diturunkan dari seri model GPT dan telah dilatih untuk menangkap makna kontekstual dan asosiasi dalam teks dengan lebih baik.

Jika Anda belum familiar dengan API OpenAI atau paket Python openai, disarankan untuk membaca Menggunakan GPT-3.5 dan GPT-4 melalui OpenAI API di Python sebelum melanjutkan. Panduan ini akan membantu Anda menyiapkan akun dan memahami manfaat penggunaan API.

Tutorial ini juga melibatkan penggunaan klasterisasi, sebuah teknik pembelajaran mesin untuk mengelompokkan instance yang serupa. Jika Anda belum familiar dengan klasterisasi, khususnya k-Means, pertimbangkan untuk membaca Pengenalan k-Means Clustering dengan scikit-learn di Python.

Untuk Apa Embedding Teks Dapat Digunakan?

Embedding teks dapat diterapkan pada banyak kasus penggunaan, antara lain:

  • Klasifikasi teks. Embedding teks membantu membuat model yang akurat untuk analisis sentimen atau identifikasi topik.
  • Penelusuran informasi. Dapat digunakan untuk mengambil informasi yang relevan dengan kueri tertentu, mirip seperti yang kita temukan di mesin telusur.
  • Deteksi kesamaan semantik. Embedding dapat mengidentifikasi dan mengukur kesamaan semantik antar potongan teks.
  • Sistem rekomendasi. Dapat meningkatkan kualitas rekomendasi dengan memahami preferensi pengguna berdasarkan interaksi mereka dengan data teks.
  • Generasi teks. Embedding digunakan untuk menghasilkan teks yang lebih koheren dan relevan secara kontekstual.
  • Penerjemahan mesin. Embedding teks dapat menangkap makna semantik lintas bahasa, yang dapat meningkatkan kualitas proses penerjemahan mesin.

Menyiapkan Lingkungan

Beberapa paket Python diperlukan untuk bekerja dengan embedding teks, seperti diuraikan di bawah ini:

  • os: Pustaka bawaan Python untuk berinteraksi dengan sistem operasi.
  • openai: klien Python untuk berinteraksi dengan OpenAI API.
  • scipy.spatial.distance: menyediakan fungsi untuk menghitung jarak antar titik data.
  • sklean.cluster.KMeans: digunakan untuk menghitung klasterisasi KMeans.
  • umap.UMAP: sebuah teknik untuk mereduksi dimensi data berdimensi tinggi.

Sebelum menggunakannya, pastikan untuk memasang openai, scipy, plotly sklearn, dan umap dengan perintah berikut. Kode lengkap tersedia di buku kerja DataLab ini.

pip install -U openai, scipy, plotly-express, scikit-learn, umap-learn

Setelah perintah sebelumnya dijalankan dengan sukses, semua pustaka dapat diimpor sebagai berikut:

import os
import openai
from scipy.spatial import distance
import plotly.express as px
from sklearn.cluster import KMeans
from umap import UMAP

Sekarang kita dapat menyiapkan kunci API OpenAI sebagai berikut:

openai.api_key = "<YOUR_API_KEY_HERE>"

Catatan: Anda perlu menyiapkan API KEY Anda sendiri. Kunci pada kode sumber tidak tersedia dan hanya untuk penggunaan individu.

Pola Kode untuk Memanggil GPT melalui API

Fungsi pembantu berikut dapat digunakan untuk melakukan embedding pada satu baris teks menggunakan OpenAI API. Dalam kode, kita menggunakan ada versi 2 untuk menghasilkan embedding.

def get_embedding(text_to_embed):
	# Embed a line of text
	response = openai.Embedding.create(
    	model= "text-embedding-ada-002",
    	input=[text_to_embed]
	)
	# Extract the AI output embedding as a list of floats
	embedding = response["data"][0]["embedding"]
    
	return embedding

Tentang Dataset

Pada bagian ini, kita akan menggunakan data ulasan alat musik Amazon yang tersedia gratis dari Kaggle. Data juga dapat diunduh dari akun Github saya sebagai berikut:

import pandas as pd

data_URL =  "https://raw.githubusercontent.com/keitazoumana/Experimentation-Data/main/Musical_instruments_reviews.csv"

review_df = pd.read_csv(data_URL)
review_df.head()

image4.gif

Dari semua kolom, kita hanya tertarik pada kolom reviewText.

review_df = review_df[['reviewText']]
print("Data shape: {}".format(review_df.shape))
display(review_df.head())
Data shape: (10261, 1)

Ada banyak ulasan dalam dataset. Untuk tujuan optimasi biaya, kita hanya akan menggunakan 100 baris yang dipilih secara acak.

image3.png

Sekarang, kita dapat menghasilkan embedding untuk setiap baris di seluruh dataset dengan menerapkan fungsi sebelumnya menggunakan ekspresi lambda:

review_df = review_df.sample(100)
review_df["embedding"] = review_df["reviewText"].astype(str).apply(get_embedding)

# Make the index start from 0
review_df.reset_index(drop=True)

review_df.head(10)

image2.png

10 baris pertama dari ulasan dan embedding

Memahami Kesamaan Teks

Untuk menunjukkan konsep kesamaan semantik, mari pertimbangkan dua ulasan yang mungkin memiliki sentimen serupa:

“Produk ini luar biasa!”

“Benar-benar melebihi ekspektasi saya!”

Menggunakan pdist() dari scipy.spatial.distance, kita dapat menghitung jarak euclidean antara embedding-nya.

Jarak Euclidean berkorelasi dengan akar kuadrat dari jumlah selisih kuadrat antara kedua embedding, dan ilustrasinya diberikan di bawah ini:

Ilustrasi jarak euclidean (sumber)

Ilustrasi jarak euclidean (sumber)

Jika ulasan-ulasan ini memang mirip, jaraknya seharusnya relatif kecil.

Selanjutnya, pertimbangkan dua ulasan yang berbeda:

“Produk ini luar biasa!"

"Saya tidak puas dengan barangnya."

Jarak antara embedding kedua ulasan ini akan jauh lebih besar dibanding jarak antara ulasan yang serupa.

Studi Kasus: Gunakan Embedding Teks untuk Analisis Klaster

Embedding teks yang telah kita hasilkan dapat digunakan untuk melakukan analisis klaster sehingga instrumen musik yang lebih mirip satu sama lain dapat dikelompokkan bersama.

Ada beberapa algoritma klasterisasi yang tersedia seperti K-Means, DBSCAN, klasterisasi hierarkis, dan Gaussian Mixture Models. Dalam kasus penggunaan ini, kita akan menggunakan klasterisasi KMeans. Namun, Pengenalan Klasterisasi Hierarkis di Python kami memberikan kerangka kerja yang baik untuk memahami seluk-beluk klasterisasi hierarkis dan penerapannya di Python.

Klasterisasi data teks

Menggunakan klasterisasi K-means memerlukan pendefinisian jumlah klaster terlebih dahulu, dan kita akan menetapkan jumlah tersebut menjadi 3 melalui parameter n_clusters sebagai berikut:

kmeans = KMeans(n_clusters=3)
kmeans.fit(review_df["embedding"].tolist())

Reduksi dimensi data teks ter-embedding

Manusia umumnya hanya mampu memvisualisasikan hingga tiga dimensi. Bagian ini akan menggunakan UMAP, alat yang relatif cepat dan skalabel untuk melakukan reduksi dimensi.

Pertama, kita mendefinisikan instance kelas UMAP dan menerapkan fungsi fit_transform pada embedding, yang menghasilkan representasi dua dimensi dari embedding ulasan yang dapat dipetakan.

reducer = UMAP()
embeddings_2d = reducer.fit_transform(review_df["embedding"].tolist())

Visualisasikan klaster

Terakhir, buat diagram sebar untuk embedding dua dimensi. Koordinat x dan y masing-masing diambil dari embeddings_2d[: , 0] dan embeddings_2d[: , 1]

Klaster akan tampak berbeda secara visual:

fig = px.scatter(x=embeddings_2d[:, 0], y=embeddings_2d[:, 1], color=kmeans.labels_)
fig.show()

Visualisasi klaster

Visualisasi klaster

Secara keseluruhan terdapat tiga klaster utama dengan warna berbeda. Warna setiap ulasan pada gambar ditentukan oleh label/nomor klaster yang ditetapkan oleh model K-Means. Selain itu, posisi tiap titik memberikan representasi visual tentang seberapa mirip suatu ulasan dengan yang lain.

Lanjut ke Tingkat Berikutnya

Untuk memperdalam pemahaman Anda tentang embedding teks dan OpenAI API, pertimbangkan materi dari DataCamp berikut: Fine-Tuning GPT-3 Menggunakan OpenAI API dan Python dan Cheat Sheet OpenAI API di Python. Materi ini membantu Anda memaksimalkan potensi GPT-3 melalui fine-tuning dan juga mengilustrasikan cara menggunakan OpenAI API dan Python untuk meningkatkan model jaringan saraf canggih ini sesuai kebutuhan spesifik Anda.


Zoumana Keita 's photo
Author
Zoumana Keita
LinkedIn
Twitter

Seorang data scientist serbabisa yang senang berbagi pengetahuan dan memberi dampak bagi orang lain, Zoumana adalah pembuat konten di YouTube dan penulis teknologi teratas di Medium. Ia menikmati berbicara di depan umum, ngoding, dan mengajar. Zoumana meraih dua gelar magister: yang pertama di bidang ilmu komputer dengan fokus Machine Learning di Paris, Prancis, dan yang kedua di bidang Data Science dari Texas Tech University di AS. Kariernya dimulai sebagai Pengembang Perangkat Lunak di Groupe OPEN, Prancis, lalu bergabung dengan IBM sebagai Konsultan Machine Learning, di mana ia mengembangkan solusi AI end-to-end untuk perusahaan asuransi. Zoumana kemudian bergabung dengan Axionable, startup AI Berkelanjutan pertama yang berbasis di Paris dan Montreal. Di sana, ia berperan sebagai Data Scientist dan mengimplementasikan produk AI, terutama use case NLP, untuk klien dari Prancis, Montreal, Singapura, dan Swiss. Selain itu, 5% dari waktunya didedikasikan untuk Riset dan Pengembangan. Saat ini, ia bekerja sebagai Senior Data Scientist di IFC - World Bank Group.

Topik
Kecerdasan Buatan
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat SelengkapnyaLihat Selengkapnya