Voice fingerprint embedding'leri — içinde gerçekten ne var
Voyage-3-large ile embed edilmiş, tek vektöre ortalanmış elli kısa-senaryo completion'ı. Her seçimin arkasındaki muhakeme ve production drift detection için anlamı.
Voice fingerprint, kurana kadar basit gibi görünen feature'lardan biri. Runtime sözleşmesi: persona başı bir vektör, chat yanıtı başına bir cosine distance. Altındaki şekil daha çok nüans taşır.
Neden senaryolar, persona dokümanı değil
Naif yaklaşım personanın Mask katmanını doğrudan embed eder — ses, ton, signature phrases. Başarısız, çünkü Mask performative output değil, prescriptive metadata. "Sıcak ama doğrudan" reçete edilmiş bir persona her zaman sıcak konuşmaz; bunu çağıran durumlarda sıcak konuşur. Reçetenin embedding'i gerçek yanıtların embedding'inden ayrışır.
Senaryolar bunu düzeltir. Personayı konuşturuyoruz, elli kez, elli farklı bağlamda. Embedding'ler konuşmanın, reçetenin değil. Drift detection konuşmayı konuşmaya karşılaştırır.
Neden elli
30 senaryonun altında ortalama vektör gürültülü. Aynı persona üzerinde iki fingerprint hesaplaması çalıştır, sonuç vektörleri karşılaştır; 30 altında, run'lar arası cosine distance > 0.10. 30 üstü, < 0.05. 50'de < 0.03 — fingerprint'i deterministik olarak ele alabileceğimiz kadar yakın.
80'in üstünde varyans plato'lanır. Daha yüksek gidebilirdik; gitmiyoruz, çünkü fingerprint generation 50 senaryoda $0.03 ve 60 saniyeye mal olur. Marjinal stabilite için bunu ikiye katlamak yaptığımız bir trade değil.
Neden ortalama, concatenate değil
Tasarım aşamasında iki seçenek:
- 50 embedding'i tek bir 50×1024 matrix'e concatenate et; chat yanıtını matrix'e karşı satır başı min distance ile karşılaştır.
- 50 embedding'i tek bir 1024-vektöre ortala; tek bir cosine ile karşılaştır.
Seçenek 1 sorgu başı daha çok bilgi yakalar. Seçenek 2 sorgu başı 50× daha ucuz. Her yanıtın skorlandığı chat için, amortizasyon kazancı büyük. Seçenek 2.
Bilgi kaybı beklenenden daha az önemli: ortalanmış embedding'ler seste merkezi eğilimi korur, drift'in tam olarak ölçtüğü şeyi. Orijinal 50 senaryodaki yanıt başı outlier'lar smooth'lanır; yanıtın merkezi eğilime uyuyorsa, in voice'sun.
Neden voyage-3-large
Etiketlenmiş bir drift dataset'inde (insanların in-voice ya da off-voice olarak flag'lediği yanıtlar) yedi embedding modelini karşılaştırdık. Voyage'ın voyage-3-large'i EN, TR, DE, ES, FR, PT boyunca dil başı degradation olmadan etiketlere karşı en yüksek F1'i üretti.
OpenAI'nin text-embedding-3-large'i yakındı (F1'in %2'si içinde) ama dil geçişine daha duyarlıydı — Türkçe konuşan aynı persona, İngilizce konuşan aynı persona ile karşılaştırıldığında daha yüksek drift skorladı, iki yanıt da gerçekten in voice olduğunda bile.
Cohere'nin embed-english-v3.0'ı yalnızca İngilizce benchmark'larında kazanır ama çokdilliye keskin şekilde degrade olur.
Fingerprint'in yakaladığı
- Register drift. Slang kullanmaya başlayan formal bir persona.
- Topical drift. Konu değiştiğinde sesi değişen bir karakter (sistem prompt'unun yetkisinin solduğunun bir işareti).
- Provider model drift. Claude Opus'tan Sonnet'e geçmek ses yüzeyini değiştirir; drift değişimi yakalar.
- Long-context decay. Konuşma geçmişi büyüdükçe, persona generic'e doğru drift'ler; skor kademeli olarak tırmanır.
Yakalamadığı
- İçerik doğruluğu. Mükemmel sesle faktüel yanlış bir yanıt ~0.05 skorlar.
- Personanın aralığına uyan ton kaymaları. "Stres altında soğuk ol" reçete edilmiş bir personanın stresli bir senaryoda soğuk konuşması drift değil — tasarım.
Yeniden hesaplama
Fingerprint'ler her persona refine'ında yeniden hesaplanır. Manuel edit'ler (Manual mode) yeniden hesaplamayı tetiklemez — metadata düzeltmeleri, ses değişiklikleri değil. Cascade ve Refine mode tetikler.
POST /v1/personas/{id}/fingerprint/recompute üzerinden manuel
yeniden hesaplamaya zorlayabilirsin.
Trade-off'lar nerede iniyor
Voice fingerprinting bir mühendislik trade-off'u:
- Ortalama vs concatenate: bilgi-zengin yerine ucuzu seçti.
- Elli senaryo vs daha fazla: marjinal gürültü yerine pratik maliyeti seçti.
- Cosine vs alternatif metrikler: büyüklük duyarlılığı yerine yön-değişmezliği seçti.
- voyage-3-large vs diğerleri: sadece İngilizce top-line F1 yerine çokdilli stabiliteyi seçti.
Hiçbiri sonsuz değil. Audit pipeline'ı bir recalibration pas'ı içerir; yeni bir embedding modeli etiketli F1'i maddi olarak iyileştirirse, bir migration job ile geçeceğiz.