Apakah Pembenaman Vektor?
Fahami cara rangkaian neural memetakan teks kepada vektor padat dalam ruang berdimensi tinggi, sebab teks yang serupa dari segi makna menghasilkan vektor berdekatan, dan perkara yang diukur oleh kesamaan kosinus.
Apakah Pembenaman Vektor? ialah pelajaran AI Engineering Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AI Engineering Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.
Makna di Sebalik Nombor
Pembenaman vektor ialah senarai nombor (iaitu vektor) yang mewakili makna sebahagian teks. Daripada menyimpan perkataan sebagai rentetan mentah, rangkaian neural belajar mengekod makna semantik ke dalam tatasusunan berangka padat. Dua teks yang mempunyai makna serupa akan menghasilkan vektor yang berdekatan dalam ruang berdimensi tinggi ini.
Ruang Vektor Berdimensi Tinggi
Pembenaman moden biasanya mempunyai 768 hingga 3072 dimensi. Setiap dimensi menangkap sebahagian ciri terpendam makna — topik, sentimen, gaya dan hubungan — tanpa diprogramkan secara khusus. Hasilnya ialah ruang geometri yang kaya, tempat hubungan semantik boleh diukur melalui jarak.
Contohnya, text-embedding-3-small menghasilkan vektor berdimensi 1536, manakala text-embedding-3-large menghasilkan vektor berdimensi 3072.
Cara Rangkaian Neural Mempelajari Pembenaman
Model pembenaman dilatih menggunakan korpus teks yang sangat besar untuk meramalkan perkataan yang hilang (pemodelan bahasa bertopeng) atau membezakan pasangan yang serupa secara semantik daripada pasangan yang berbeza. Semasa latihan, rangkaian melaraskan berjuta-juta pemberat sehingga teks yang serupa secara semula jadi berkumpul dalam ruang vektor yang dipelajari.
Inilah sebabnya pembenaman dipanggil perwakilan padat — setiap dimensi membawa maklumat, tidak seperti pengekodan satu panas yang jarang, apabila kebanyakan nilainya ialah sifar.
Persamaan Kosinus: Mengukur Kedekatan
Persamaan kosinus mengukur sudut antara dua vektor dan mengembalikan nilai antara -1 hingga 1. Skor 1 bermaksud vektor menunjuk tepat ke arah yang sama (makna yang serupa), 0 bermaksud ortogon (tidak berkaitan), manakala -1 bermaksud menunjuk ke arah yang bertentangan.
Persamaan ini lebih sesuai berbanding jarak Euclid untuk teks kerana ia mengabaikan magnitud vektor dan hanya menumpukan arah, menjadikannya teguh terhadap perbezaan panjang teks.
import numpy as np
def cosine_similarity(vec_a, vec_b):
dot_product = np.dot(vec_a, vec_b)
norm_a = np.linalg.norm(vec_a)
norm_b = np.linalg.norm(vec_b)
return dot_product / (norm_a * norm_b)
# Example with tiny 3D vectors
v1 = np.array([0.8, 0.2, 0.5])
v2 = np.array([0.9, 0.1, 0.4])
print(cosine_similarity(v1, v2)) # Close to 1.0Mengapa Persamaan Semantik Penting
Carian kata kunci tradisional gagal apabila pengguna membuat parafrasa: carian untuk automobile tidak menemui dokumen tentang cars. Pembenaman vektor menyelesaikan masalah ini kerana teks yang setara secara semantik dipetakan kepada vektor yang berdekatan tanpa mengira perkataan tepat yang digunakan.
Hal ini membolehkan carian semantik, iaitu mencari hasil yang paling relevan berdasarkan makna dan bukannya pertindihan perkataan — keupayaan asas yang diperlukan oleh sistem RAG.
Visualisasi Vektor Pembenaman
Bayangkan anda memplot ayat pada peta 2D (sebagai analogi yang dipermudah). Ayat tentang pembelajaran mesin berkumpul di satu kawasan, ayat tentang memasak berkumpul di kawasan lain, manakala ayat tentang sukan membentuk kelompok ketiga. Pembenaman vektor menghasilkan peta ini dalam ribuan dimensi.
Hubungan terkenal seperti king - man + woman ≈ queen ialah pengiraan aritmetik sebenar dalam ruang ini — operasi vektor mengekod analogi semantik.
Menjana Pembenaman Mudah
API pembenaman OpenAI menerima teks dan mengembalikan senarai nombor titik apung. Satu panggilan API boleh membenamkan satu ayat atau keseluruhan perenggan. Vektor yang dikembalikan mempunyai dimensi tetap tanpa mengira panjang input.
Penting: input yang lebih panjang tidak menghasilkan vektor yang lebih besar — input tersebut masih menghasilkan vektor bersaiz tetap yang sama, tetapi teks yang sangat panjang mungkin kehilangan perincian halus kerana model memampatkan semuanya ke dalam ruang tetap itu.
from openai import OpenAI
client = OpenAI() # uses OPENAI_API_KEY from environment
response = client.embeddings.create(
model='text-embedding-3-small',
input='Vector embeddings capture semantic meaning.'
)
embedding = response.data[0].embedding
print(f'Dimensions: {len(embedding)}') # 1536
print(f'First 5 values: {embedding[:5]}')Membenamkan Berbilang Teks Sekali Gus
Anda boleh membenamkan berbilang rentetan dalam satu panggilan API dengan menghantar senarai kepada parameter input. Cara ini jauh lebih cekap berbanding membuat satu permintaan bagi setiap teks kerana ia mengurangkan perjalanan pergi balik rangkaian dan membolehkan API mengumpulkan pengiraan secara kelompok.
Respons mengandungi satu objek pembenaman bagi setiap input, dalam susunan yang sama, jadi anda boleh memadankannya dengan teks asal menggunakan zip.
from openai import OpenAI
client = OpenAI()
texts = [
'Python is a programming language.',
'Snakes are reptiles.',
'Machine learning requires data.'
]
response = client.embeddings.create(
model='text-embedding-3-small',
input=texts
)
for text, result in zip(texts, response.data):
print(f'{text[:30]}... -> {len(result.embedding)}D vector')Hasil Darab Titik berbanding Persamaan Kosinus
Jika pembenaman anda dinormalisasikan L2 (vektor unit dengan magnitud 1), hasil darab titik adalah sama dengan persamaan kosinus. Model pembenaman OpenAI mengembalikan vektor yang telah dinormalisasikan, jadi anda boleh menggunakan mana-mana metrik — hasil darab titik sedikit lebih pantas untuk dikira.
Walau bagaimanapun, apabila menggabungkan pembenaman daripada model atau sumber yang berbeza dan mungkin tidak dinormalisasikan, sentiasa kira persamaan kosinus secara jelas untuk mengelakkan hasil yang mengelirukan.
import numpy as np
def normalize(vec):
return vec / np.linalg.norm(vec)
v1 = normalize(np.array([3.0, 4.0, 0.0]))
v2 = normalize(np.array([4.0, 3.0, 0.0]))
# For unit vectors: dot product == cosine similarity
dot = np.dot(v1, v2)
print(f'Dot product: {dot:.4f}') # same as cosine simPembenaman berbanding Pengekodan Satu Panas
Pengekodan satu panas mewakili setiap perkataan sebagai vektor yang mengandungi tepat satu nilai 1 dan semua nilai lain 0. Perbendaharaan kata yang mengandungi 50,000 perkataan menghasilkan vektor berdimensi 50,000 yang hampir keseluruhannya terdiri daripada sifar — sangat tidak cekap.
Pembenaman padat menggunakan 768 hingga 3072 dimensi, tetapi setiap dimensi membawa maklumat sebenar. Ruang ini 10 hingga 20 kali lebih kecil, namun menangkap lebih banyak nuansa, termasuk sinonim, analogi dan makna gubahan yang langsung tidak dapat ditangkap oleh pengekodan satu panas.
Kes Penggunaan Biasa Pembenaman
Selain carian semantik, pembenaman menggerakkan banyak aplikasi praktikal:
- Carian semantik — mencari dokumen berdasarkan makna, bukan kata kunci
- Sistem pengesyoran — mencadangkan item yang serupa dengan item yang disukai pengguna
- Pengelompokan — mengumpulkan dokumen mengikut topik secara automatik
- Pengelasan — memberikan pembenaman kepada pengelas linear
- Penyingkiran pendua — mengesan kandungan yang hampir pendua
Semua sistem RAG bergantung pada pembenaman untuk memadankan pertanyaan pengguna dengan cebisan dokumen yang relevan.
Semakan Pantas
Uji pemahaman anda tentang konsep Kejuruteraan AI daripada pelajaran ini.
Imbas Kembali Pelajaran
Dalam pelajaran ini, anda telah mempelajari bahawa: pembenaman vektor mengekod makna semantik sebagai tatasusunan berangka padat, persamaan kosinus mengukur kedekatan semantik dengan membandingkan arah vektor, dan API pembenaman OpenAI menukar teks kepada vektor bersaiz tetap dalam satu panggilan. Seterusnya, kita akan meneroka cara menjana dan membandingkan pembenaman menggunakan model OpenAI secara praktikal.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Apakah Pembenaman Vektor?” percuma?
Ya — teks penuh “Apakah Pembenaman Vektor?” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus AI Engineering Academy, tingkat taraf kepada CoddyKit PRO. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Apakah Pembenaman Vektor?”?
Fahami cara rangkaian neural memetakan teks kepada vektor padat dalam ruang berdimensi tinggi, sebab teks yang serupa dari segi makna menghasilkan vektor berdekatan, dan perkara yang diukur oleh kesa… Anda berlatih AI Engineering Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AI Engineering Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AI Engineering Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Apakah Pembenaman Vektor?” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AI Engineering Academy ini?
Ya. Setiap pelajaran AI Engineering Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Apakah Pembenaman Vektor?
- Menjana Pembenaman dengan OpenAI
- Carian Semantik dengan NumPy
- Mengelompokkan dan Memvisualisasikan Pembenaman