Metin Gömme Modelleri
Metin gömme modelleri öncelikle metnin vektör temsilini hesaplamak için kullanılır. Burada "vektör" terimi, aynı zamanda özellik vektörü olarak da bilinen matematiksel bir vektöre atıfta bulunur. Bir yazılım geliştirici olarak bilmeniz gereken şey, bir metin gömme modelinin bir metnin özellik vektörünü hesaplayabildiği ve ardından vektör benzerlik hesaplamalarını kullanarak benzer özelliklere sahip metin içeriğini belirleyebildiğidir.
İpucu: Metin gömme modelleri hakkında temel bilgi için Metin Gömme Modelleri Giriş Eğitimine başvurun.
Vektör Araması ile Anahtar Kelimeye Dayalı Arama Arasındaki Fark
- Vektör araması, kelime vektörlerinin anlamsal benzerliğine dayanır. Sorgu kelimeleri ve sonuçlardaki kelimeler tam olarak eşleşmese bile anlamsal olarak ilişkili sonuçları bulabilir. Vektör araması, kelimeleri yüksek boyutlu bir vektör uzayına haritalar ve vektörler arasındaki benzerliği hesaplar. Bu, kelimeler kendileri eşleşmese bile, anlamsal olarak benzer oldukları sürece ilgili sonuçlar bulunabilir.
- Öte yandan, anahtar kelimeye dayalı arama basit bir dize eşleme işlemine dayanır. Yalnızca tam olarak eşleşen sorgu kelimelerini içeren sonuçları döndürür. Bir belge farklı kelimeler kullansa bile, anlamsal olarak benzer olsalar bile eşleşmezler.
Gömme sınıfı, metin gömme modelleriyle etkileşim için özel olarak tasarlanmış bir sınıf türüdür. Birçok gömme modeli sağlayıcısı bulunmakla birlikte (OpenAI, Cohere, Hugging Face vb.), bu sınıfın tasarımı tüm sağlayıcılar için standart bir arayüz sağlamaktadır.
Gömme sınıfı metnin vektör temsilini yaratır. Vektör araması ile, örneğin vektör uzayındaki en benzer metin parçalarını aramak gibi anlamsal aramalar yapılabilir.
LangChain'deki temel Gömme sınıfı, belgelerin gömülmesi ve sorguların gömülmesi için birbirinden farklı iki yöntem sunar. İlk yöntem birden fazla metni girdi olarak alırken, ikincisi tek bir metni girdi olarak alır. Bu iki farklı yöntem olarak ele alınmalarının nedeni, bazı gömme sağlayıcılarının aranacak belgeler ve sorgular (arama sorguları kendileri) için farklı gömme yöntemlerine sahip olmalarıdır.
Hızlı Başlangıç
Aşağıda, OpenAI'nin gömme modelini kullanan bir örnek bulunmaktadır:
Yapılandırma
İlk olarak, OpenAI Python paketini kurmamız gerekiyor. LangChain'de birçok farklı metin gömme modeli uygulaması bulunduğundan, geliştiriciler tercihlerine göre farklı model bağımlılıklarını kurmalıdır:
pip install langchain-openai
Çevre değişkenleri aracılığıyla OpenAI anahtarını yapılandırın:
export OPENAI_API_KEY="..."
Eğer çevre değişkenleri belirtmek istemiyorsanız, anahtarı geçmek için OpenAI LLM sınıfını başlatırken openai_api_key
adlı parametreyi doğrudan iletebilirsiniz:
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings(openai_api_key="...")
Aksi takdirde, herhangi bir parametre olmadan başlatabilirsiniz:
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
belgeleri_göm
Metin yığınının vektör özelliklerini hesaplayın:
gömülü_metinler = embeddings_model.belgeleri_göm(
[
"Merhaba!",
"Oh, merhaba!",
"Adın ne?",
"Arkadaşlarım bana Dünya der",
"Merhaba Dünya!"
]
)
len(gömülü_metinler), len(gömülü_metinler[0])
(5, 1536)
sorguyu_göm
Bu işlev, bir sorgu metnin vektör özelliğini hesaplar. Genellikle, aranacak soruyu bir özellik vektörü haline getirmeyi içerir ve daha sonra bu vektörü kullanarak vektör veritabanında benzer metinleri sorgulamak için kullanılır.
gömülü_sorgu = embeddings_model.sorguyu_göm("Sohbetin içinde adı geçen nedir?")
gömülü_sorgu[:5]
[0.0053587136790156364,
-0.0004999046213924885,
0.038883671164512634,
-0.003001077566295862,
-0.00900818221271038]