Anahtar kelimeye dayalı aramaya elveda deyin
GPT 3+ veya ChatGPT'de anlık mühendisliğin sezgisel olarak anlaşılması daha kolaydır. Web'de ve sosyal medyada birçok kılavuz ve örnek mevcuttur. Örneğin
Gömmeler programlama gerektirir ve nasıl çalıştığına ilişkin çeşitli karşıt sezgisel davranışlar nedeniyle daha az anlaşılır. Ancak, diğer çeşitli olası kullanım durumları için arama yapmak veya mevcut metin tabanlı modellerle birlikte kullanılmak üzere son derece güçlü bir araçtır.
Yerleştirmelerin, talimat modelleri için AI araç seti içerisinde tartışmasız aynı derecede güçlü bir araç olduğu söylenebilir. Farklı kelime ve cümlelerde, hatta tüm dillerde arama yapabilme yeteneği nedeniyle. Herhangi bir sorgu için ilgili belgeyi aramaya odaklanmak.
Örneğin, İngilizce tabanlı bir belgeden arama ve yanıtlamayı güçlendirmek için kullanılabilir. İngilizce ...
Ya da Japonca...
Veya AI modelinin desteklediği diğer diller.
Vektör yerleştirme, arama veya soru yanıtlama, metin sınıflandırma ve metin oluşturma gibi diğer görevler için kullanılabilir.
Bu makalenin arama yönüne odaklandığını, yanıtlama sürecinin bir takip makalesinde yer aldığını unutmayın.
Bir vektör yerleştirme oluşturmak için, herhangi bir metni (büyük bir belge, bir cümle ve hatta bir kelime) vektör adı verilen bir "N boyut dizisine" dönüştüren bir yerleştirme yapay zeka modeli kullanılacaktır.
Örneğin How do I write a UI test script with Uilicious?
gibi bir cümle.
OpenAI text-embedding-ada-002 modeli aracılığıyla bir diziye (vektör olarak adlandırılır) dönüştürülebilir: [0.010046141, -0.009800113, 0.014761676, -0.022538893, ... an a 1000+ numbers]
Bu vektör, yapay zeka modelinin metnin özetlenmiş anlayışını temsil eder. Bu, yalnızca yapay zekanın anlayabileceği bir dilde yazılmış "N kelimelik özet" olarak düşünülebilir.
Yapay zekanın belgeyi (yalnızca metnini değil) anlamasına bağlı olarak, ilgili belgelerin birbirine yakın mesafede olacağı yer.
Bu, klasik arama motorlarının basit anahtar kelime aramalarının ötesinde büyük bir adımdır çünkü cümle yapısı ve dildeki farklılıkları ele alabilir (yapay zeka modelinin söz konusu dili anlayacak şekilde eğitilmesi şartıyla).
Aşağıdakileri varsayımsal bir örnek olarak ele alalım; anlaşılması daha kolay olsun diye yanlış bir şekilde 2 boyutlu uzaya aşırı basitleştirilmiştir:
Bu, 2 boyutlu uzayda görsel olarak aşağıdaki gibi sunulabilir.
Örneğin D1,2,3, Uilicious'un çeşitli şekillerde nasıl kullanılacağına ilişkin tüm belgelerdir ve tek bir kümede gruplandırılmıştır
Basit birer bağlantı olan ve bunun ötesinde doğal bir değeri olmayan D4 ve D5, başka bir kümede ayrı ayrı gruplandırılmıştır.
Ayrıca D1 ve D2, kendi JavaScript tabanlı test dilimizi kullanan Uilicious test komutlarıyla ilgili olduklarından birlikte daha fazla gruplandırılmıştır.
D3, farklı bir kullanım senaryosuna ve hedef kitleye yönelik olan web sürücüsü protokolünün doğrudan altyapımızda kullanılmasıyla ilgili olduğundan ayrı olarak gruplandırılmıştır.
Benzer şekilde, C1 ve S2 için, cümle yapısı ve dildeki büyük farklılıklara rağmen, esasen aynı soru olduğu için iki soru birlikte gruplandırılmıştır.
Ek olarak, soru teknik olarak her iki şekilde de yorumlanabilse de (Uilicious test komut dosyası veya web sürücüsü protokolü kullanılarak), soru web sürücüsü üzerinde Uilicious test komut dosyası kullanımı anlamına geldiğinden, konumu D1 ve D2'ye "daha yakın" ve D1 ve D2'den daha uzaktadır. D3.
Bu nedenle, anahtar kelimelerde büyük örtüşmeler olmasına rağmen, gruplandırmalardaki bu nüanslar, yerleştirmelerin içinde kodlanan yapay zeka tarafından yakalanıyor. Anahtar kelime aramadaki ayırt edici farkını vurgulama
Ancak gerçekte, insanların anlaması kolay olan aşırı basitleştirilmiş 2 boyutlu bir dizi yerine, yerleştirme kolaylıkla 1.000'den fazla boyutlu bir dizi olabilir. Bu dizi, kullanılan spesifik AI modeline özeldir ve başka bir AI modelinin yerleştirmeleriyle karıştırılamaz.
Aşırı basitleştirilmiş 2 boyut örnekleri, bir soruya (veya bir bakış açısına) göre yüksek düzeyde gruplandırma kavramını anlamak için iyi olsa da, bir N boyutunu doğru şekilde temsil etmez.
Karmaşık N boyutu matematiği nedeniyle A'nın B'ye yakın olabileceği, B'nin C'ye yakın olabileceği ancak A ve C'nin birbirinden uzak sayılabileceği durumlar olabilir. Bu son derece mantığa aykırı bir sonuç.
Bu tür mesafeler yalnızca aynı noktaya ve kullanılan formüllere göre kullanıldığında faydalıdır. hangisi kullanılarak hesaplanabilir?
Her formülün etkinliğinin, farklı kullanım durumları için kendi artıları ve eksileri vardır. Metinsel arama için, Öklid mesafesinin çoğu durumda "daha iyi sonuç verdiği" ve diğer yöntemlerin öne çıktığı durumlarda "yeterince iyi" olduğu genel olarak kabul edilir.
Bunların hepsi aslında N-Boyutlarını tek bir noktaya göre tek bir boyuta (mesafeye) indirmek için kullanılır. Sonuç olarak bu, sorulan soruya bağlı olarak gruplamaların büyük ölçüde değişebileceği/değişebileceği anlamına gelir.
Mesafelerin bu "görelilik" niteliği, klasik veritabanı arama indekslerini etkisiz hale getirir.
Eğer bu bir anlam ifade etmiyorsa, matematik N-Küreleri ile 4 boyutlu uzay bu şekilde doğru şekilde görselleştirilir.
Şimdi 1000 boyutu hayal edin? Evet hiç mantıklı değil.
Bu konuyu bir doktora makalesiyle saptırmadan, bunu sadece matematik profesörlerine güvenmek olarak özetleyeceğim.
Anlamamız gereken tek şey, genel olarak, iki vektör yerleştirme noktası arasındaki mesafe ne kadar yakınsa, bunların birbirleriyle ilişkili olma olasılıklarının da o kadar yüksek olduğudur.
Pratik uygulama açısından. Önce Öklid mesafesini kullanarak başlayın. Kullanım durumunuza göre deneme yanılma yoluyla daha iyi sonuçlar elde etmek için ince ayar yapılmış diğer formülleri kullanmayı düşünmeden önce (önerilmez).
Çeşitli belgeleri gömmelere dönüştürebildiğimize göre, artık bir veritabanında saklayabilir ve onunla arama yapabiliriz.
Bununla birlikte, metinle arama yapan bir SQL veritabanının aksine, hem arama hem de aranan veri, kendisini gömen vektördür. Bu, yerleştirmelerin aranması söz konusu olduğunda geleneksel veritabanı arama dizinlerinin etkisiz olduğu anlamına gelir.
Tüm belgelerinizin yerleştirilmesini, önceden hesaplanmasını ve bir vektör arama veritabanında saklanmasını sağlayabiliriz. Bu daha sonra en yakın mesafeye göre sıralanmış bir eşleşme listesi sağlamak için kullanılabilir.
Bu, aşağıdaki gibi mevcut vektör veritabanları kullanılarak yapılabilir:
Unutulmaması gereken önemli bir nokta, vektör arama "veritabanı teknolojisi" nispeten yenidir. Vektör arama veritabanlarının büyük çoğunluğu, Facebook, Spotify veya Google gibi şirketlerde bulunan ve milyonlarca veya milyarlarca dolarlık rekor setlere sahip kullanım örnekleri için tasarlandı. Ve küçük veri kümeleri için optimize edilemeyebilir.
Bu önümüzdeki birkaç yıl içinde sürekli değişen bir alan olacak, işte gelecekteki vektör arama veritabanlarını takip etmenize ve bulmanıza yardımcı olacak bir github 'harika listesi'
Bu nedenle, genel olarak, (<10.000 ~ 100.000 yerleştirme) küçük veri kümeleri için, gömme veri kümesini bellekte tutmanın ve öklid-mesafe-karesini kaba zorlamanın birçok kullanım durumu için "yeterince iyi" olduğunu ve bazen resmi yöntemlerden daha iyi performans göstereceğini bulduk. aşağıdakine benzer bir veritabanı çözümü (disk/ağ ek yükleri olacak).
Bu yaklaşımın bariz dezavantajı, tüm veri kümesinin ek yük olmadan belleğe sığacak kadar küçük olması gerektiğidir.
Yerel bellek içi gömme aramayı mı yoksa resmi bir vektör arama veritabanını mı kullandığınıza bakılmaksızın.
Gömülü arama, çeşitli diller ve senaryolarla esnek bir şekilde çalışan bir sıralama ve sıralama algoritmasıdır. Okuyucu olarak sizin için soru, onu nasıl kullanabileceğinizdir. Olası bir Google arama alternatifi olarak veya sohbetten oyunlara kadar diğer araçlarla birlikte kullanılabilir. Olasılıklar sonsuzdur ve araştırmaya açıktır.
~ Bir dahaki sefere kadar 🖖 uzun yaşa ve başarılı ol
Eugene Cheah @ tech-talk-cto.com
İlk olarak yayınlandığı yer: https://substack.tech-talk-cto.com/p/introducing-ai-embeddings-and-how
Kullanılan tüm Görseller, uygun atıflarıyla birlikte