Materi
Embedding adalah vektor bilangan yang mewakili makna teks. Panduan Embeddings OpenAI menyatakan jarak dua vektor mengukur keterkaitan teksnya: makin dekat, makin terkait. Pertanyaan dan setiap potongan dijadikan vektor dengan model embedding yang sama, lalu dibandingkan. Latihan kelas ini memakai vektor kecil karangan; model embedding sungguhan menghasilkan ratusan sampai ribuan dimensi.
Ukuran yang direkomendasikan panduan itu adalah kemiripan kosinus: hasil kali titik dua vektor dibagi hasil kali panjangnya, cos = (a · b) ÷ (|a| × |b|). Nilainya 1 bila arahnya sama dan 0 bila tegak lurus. Di numpy, hasil kali titik dihitung np.dot dan panjang vektor np.linalg.norm. Bila embedding sudah dinormalisasi ke panjang 1, panduan yang sama mencatat kosinus cukup dihitung dengan hasil kali titik, dan urutannya sama dengan urutan jarak Euclides.
import numpy as np
a = np.array([3.0, 4.0])
b = np.array([4.0, 3.0])
print(np.dot(a, b)) # 24.0
print(np.linalg.norm(a), np.linalg.norm(b)) # 5.0 5.0
print(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))) # 0.96Pencarian lalu mengambil k potongan berskor tertinggi (top-k). Ambang skor membuang potongan yang terlalu jauh; panduan Retrieval OpenAI mencatat ambang yang tinggi membatasi hasil ke potongan yang lebih relevan, tetapi bisa ikut membuang potongan yang berguna. Dokumentasi Python menyatakan sorted tetap stabil walaupun reverse=True, jadi potongan berskor sama tetap dalam urutan aslinya. Kosinus pada vektor TF-IDF dibahas di kelas Mengolah Teks dengan Python.