Vector Databases

Weaviate Çok Kiracılı Yapısı ile Güvenli SaaS RAG Sistemleri Oluşturma

Getiri Odaklı Üretim (RAG), Büyük Dil Modellerini (LLM) mülkiyet verilerinde temellendirmek için altın standart haline gelmiştir. Ancak, SaaS platformları için RAG çözümleri dağıtıldığında kritik bir zorluk ortaya çıkar: veri izolasyonu. Çok kiracılı bir ortamda, Kiracı A'nın asla Kiracı B'ye ait belgeleri getirmemesini sağlamak sadece bir en iyi uygulama değil, aynı zamanda bir güvenlik gerekliliğidir.

Weaviate, bu zorluğu çok kiracılılık yetenekleri aracılığıyla yerel olarak ele alır. Uygulama katmanında ayrı koleksiyonlar başlatmak veya karmaşık filtreleme mantığını yönetmek gibi geleneksel yaklaşımların aksine, Weaviate tek bir koleksiyon içinde izole "ad alanları" oluşturmanıza olanak tanır. Bu gönderi, bu izole vektör ad alanlarının nasıl etkili bir şekilde uygulanacağını ele alıyor.

Weaviate Çok Kiracılı Yapısını Anlama

Weaviate'te çok kiracılı bir koleksiyon, birden fazla kiracı için bir kapsayıcı olarak görev yapar. Her kiracı, koleksiyonun temelde izole bir segmentidir. Temel mimari avantaj, her kiracının depolama seviyesinde fiziksel olarak ayrılmış kendi vektör ve meta veri setine sahip olmasıdır. Bu şu anlama gelir:

  • Performans İzolasyonu: Bir kiracı için büyük bir veri seti, başka bir kiracının sorgularını yavaşlatmaz.
  • Güvenlik: Sorgular, kazara kiracılar arası veri sızıntısını önlemek için açıkça bir kiracı kimliği belirtmek zorundadır.
  • Ölçeklenebilirlik: Veri göçü yapmadan kiracıları kolayca ekleyebilir veya kaldırabilirsiniz.

Uygulama Adımları

1. Koleksiyonun Yapılandırılması

Çok kiracılılığı etkinleştirmek için, koleksiyon şemasını multiTenancyConfig seçeneğiyle yapılandırmalısınız. Dikkat edin, bu ayar koleksiyon oluşturulduktan sonra değiştirilemez.

import weaviate

client = weaviate.WeaviateClient(
    connection_params=weaviate.ConnectionParams(
        from_environment()
    )
)

schema = client.collections

# Çok kiracılı bir koleksiyon oluşturun
collection = schema.get_or_create(
    "KnowledgeBase",
    data=weaviate.classes.data.Config(
        vector_index_config=weaviate.classes.config.VectorIndexConfig(
            vector_index_type="hnsw"
        ),
        multi_tenancy_config=weaviate.classes.config.MultiTenancyConfig(
            enabled=True
        )
    )
)

2. Kiracıya Özgü Verilerin İşlenmesi

Veri eklerken, tenant_id belirtmelisiniz. Bu, vektörün doğru izole ad alanında depolanmasını sağlar.

# Kiracı A için veri işleyin
collection.data.insert(
    {
        "content": "Kiracı A'nın mülkiyet dokümantasyonu...",
        "category": "manual"
    },
    tenant_id="tenant_a"
)

# Kiracı B için veri işleyin
collection.data.insert(
    {
        "content": "Kiracı B'nin özel kullanıcı kılavuzları...",
        "category": "help"
    },
    tenant_id="tenant_b"
)

3. İzole Sorguların Çalıştırılması

Vektör aramaları yaparken, tenant_id zorunlu bir parametredir. Bunu atarsanız, API bir hata fırlatır ve bu bir güvenlik mekanizması olarak görev yapar.

# Sorguyu yalnızca Kiracı A'nın ad alanında çalıştırın
response = collection.query.near_text(
    query="Parolamı nasıl sıfırlarım?",
    limit=5,
    tenant_id="tenant_a"
)

print(f"Kiracı A için sonuçlar: {len(response.objects)}")
# Bu sorgu, semantik olarak benzer olsa bile ASLA Kiracı B'nin verilerini döndürmez.

SaaS Uygulamaları İçin Pratik Düşünceler

Weaviate vektör izolasyonunu ele alırken, uygulama mimarinizin kiracı bağlamını doğru bir şekilde yönetmesi gerekir. İşte en iyi uygulamalar:

  1. Middleware Entegrasyonu: Kiracı kimliğini kimlik doğrulama jetonundan (ör. JWT) çıkarmak ve Weaviate istemci bağlamına enjekte etmek için API middleware'ı kullanın. Güvenlik açısından kritik işlemler için kiracı kimliğinin istemci tarafı girdisi tarafından belirlenmesine asla izin vermeyin.
  2. Endeks Yönetimi: Çok büyük kiracılar için, Weaviate'in partitioning özelliklerini kullanarak daha fazla bölümlendirme yapmayı veya sıcak/soğuk depolama stratejilerini yönetmeyi düşünün.
  3. Gömme Tutarlılığı: Tüm kiracılar için aynı gömme modelinin kullanıldığından emin olun. Vektörler izole olsa da, kiracılar arasında tutarsız gömme uzayları, katı izolasyon senaryolarında nadir de olsa kiracılar arası analitik ihtiyaç duyulduğunda suboptimal getiriye yol açabilir.

Sonuç

Weaviate'in çok kiracılı yapısı, SaaS ortamlarında izole RAG boru hatları oluşturmak için sağlam, birinci sınıf bir çözüm sunar. Yerel kiracı ad alanlarından yararlanarak geliştiriciler, katı veri izolasyonu, geliştirilmiş sorgu performansı ve basitleştirilmiş kaynak yönetimi sağlayabilir. RAG uygulamalarınızı ölçeklendirdikçe, bu deseni erken benimsemek, daha sonra özel güvenlik katmanları tasarlamada önemli çaba tasarrufu sağlayacaktır.

Müşteri destek botu mu yoksa kurumsal bilgi arama aracı mı geliştiriyorsunuz, Weaviate her kiracının verisinin güvenli, hızlı ve yalnızca ona ait olanlar tarafından erişilebilir kalmasını sağlar.

Share: