Text embeddings
Text embeddings
Bu modül için tahmini süre: 4 dakika
Genel bakış
Belgeyi chunk’lara böldükten sonra RAG pipeline’ının bir sonraki adımı, kullanıcı sorusuna en alakalı chunk’ları bulmaktır. Bu bir search problemidir. Bu derste semantic search’ün temeli olan text embedding’leri tanıyacak, VoyageAI ile nasıl embedding üretileceğini göreceksin.
Bir belgeyi chunk’lara böldükten sonra, RAG pipeline’ındaki bir sonraki adım kullanıcının sorusuna hangi chunk’ların en alakalı olduğunu bulmaktır. Bu aslında bir search problemidir — tüm text chunk’larında arama yapmalı ve kullanıcının sorduğuyla ilişkili olanları belirlemelisin.

Semantic search
Alakalı chunk’ları bulmak için en yaygın yaklaşım semantic search’tür. Birebir kelime eşleşmesi arayan keyword-based search’ün aksine, semantic search kullanıcının sorusunun ve her text chunk’ının anlamını ve context’ini anlamak için text embedding’leri kullanır.

Text embedding’ler
Bir text embedding, bir metnin içerdiği anlamın sayısal temsilidir. Kelimeleri ve cümleleri, bilgisayarların matematiksel olarak işleyebileceği bir formata dönüştürmek olarak düşün.

Süreç şu şekilde işler:
- Bir embedding model’e text girersin
- Model uzun bir sayı listesi (embedding) çıktısı verir
- Her sayı -1 ile +1 arasındadır
- Bu sayılar input text’in farklı niteliklerini veya özelliklerini temsil eder
Sayıları anlamak
Bir embedding’deki her sayı, aslında input text’in bir niteliği için bir “puan”dır. Ancak önemli bir nüans var: her sayının tam olarak neyi temsil ettiğini bilmiyoruz.

Bir sayının “metnin ne kadar mutlu olduğunu” veya “metnin okyanuslardan ne kadar bahsettiğini” temsil ettiğini hayal etmek faydalı olsa da, bunlar yalnızca kavramsal örneklerdir. Her boyutun gerçek anlamı, model tarafından eğitim sırasında öğrenilir ve insanlar tarafından doğrudan yorumlanabilir değildir.
Embedding’ler için VoyageAI
Anthropic şu anda embedding generation sağlamadığı için, önerilen sağlayıcı VoyageAI’dır. Yapman gerekenler:
- Ayrı bir VoyageAI hesabı oluştur
- Bir API key al (ücretsiz başlayabilirsin)
- Key’i environment variable’larına ekle

.env dosyanda şunu ekle:
VOYAGE_API_KEY="your_key_here"
Implementasyon
Önce VoyageAI kütüphanesini kur:
%pip install voyageai
Sonra client’ı kur ve embedding üreten bir function yaz:
from dotenv import load_dotenv
import voyageai
load_dotenv()
client = voyageai.Client()
def generate_embedding(text, model="voyage-3-large", input_type="query"):
result = client.embed([text], model=model, input_type=input_type)
return result.embeddings[0]

Bu function’ı bir text chunk üzerinde çalıştırdığında, embedding’i temsil eden bir floating-point sayı listesi alırsın. Süreç hızlı ve basittir — asıl zorluk, RAG pipeline’ında en alakalı içeriği bulmak için bu embedding’leri etkili biçimde nasıl kullanacağını anlamaktır.

Bir sonraki adım, embedding’leri karşılaştırarak hangi chunk’ların kullanıcının sorusuna en benzer olduğunu belirlemeyi öğrenmektir; bu, semantic search sürecinin temelini oluşturur.
Temel çıkarımlar
- Embedding’ler, metnin anlamını sayısal vektörlere dönüştürür
- Semantic search, keyword match yerine anlam benzerliğine dayanır
- Embedding boyutlarının tek tek ne anlama geldiği doğrudan yorumlanabilir değildir
- Anthropic embedding üretmez; önerilen provider VoyageAI’dır
- Embedding üretmek hızlıdır; pipeline’da asıl iş, embedding’leri karşılaştırarak en alakalı chunk’ı bulmaktır