Kurumsal Aramanın Evrimi
Geleneksel Çekim-Artırılmış Üretme (RAG) hatları, kuruluşların yapılandırılmamış verileriyle etkileşim şeklini kökten değiştirmiş, çoğunlukla metin gömmelerini kullanarak anlamsal aramayı güçlendirmiştir. Ancak, kurumsal bilginin önemli bir kısmı metin dışı formatlarda yer alır: mimari diyagramlar, kullanıcı arayüzü taslakları, taranmış sözleşmeler ve ürün paketleme görselleri. Bu varlıkları izole edilmiş veri yığınları olarak ele almak, işletmelerin Büyük Dil Modelleri (LLM) yanıtlarını önemli ölçüde geliştirebilecek kritik bağlamı kaybetmesine neden olur. Bu yazı, görsel ve metin gömmelerini birleştirerek birleşik bir arama uzayında birleştiren çok modlu RAG sistemleri için teknik mimariyi incelemektedir.
Çok Modlu Gömme Stratejisinin Mimari Yapısı
Her iki modda da etkili bir şekilde arama yapmak için, farklı veri türlerini ortak bir vektör uzayına haritalamamız gerekir. En sağlam yaklaşım, hem görselleri hem de metinleri yerel olarak işleyebilen çok modlu kodlayıcılar kullanmak veya bağımsız kodlayıcıların çıktılarını hizalayan hibrit bir yaklaşım kullanmaktır. Kurumsal uygulamalar için hassasiyet hayati önem taşır. Görsel öğeleri metinsel kavutlara yerleştirmede üstün performans sunan CLIP (Karşıtlı Dil-Görsel Ön Eğitimi) veya SigLIP gibi özel varyantlar gibi modeller kullanmanızı öneririz.
Temel zorluk, boyut hizalamasında yatmaktadır. Metin gömmeleri (örneğin, BGE veya E5 modellerinden) ve görsel gömmeleri genellikle farklı vektör boyutlarına sahiptir. Bunu çözmek için, her ikisini de öğrenilmiş bir doğrusal projeksiyon katmanı kullanarak ortak bir düşük boyutlu uzaya projekte edebilir veya ortak bir birim küreye normalize edebilirsiniz. Bu, kosinüs benzerliği hesaplamalarının modlar arasında geçerli kalmasını sağlar.
Uygulama: Vektör Veritabanının Oluşturulması
Aşağıda, langchain ve chromadb kullanılarak çok modlu gömmelerin nasıl oluşturulup depolandığını gösteren pratik bir Python örneği bulunmaktadır. Bu kod parçası, bir görselin ve ilişkili açıklamasının işlenerek ortak bir temsil oluşturduğu emme (ingestion) aşamasını göstermektedir.
import chromadb
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
from PIL import Image
import requests
import io
# Çok modlu bir gömme modeli başlatın (hipotetik çok modlu bir sarmalayıcı kullanarak örnek)
# Pratikte, çok modlu bir modelle 'sentence-transformers' gibi bir kütüphane kullanabilirsiniz
model_name = "sentence-transformers/clip-ViT-B-32"
embeddings = HuggingFaceEmbeddings(model_name=model_name)
# Örnek veri: Bir teknik diyagram ve metin açıklaması
image_url = "https://example.com/diagram.png"
text_description = "Mikroservislerin Kafka üzerinden iletişim kurduğunu gösteren sistem mimari diyagramı."
# Görseli getirin ve ön işleyin
image = Image.open(requests.get(image_url, stream=True).raw)
# Gömmeleri oluştur
# Not: Belirli kütüphaneye bağlı olarak, hem görseli hem de metni geçirmeniz
# veya ayrı gömmeler oluşturup bunları birleştirmeniz gerekebilir.
# Burada, her ikisini de kabul eden çok modlu bir kodlayıcı varsayıyoruz.
vector = embeddings.embed_query({"image": image, "text": text_description})
# ChromaDB'de depola
client = chromadb.Client()
collection = client.get_or_create_collection(name="enterprise_docs")
collection.add(
ids=["doc_001"],
embeddings=[vector],
documents=[text_description],
metadatas=[{"type": "multi_modal", "source": image_url}]
)
Çok Modlu İndekste Sorgulama
Kullanıcı "Ödeme hizmeti mantığını göster" gibi bir sorgu gönderdiğinde, sistem anlamsal niyetle eşleşen görsel diyagramları aramalıdır. Sorgu metninde aynı gömme işlevini kullanarak, vektör veritabanından en iyi k sonucunu alırız. RAG hattı, bu çekilen parçaları (ister saf metin ister görsel referanslarla birlikte metin olsun) LLM'ye besler. Gelişmiş uygulamalar, daha derin akıl yürütme için görsel baytlarını doğrudan GPT-4V veya LLaVA gibi çok modlu LLM'lere bile iletebilir.
Zorluklar ve En İyi Uygulamalar
Görsellerin RAG'a entegre edilmesi gecikmeye ve depolama yüküne neden olur. Bunu azaltmak için katmanlı bir geri çağırma stratejisi uygulayın: önce metin benzerliğine dayalı adayları geri çağırın, ardından çok modlu puanları kullanarak yeniden sıralayın. Ayrıca, aramaları belirli belge türlerine veya güvenlik bölgelerine kısıtlamak için her zaman meta veri filtreleri ekleyin. Son olarak, gömme hattınızın, görsel metin ile anlamsal anlam arasındaki boşluğu doldurmak için taranmış belgeler için OCR gibi sağlam ön işleme adımlarını içerdiğinden emin olun.
Sonuç
Çok modlu RAG sadece teknolojik bir yükseltme değil; zengin, görsel dokümantasyonlarla uğraşan kuruluşlar için stratejik bir zorunluluktur. Görsel ve metin gömmelerini hizalayarak, veri hakkında daha zengin ve daha bağlamsal bir anlayış ortaya çıkarıyoruz. Çok modlu modeller daha verimli ve erişilebilir hale geldikçe, bu sinyalleri RAG hatlarınıza entegre etmek, gerçekten akıllı kurumsal arama uygulamaları oluşturmak için standart haline gelecektir.