Multimodal retrieval-augmented generation (RAG) sistemleri inşa etmek oldukça zordur. Bu zorluğun kaynağı, metin, görüntü, tablo, ses, video ve diğer birçok farklı modaliteden bilgi toplamak ve indekslemekten kaynaklanır. Önceki yazımızda, Metin ve Görüntü için Kolay Bir Giriş, metin ve görüntüleri nasıl ele alacağımızı tartıştık. Bu yazı, konuyu ses ve videolara genişletiyor. Daha spesifik olarak, video içeriklerinde bilgi aramak için bir multimodal RAG hattı nasıl inşa edilir, bunu keşfedeceğiz.
Metin, Görüntü ve Videolar için RAG Oluşturma
İlk prensiplerden yola çıkarak, çoklu modaliteleri kapsayan bir RAG hattı inşa etmek için üç yaklaşım belirtilebilir, bunlar aşağıda ve Şekil 1’de detaylandırılmıştır.
Ortak Bir Gömme Alanı Kullanmak
İlk yöntem, farklı modalitelerdeki bilgileri aynı gömme alanında projekte etmek için tek bir model kullanmaktır. CLIP gibi, metin ve görüntüler için kodlayıcıları olan modeller bu kategoriye girer. Bu yaklaşımın avantajı, mimari karmaşıklığın azaltılmasıdır. Modelin eğitildiği veri setinin çeşitliliğine bağlı olarak, uygulanabilir kullanım senaryolarının esnekliği de değerlendirilebilir.
Ancak bu yaklaşımın dezavantajı, birden fazla modaliteyi veya çok sayıda alt modaliteyi işleyebilen bir modeli ayarlamanın zorluğudur. Örneğin, CLIP doğal görüntülerle iyi performans gösterirken, yalnızca metni veya hatta sentetik görüntüleri kodlaması etkili değildir. Model performansını iyileştirmek için ince ayar yapmak mümkündür, ancak tüm bilgi türlerini kodlayabilen tek bir gömme modelini yaratmak oldukça zordur.
Paralel Geri Alım Hatları İnşası (Brute Force)
İkinci yöntem, her bir modaliteyi veya alt modaliteyi yerel arama yapacak şekilde kurup tüm hatları sorgulamaktır. Bu, farklı modalitelerde yayılan birden fazla veri kümesine yol açar. Bu durumda iki sorun ortaya çıkar. Birincisi, yanıt oluşturmak için büyük bir dil modelinin (LLM) alması gereken token sayısı önemli ölçüde artar ve bu da RAG hattının çalıştırma maliyetini yükseltir. İkincisi, çoklu modaliteleri absorbe edebilen bir LLM gereklidir. Bu yaklaşım, sorunu geri alma aşamasından üretim aşamasına taşır ve maliyeti artırır, ancak öğütme sürecini ve altyapıyı basitleştirir.
Ortak Bir Modalitede Temellendirme
Son olarak, tüm modalitelerden alınan bilgilerin bir ortak modaliteye, örneğin metne, dönüştürülerek işlenebilir. Bu yaklaşım, tüm görüntülerin, PDF’lerin, videoların, seslerin ve diğerlerinin anahtar bilgilerini metne çevirerek hattı kurmayı gerektirir. Bu yaklaşım bazı maliyetler doğurur ve kayıplı gömme oluşturabilir, ancak tüm modaliteleri etkili bir şekilde birleştirmek için hem geri alma hem de üretim aşamasında kullanılabilir.
Metin temellendirmesi, birden çok alt modaliteyi yönetme esnekliği sağladığı için, hedefe yönelik model ayarlarının yapılması, yalnızca bir kez kullanılan bir maliyetle hem arama hem de yanıt üretimini basitleştirir. Bu, güvenilir RAG hatları kurmak için mükemmel bir mimari temel işlevi görür.
Videoları Geri Alma Karmaşıklıkları
Video içerikleri, hemen hemen her türde – sosyal medya için kısa kesitlerden tutun, uzun eğitim videoları, eğlence ve hatta gözetim kayıtlarına kadar – çeşitli şekillerde karşımıza çıkar. Her bir içerik türü, kendi içinde benzersiz bir şekilde bilgi taşır ve video geri alımını bir denge eylemi haline getirir.
Bu çeşitliliği bir spektrumda düşünün. Yatay eksende, video içerikleri yüksek düzeyde düzensiz (örneğin gerçek dünya videoları) ile düzenli (örneğin eğitim videoları) arasında yer alır. Dikey eksende ise, bilginin nasıl iletildiğine hizmet eder. Bir uçta, videolar, videoyu anlamak için kritik olan zamansal bilgilerin zengin olduğu hareket sekanslarını içerirken, diğer uçta her birinin bağımsız olarak anlaşılabildiği sahneleri içerir.
Ayrıca, bilginin hem ses hem de görsel formatlarda dağıtıldığını unutmamak gerekir. Bir önceki bölümde, bir RAG hattı kurmak için metin gibi ortak bir modalitede temellendirmenin güvenilir bir yöntem olduğunu tartıştık, ancak bu iki modaliteden çıkarılan bilgilerinin ‘metin’ olarak doğru bir biçimde hizalanmasını sağlamak da önemlidir.
Sesi işlemek için esasen iki farklı yöntem bulunmaktadır:
- Duygusal: Bu tür bilgiler, genellikle bilginin kaynağına dair temel bağlamsal veriyi taşır. Örneğin, bir konuşmacının duygusal tonu veya tüketiciye bazı duyguları uyandırmak için kullanılan bir arka plan müziği.
- Objektif: Herhangi bir dilbilgisel bilgi, subjektif yorumlara yer bırakmadığı için objektif bilgi olarak kabul edilir.
Görsel içerikleri işlemek için şu üç zorluğu göz önünde bulundurmalıyız:
- İşlem maliyeti: Video işlemek, oldukça hesaplamaya dayalı bir süreçtir. Bir saniye video genellikle 30 veya 60 kare içerir, bu da saklama ve işleme açısından hızlı bir birikime yol açar. Örneğin, saniyede 60 kare olan 10 dakikalık bir video, her birinin belli bir seviyede işlenmesini gerektirerek toplamda 18,000 kare içerir.
- Karelerden bilgi çıkarma: Önceki yazılarda da bahsettiğimiz üzere, görüntülerden bilgi çıkarmak ve temsil etmek zordur çünkü içerdikleri bilgi yoğunluğu fazladır.
- Birden fazla karedeki “hareketlerin” korunması: Arka arkaya gelen kareler, belirli hareketleri yakalayabilir ve bu durum önemli bir bilgi taşır. Bir bütünlük içinde hareketleri tanımak ve doğru ağırlıkla temsil etmek zorlayıcıdır.
Video İçin RAG Oluşturma
Bir örnek kullanım senaryosu olarak, bir kavramın açıklandığı veya bir yöntemin gösterildiği video açıklayıcıları hakkında sorular sorduğumuzu düşünelim. Bu videolar, ders kaydı, toplantı kaydı, anahtar sunumları ve eğitim amaçlı adım adım videolar gibi görünmektedir. Bu kullanım durumu bilgi iletimi ve açıklama üzerine yoğunlaştığı için, ses kaynaklı duygu bilgisi ile görsel içerikteki hareketleri korumaya odaklanmamıza gerek yoktur.
Şekil 4, hattın beş ana segmentini içeren yüksek seviyeli bir mimariyi gösterir:
- Ses alımı
- Video alımı
- Ses ve video bilgilerinin birleştirilmesi
- Retriever’ın kurulması
- Yanıtların üretilmesi
Ses Alımı
Ses içeriği, duygu eklemesi gerektirmediği için sadece transkribe edilmesi yeterlidir. Bunun için, NVIDIA’nın Parakeet-CTC-0.6B-ASR modelini kullanarak bir otomatik konuşma tanıma (ASR) hattı oluşturuyoruz. Bu model kullanılarak ses transkribe edilir ve kelime düzeyinde zaman damgalarıyla birlikte geçici metin parçaları oluşturulmaktadır. Bu kullanımda duygusal bir anlam gerekmediği için, konuşma duygusu tanıma modelleri veya ses dil modeli kullanılarak metin tabanlı betimlemeler de oluşturulabilir.
Video Alımı
Kullanım durumu doğrultusunda, video işlem maliyetini azaltmaya ve karelerden bilgi çıkarmaya odaklanacağız.
Çoğu video genellikle 30 veya 60 FPS’de kaydedilip saklanır. Bu da bir dakikalık videonun 3,600 kare içerebileceği anlamına gelir. Görsel tüketim açısından bu yüksek kare hızı iyi bir deneyim sunarken, ardışık kareler arasında çok fazla fark bulunmamaktadır. Brute force yöntemi, her kareyi işlemek olsa da, bu son derece pahalı bir görev olacaktır. Bu nedenle, işlenecek aday karelerin sayısını azaltmamız gerekir.
Basit bir ilk adım, videoyu 4 FPS’ye düşürmektir; bu, işlenecek kare sayısını 240’a düşürecektir. Video kareleri genellikle küçük zaman farklılıkları ile yerleştirildiklerinden, çoğu kare benzer bilgi taşımaktadır.
Doğal bir sonraki adım, her bir karede taşınan bilgilerin miktarına göre “yerel maksimumlar” olarak tanımlanan ana kareleri belirlemektir. Bu üç adımla gerçekleştirilecektir.
Öncelikle, video bölümlemeleri yaparak sahne sınırlarını belirleyeceğiz. Bu, renk alanındaki değişiklikleri kullanarak klasik bilgisayarla görme teknikleri veya bir sahne algılama modelini kullanarak yapılabilir. Bölümlendirme, bilgiler içindeki yerel bağlamı oluşturmak için gereklidir.
İkinci olarak, her bölümden “ana klipleri” belirleyeceğiz. Bu, görsellerin algısal olarak benzersiz olduğu veya bazı benzersiz aktiviteleri yakalayan tüm klipleri belirlemek için bir görüntü kodlayıcı veya iki ardışık kare arasındaki farkı yakalayan bir sinyal işleme filtresi kullanarak gerçekleştirilecektir.
Sade bir örnek üzerinden gidersek, yapısal benzerlik indeksi (SSIM) kullanarak kareler arasındaki farkı hesaplayabiliriz (Şekil 5). Farklı karelerin belirlenmesinde, benzerlik metriği için bir standart sapmanın üzerindeki ilk kareyi başlangıç noktası ve benzerlik ölçütü için yerel maksimumu bekleyerek hangi çerçeve ile sonlandığını belirleyeceğiz. Bu, benzersiz farklılıklara işaret ederken, uç noktada yapıdan benzer bir sonuç elde etmek üzere beklemek gerektirebilir.
Bunların hepsi, işlenecek kare sayısını dakikada 3,600 kareden 40 kareye düşürme konusunda oldukça etkili olur. Unutmayın, bu açıklamada klasik bilgisayarla görme algoritmalarını kullanıyoruz. Çerçevelerin belirlenmesi ve tekrardan temizlenmesi için ince ayar yapılmış modeller kullanmak, işlenecek çerçeve sayısını daha da azaltır.
Artık temsil eden kareler elde ettiğimize göre, bunları bilgi çıkarmak için kullanacağız. Bunun için Llama-3-90B VLM NIM‘ı kullanıyoruz. VLM’ye, ekrandaki tüm metin ve bilgilerin transkripsiyonunu oluşturması için yönlendirme yapıyoruz.
Ses ve Video Bilgilerinin Birleştirilmesi
Ses ve görsel içerikten çıkarılan metin bilgileri, videodan elde edilen derli toplu bir çıkarım elde etmek için bir araya getirilir. NVIDIA Riva ASR, kelime düzeyinde zaman damgaları ile transkribe eder; bu da seçilen ana karelerle bağlantıyı kolaylaştırır.
Hatırlamanız gereken bir diğer husus ise, ana karelerden (önceden seçilen) elde edilen bilgilerin, o çerçevenin çevresindeki aktif sesle uyumlu olması gerektiğidir. Bu, ana karenin zamansal olarak ne olduğunu anlamasını sağlar. Bir yaklaşım, sahne düzeyinde bilgileri birleştirmektir; bu, bir sahne zaman damgası oluşturarak yapılabilir. Bu yöntemle, o zaman damgalarındaki sesler çıkarılabilir ve ana karelerden elde edilen metin ses parçasına eklenir, böylece sahnenin içeriği daha derli bir hâle gelir.
Ayrıca, video içerikleri ile ses içeriklerini zaman damgası düzeyinde birleştirmeye çalışmak mümkündür. Ancak bu yaklaşımda, video ve ses içeriğinin birebir tekrarı olabileceğini göz önünde bulundurmalısınız; örneğin, ses üzerinden konuşan sunucu bir slayta geçiyorsa bu, ses ve video içindeki bilgilerin örtüştüğü anlamına gelir. Bu durum fazladan token üreterek gecikme ve maliyet artırabilir.
Alternatif olarak, daha küçük bir LLM kullanarak, görsel bilgiyi ses içeriğine eklemek mümkündür. Alınan bilgiye göre bir LLM çağrısının eklenmesi, gerçek zamanlı yanıt ve geri alma süreçlerinde zaman ve maliyet tasarrufu sağlayabilir.
Retriever’ı Kurmak
Metin temellendirilmiş ses-görsel birleştirilmesinin ardından, videonun tutarlı bir metin tanımı oluşturulacaktır. Ayrıca, kelime düzeyinde geçiş zaman damgaları ile birlikte dosya düzeyindeki meta bilgileri, dosyanın adı gibi bilgiler de saklanır. Bu bilgileri kullanarak meta verilerle zenginleştirilmiş parçalar oluşturur ve bunları gömme modeli kullanarak yaratırız. Bu gömmeler, zaman damgaları ile birlikte vektör veritabanında saklanır.
Yanıtların Üretilmesi
Vektör veritabanı kurulduktan sonra, videolarınızla etkileşim kurmanın zamanı gelmiştir. Gelen kullanıcı sorgusuyla birlikte, sorguyu gömme işlemine tabi tutarak geri alın ve ardından en ilgili parçayı sıralayın. Bu parçalar, yanıt oluşturmak için LLM’ye bağlam olarak sunulacaktır. Parçalarla ilişkilendirilmiş uygun meta veriler, referans alınan videoları ve sorunun yanıtlanmasında kullanılan zaman damgalarını sağlayabilir.
Başlayın
Bu yazıda tartışılan multimodal RAG hatları gibi hatlar oluşturmaya hazır mısınız? NVIDIA API kataloğunda NVIDIA NIM mikroservisleri ve NVIDIA Blueprint örneklerini kullanın.