Ses için PGVector: Yüksek Boyutlu Embedding’lere Derinlemesine Bakış
November 5, 2024
•min read
Mühendislik
IdentityCall AI Ekibi tarafından | Mühendislik | 10 dakikalık okuma
Sesten Matematiğe
Bir veritabanında bir “ses” nasıl aranır? WHERE voice = 'John' şeklinde sorgu yapamazsınız.
Vektör Embedding’lerine ihtiyacınız vardır.
Bu yazı, IdentityCall’in milyonlarca ses izi üzerinde şimşek hızında biyometrik tanımlama yapmak için PostgreSQL + pgvector’ü nasıl kullandığını açıklar.
Vektörleştirme Boru Hattı
- Spektrogram Üretimi: Ham ses (WAV), bir Mel frekansı kepstrumuna (spektrogram) dönüştürülür.
- Kodlayıcı Ağ (ResNet/interaction): Derin bir sinir ağı, görüntü benzeri spektrogramı işler.
- Embedding Çıkarımı: Ağın sondan bir önceki katmanı, sabit boyutlu bir sayı dizisi (float32) üretir.
- Boyut: Voice ID için 256 (kompakt, kimlik odaklı).
- Boyut: Anlamsal Arama için 768 (daha zengin, anlam odaklı).
Örnek Embedding: [-0.024, 0.551, -0.112, ...]
Neden PGVector?
Geleneksel olarak vektörler özelleşmiş veritabanlarında (Pinecone, Milvus) saklanırdı.
pgvector, embedding’leri ilişkisel verilerin (Kullanıcı Kimliği, Çağrı Kayıtları) yanında, ana Postgres veritabanımızda saklamamıza olanak tanır.
”Kosinüs Benzerliği” Uzaklığı
Bir eşleşme bulmak için birebir bir eşleşme aramayız (ses asla özdeş değildir). 256 boyutlu uzayda “en yakın komşuyu” ararız.
Kosinüs Uzaklığını kullanırız (iki vektör arasındaki açıyı belirleyerek).
- Uzaklık 0.0: Özdeş.
- Uzaklık < 0.2: Yüksek Güvenli Eşleşme (Aynı Konuşmacı).
- Uzaklık > 0.4: farklı Konuşmacı.
Hız için İndeksleme (IVFFlat vs HNSW)
1 milyon vektörü doğrusal olarak taramak çok yavaştır (gecikme!). İndeksleme kullanırız.
- HNSW (Hierarchical Navigable Small World): Altın standart. Aramanın, ilgili vektör komşuluğuna milisaniyeler içinde “yakınlaşmasına” olanak tanıyan bir grafik oluşturur.
-- Example PGVector Query
SELECT id, speaker_name, 1 - (embedding <=> '[...]'::vector) AS confidence
FROM voice_profiles
ORDER BY embedding <=> '[...]'::vector
LIMIT 1;
Mimari Avantaj
Vektörleri Postgres’te tutarak ACID uyumluluğunu ve Referans Bütünlüğünü koruruz. Bir Kullanıcıyı silip ses vektörlerini anında art arda silebiliriz; bu, GDPR (Unutulma Hakkı) için büyük bir kazançtır.
Sesi saklayın. Matematiği sorgulayın. IdentityCall API ile geliştirin.
Tags:
