Model Embedding Teks

Model embedding teks digunakan secara utama untuk menghitung representasi vektor dari teks. Di sini, istilah "vektor" mengacu pada vektor matematika, juga dikenal sebagai vektor fitur. Sebagai seorang pengembang, yang perlu kamu ketahui adalah bahwa model embedding teks dapat menghitung vektor fitur dari sebuah teks, dan kemudian dengan menggunakan perhitungan kesamaan vektor, model ini dapat mengidentifikasi konten teks dengan fitur yang serupa.

Tips: Untuk pengetahuan dasar tentang model embedding teks, silakan lihat Panduan Pendahuluan tentang Model Embedding Teks

Perbedaan Antara Pencarian Vektor dan Pencarian Berbasis Kata Kunci

  • Pencarian vektor didasarkan pada kesamaan semantik dari vektor kata. Ini dapat menemukan hasil yang secara semantik terkait dengan kueri, bahkan jika kata kueri dan kata-kata dalam hasil tidak cocok secara persis. Pencarian vektor memetakan kata-kata ke ruang vektor berdimensi tinggi dan menghitung kesamaan antara vektor-vektor tersebut. Ini berarti bahwa meskipun kata-kata itu sendiri tidak cocok, selama mereka secara semantik serupa, hasil terkait dapat ditemukan.
  • Di sisi lain, pencarian berbasis kata kunci adalah proses pencocokan string yang sederhana. Ia hanya mengembalikan hasil yang mengandung kata kunci kueri yang cocok secara persis. Jika sebuah dokumen menggunakan kata-kata yang berbeda, meskipun secara semantik serupa, mereka tidak akan cocok.

Kelas Embeddings adalah jenis kelas yang dirancang khusus untuk berinteraksi dengan model embedding teks. Ada banyak penyedia model embedding (seperti OpenAI, Cohere, Hugging Face, dll.), dan desain dari kelas ini adalah untuk menyediakan antarmuka standar untuk semua penyedia.

Kelas Embeddings menciptakan representasi vektor dari teks. Dengan pencarian vektor, pencarian semantik dapat dilakukan, misalnya, mencari potongan teks yang paling mirip dalam ruang vektor.

Kelas Embeddings dasar dalam LangChain mengekspos dua metode: satu untuk membuat vektor dokumen dan yang lain untuk membuat vektor kueri. Metode pertama mengambil beberapa teks sebagai input, sementara yang terakhir mengambil satu teks sebagai input. Alasannya mereka diperlakukan sebagai dua metode yang berbeda adalah bahwa beberapa penyedia embedding memiliki metode embedding yang berbeda untuk dokumen yang akan dicari dan kueri (kueri pencarian itu sendiri).

Memulai dengan Cepat

Berikut adalah contoh penggunaan model embedding OpenAI:

Konfigurasi

Pertama, kita perlu menginstal paket Python OpenAI. Karena LangChain memiliki banyak implementasi model embedding teks yang berbeda, para pengembang perlu menginstal dependensi model yang berbeda sesuai dengan pilihannya:

pip install langchain-openai

Atur kunci OpenAI melalui variabel lingkungan:

export OPENAI_API_KEY="..."

Jika kamu tidak ingin mengatur variabel lingkungan, kamu bisa langsung melewati parameter bernama openai_api_key saat menginisialisasi kelas OpenAI LLM untuk melewatkan kunci tersebut:

from langchain_openai import OpenAIEmbeddings

model_embedding = OpenAIEmbeddings(openai_api_key="...")

Atau, kamu bisa menginisialisasi tanpa parameter apa pun:

from langchain_openai import OpenAIEmbeddings

model_embedding = OpenAIEmbeddings()

embed_documents

Hitung fitur vektor dari sejumlah teks:

embedding = model_embedding.embed_documents(
    [
        "Hai!",
        "Oh, halo!",
        "Siapa namamu?",
        "Teman-temanku memanggilku Dunia",
        "Halo Dunia!"
    ]
)
len(embedding), len(embedding[0])
(5, 1536)

embed_query

Fungsi ini menghitung fitur vektor dari teks kueri. Biasanya, ini melibatkan mengonversi pertanyaan yang akan dicari ke dalam vektor fitur, dan kemudian menggunakan vektor ini untuk mencari teks yang serupa dalam basis data vektor.

kueri_tersemat = model_embedding.embed_query("Apa nama yang disebutkan dalam percakapan?")
kueri_tersemat[:5]
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]