paint-brush
Veri Yönetiminde Stratejik İyileştirme Sağlamak için Weaviate'i MinIO S3 Kovalarıyla Yedeklemeby@minio
8,112
8,112

Veri Yönetiminde Stratejik İyileştirme Sağlamak için Weaviate'i MinIO S3 Kovalarıyla Yedekleme

MinIO19m2024/04/04
Read on Terminal Reader
Read this story w/o Javascript

Weaviate'in gelişmiş vektör veritabanı yeteneklerini MinIO tarafından sağlanan güçlü depolama çözümleriyle bir araya getirerek kullanıcılar, verilerinin tüm potansiyelini ortaya çıkarma yetkisine sahip oluyor.
featured image - Veri Yönetiminde Stratejik İyileştirme Sağlamak için Weaviate'i MinIO S3 Kovalarıyla Yedekleme
MinIO HackerNoon profile picture
0-item



Weaviate, makine öğrenimi modellerinin kullanımı yoluyla anlamsal aramayı geliştirmek için tasarlanmış, öncü, açık kaynaklı bir vektör veritabanıdır. Anahtar kelime eşleştirmeye dayanan geleneksel arama motorlarının aksine Weaviate, anlamsal benzerlik ilkelerini kullanır. Bu yenilikçi yaklaşım, çeşitli veri biçimlerini (metinler, resimler ve daha fazlası), veri bağlamının ve anlamının özünü yakalayan vektör temsillerine, sayısal formlara dönüştürür. Weaviate, bu vektörler arasındaki benzerlikleri analiz ederek, kullanıcının amacını gerçekten anlayan arama sonuçları sunar ve anahtar kelimeye dayalı aramaların sınırlamalarının ötesinde önemli bir adım sunar.


Bu kılavuz, MinIO ve Weaviate'in kusursuz entegrasyonunu göstermeyi, Kubernetes'in yerel nesne depolamasının ve yapay zeka destekli semantik arama özelliklerinin en iyilerinden yararlanmayı göstermeyi amaçlamaktadır. Konteyner orkestrasyonu için Docker Compose'dan yararlanan bu kılavuz, sağlam, ölçeklenebilir ve verimli bir veri yönetimi sistemi oluşturmaya yönelik stratejik bir yaklaşım sunar. Verileri nasıl depoladığımızı, eriştiğimizi ve yönettiğimizi hedef alan bu kurulum, modern depolama çözümlerinin ve yapay zeka odaklı veri alımının gücünden yararlanmak isteyen geliştiriciler, DevOps mühendisleri ve veri bilimcileri için ezber bozan bir özelliktir.

Tech Stack'e Giriş

Bu gösteride Weaviate'i Docker kullanarak MinIO kovalarıyla yedeklemeye odaklanacağız. Bu kurulum, yapay zeka ile geliştirilmiş arama ve analiz projelerimizde veri bütünlüğünü ve erişilebilirliğini sağlar.


  • Depolama için MinIO : MinIO'yu birincil depolama platformumuz olarak kullanıyoruz. Yüksek performansı ve ölçeklenebilirliğiyle tanınan MinIO, büyük hacimli verileri güvenli ve verimli bir şekilde işleme konusunda uzmandır. Bu demoda Weaviate verilerini yedeklemek için MinIO paketlerinin nasıl kullanıldığını göreceksiniz, böylece sistemimizin bütünlüğünün ve performansının tavizsiz kalmasını sağlayacaksınız.


  • Weaviate Vektör Veritabanı : Bu entegrasyonun merkezinde yer alan Weaviate'in vektör veritabanı, anlamsal aramalar gerçekleştirme yeteneğiyle yapay zeka uygulamalarını güçlendirir. Yapılandırılmamış verileri anlamlı vektör temsillerine dönüştürerek uygulamaların verileri derinlemesine incelikli bir şekilde anlamasına ve bunlarla etkileşime girmesine olanak tanıyarak daha akıllı ve duyarlı yapay zeka odaklı işlevlerin önünü açıyor.


Bu gösterim, MinIO ve Weaviate'in Docker kullanarak kusursuz entegrasyonunu vurgulamayı amaçlıyor ve AI ile geliştirilmiş arama ve analiz sistemlerini yedeklemek için güvenilir bir yöntem sergiliyor.

Kaynaklar

Bilgili Önkoşullar

  • Makinenizde Docker ve Docker Compose yüklü.
  • Docker kavramlarının ve YAML sözdiziminin temel anlayışı.
  • Weaviate-client kütüphanesini kullanmak için Python ortamı.
  • Curl gibi komutları çalıştırmak için komut satırı erişimi.

Docker Compose ile Entegrasyon ve Yapılandırma

Burada sağlanan docker-compose.yaml dosyası, Weaviate için kusursuz bir kurulum oluşturmak üzere hazırlanmış olup, akıcı ve verimli veri yönetimine olan bağlılığımızı vurgulamaktadır. Bu yapılandırma, MinIO'nun güvenli bir depolama hizmeti olarak hareket ettiği ve Weaviate'in bu depolamayı gelişmiş vektör arama yetenekleri için kullandığı sağlam bir ortam sağlar.


docker-compose.yaml Aşağıda verilen Weaviate kurulumunu özetlemektedir.


 version: '3.8' services: weaviate: container_name: weaviate_server image: semitechnologies/weaviate:latest ports: - "8080:8080" environment: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' ENABLE_MODULES: 'backup-s3' BACKUP_S3_BUCKET: 'weaviate-backups' BACKUP_S3_ENDPOINT: 'play.min.io:443' BACKUP_S3_ACCESS_KEY_ID: 'minioadmin' BACKUP_S3_SECRET_ACCESS_KEY: 'minioadmin' BACKUP_S3_USE_SSL: 'true' CLUSTER_HOSTNAME: 'node1' volumes: - ./weaviate/data:/var/lib/weaviate



Docker-Compose: Weaviate'i backups-s3 modülü etkin ve play.min.io MinIO sunucusuyla dağıtın

S3 Yedekleme için Weaviate'i Yapılandırma

Yukarıdaki docker-compose.yaml ile Weaviate, yedeklemeler için MinIO'yu kullanacak ve veri bütünlüğünü ve erişilebilirliğini sağlayacak şekilde karmaşık bir şekilde yapılandırılmıştır. Bu kurulum, ENABLE_MODULES backup-s3 olarak ayarlanması gibi temel ortam değişkenlerini ve S3 grubu, uç nokta, erişim anahtarları ve SSL kullanımına ilişkin çeşitli ayarları içerir. Ek olarak, PERSISTENCE_DATA_PATH verilerin kalıcı olarak saklanmasını sağlamak için ve CLUSTER_NAME ise düğüm tanımlaması için ayarlanır.


Önemli ortam değişkenleri şunları içerir: :

  • ENABLE_MODULES : 'yedekleme-s3'
  • BACKUP_S3_BUCKET : 'yedeklemeleri oluştur'
  • BACKUP_S3_ENDPOINT : 'play.min.io:443'
  • BACKUP_S3_ACCESS_KEY_ID : 'mini yönetici'
  • BACKUP_S3_SECRET_ACCESS_KEY : 'mini yönetici'
  • BACKUP_S3_USE_SSL : 'doğru'
  • PERSISTENCE_DATA_PATH : '/var/lib/weaviate'
  • CLUSTER_NAME : 'düğüm1'


Bu docker-compose'taki Weaviate hizmeti, veri kalıcılığı için takılı birimleri kullanacak şekilde ayarlanmıştır; bu, verilerinizin oturumlar ve işlemler boyunca kalıcı olmasını sağlar.


Not: MinIO kovasının önceden mevcut olması gerekir, Weaviate kovayı sizin için oluşturmayacaktır.


Dağıtım Adımları

MinIO ve Weaviate'i Docker Compose kullanarak projenize entegre etmek için şu ayrıntılı prosedürü izleyin:


Docker Compose Dosyasını Kaydetme veya Güncelleme


  • Yeni Kurulum : Bu yeni bir kurulumsa, sağlanan docker-compose.yaml dosyasını doğrudan projenizin çalışma dizinine kaydedin. Bu dosya, hizmetlerin doğru şekilde yapılandırılması için kritik öneme sahiptir.


  • Mevcut Kurulum : Mevcut bir üretim ortamını güncelliyorsanız mevcut docker-compose.yaml dosyanızı yukarıda belirtilen ayarları yansıtacak şekilde değiştirin. Hizmetlerinize bağlanmak için bu ayarların doğru şekilde kopyalandığından emin olun.


Docker Compose Dosyasını Çalıştırma

Docker-compose.yaml dosyası yerleştirildikten sonra dağıtımı başlatmak için terminalinizde veya komut isteminizde aşağıdaki komutu kullanın:


docker-compose up -d --build


Bu komut, Weaviate servislerini bağımsız modda başlatacak ve onları sisteminizin arka planında çalıştıracaktır.


Kalıcı Dizinleri Anlamak

  • Derleme ve yürütme işlemi sırasında Docker Compose, docker-compose.yaml dosyasında belirtildiği gibi kalıcı bir dizin oluşturacaktır. Bu dizin ( Weaviate için ./weaviate/data ), verileri kalıcı olarak depolamak için kullanılır ve verilerinizin konteyner yeniden başlatmaları ve dağıtımları boyunca bozulmadan kalmasını sağlar.


Kalıcı depolama, kapsayıcı yeniden başlatıldığında verilerin kaybolmadığı daha kararlı bir ortam sağlar.


Docker-compose'unuzu dağıttıktan sonra, bir tarayıcıda Weaviate sunucunuzun URL'sini ziyaret edebilir ve ardından dağıtım yapılandırmalarınızın doğru olup olmadığını incelemek için /v1/meta ziyaret edebilirsiniz.


http://localhost:8080/v1/meta adresindeki JSON yükünün ilk satırı şöyle görünmelidir:


 {"hostname":"http://[::]:8080","modules":{"backup-s3":{"bucketName":"weaviate-backups","endpoint":"play.min.io:443","useSSL":true}...[truncated]...}


MinIO'yu Yapılandırma: weaviate-backups için Erişim Politikası Paketi

Weaviate'i MinIO ile entegre etmek için MinIO'daki yedekleme kümesinin, belirlenen yedekleme kümesinin ( weaviate-backups ) Herkese Açık Erişim Politikasına uygun şekilde ihtiyacı vardır. Bu ayarlama, Weaviate backup-s3 modülüne, yedekleme işlemleri için MinIO grubuyla başarılı bir şekilde etkileşimde bulunmak üzere gerekli izinleri vermek için gereklidir.


Weaviate-backups paketi Erişim Politikasını yapılandırma


Not: Bir üretim ortamında muhtemelen bunu kilitlemeniz gerekir; bu, bu eğitimin kapsamı dışındadır.


Bu yapılandırmaya, bir grubu " genel " olarak ayarlamanın güvenlik açısından doğuracağı sonuçları net bir şekilde anlayarak yaklaşmak çok önemlidir. Bu kurulum bir geliştirme ortamında yedekleme sürecini kolaylaştırırken, üretim sistemlerinde veri güvenliğini ve bütünlüğünü korumak için alternatif yaklaşımlar dikkate alınmalıdır. IAM politikaları veya " önceden imzalanmış " URL'ler gibi ayrıntılı erişim kontrollerinin kullanılması.



Weaviate yedekleme grubuna başarılı yedekleme



Bu gösterimin sonunda Weaviate'in backup-s3 modülünü kullanırken süreç boyunca oluşturduğu kova nesnelerini görebileceksiniz.

Python kullanarak Sürecin Ana Hatlarını Çıkarma

Weaviate'te S3 yedeklemelerini etkinleştirmek için docker-compose.yaml dosyanızda gerekli ortam değişkenlerini ayarlayın. Bu, Weaviate'i, yedekleme modülleri ve MinIO kova ayrıntıları için ayarları içeren, yedekleme hedefi olarak MinIO'yu kullanmaya yönlendirir.


Teknik işlemlere dalmadan önce, boru hattımızı burada bulabileceğiniz bir not defterine kapsüllemenin ek faydası için aşağıdaki adımları JupyterLab ortamında gösterdiğimi belirtmek isterim.


İlk adım, python için weaviate-client kütüphanesini pip ile kurarak ortamın kurulmasını içerir. Bu Python paketi, Weaviate'in RESTful API'si ile daha Pythonic bir şekilde arayüz oluşturmak için gereklidir ve şema oluşturma, veri indeksleme, yedekleme ve geri yükleme gibi işlemler için veritabanıyla kusursuz etkileşime olanak tanır. Gösterim için Weaviate Python istemci kitaplığının kullanımını göstereceğiz.


Bu gösteride Weaviate V3 API kullanıyoruz, böylece python betiğini çalıştırdığınızda aşağıdakine benzer bir mesaj görebilirsiniz:


 `DeprecationWarning: Dep016: You are using the Weaviate v3 client, which is deprecated. Consider upgrading to the new and improved v4 client instead! See here for usage: https://weaviate.io/developers/weaviate/client-libraries/python warnings.warn(`


Bu mesaj bir uyarı başlığıdır ve göz ardı edilebilir, daha fazla bilgi için burayı ziyaret edebilirsiniz. madde Weaviate blogunda.


Python Adımlarının Ana Hatları :


  1. weaviate-client Kitaplığını yükleyin
  2. İstemci başlatma
  3. Şema oluşturma
  4. Veri ekleme
  5. Yedekleme başlatma
  6. Veri restorasyonu


1. Weaviate-Client Kütüphanesinin Kurulumu

 !pip install weaviate-client


2. Makale ve Yazar için Şema Sınıflarını İçe Aktarma

Bu bölüm, 'Makale' ve 'Yazar' sınıfları için veri yapısını ve şemasını tanıtarak verilerin nasıl düzenleneceğinin temelini oluşturur. Weaviate içindeki şemanın programlı olarak nasıl tanımlanacağını ve yönetileceğini göstererek, Weaviate'in belirli uygulama ihtiyaçlarına göre uyarlanmış çeşitli veri modellerine uyum sağlama esnekliğini ve gücünü ortaya koyar.


 import weaviate client = weaviate.Client("http://localhost:8080") # Schema classes to be created schema = { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] } client.schema.delete_class('Article') client.schema.delete_class('Author') client.schema.create(schema)

Python: şema sınıfları oluşturun


3. Şema ve Verilerin Kurulumu

Şemayı tanımladıktan sonra not defteri, Weaviate istemcisinin başlatılması, Weaviate örneğinde şemanın oluşturulması ve verilerin indekslenmesi aşamalarında rehberlik eder. Bu süreç, veritabanını ilk veri kümeleriyle doldurarak Weaviate'in vektör arama yeteneklerinin araştırılmasına olanak tanır. Verileri vektörleştirilmiş formatta depolamak ve sorgulamak için Weaviate'ten yararlanmaya başlamak için gereken pratik adımları göstermektedir.


 # JSON data to be Ingested data = [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ] for item in data: client.data_object.create( data_object=item["properties"], class_name=item["class"] )

Python: verileri sınıfa göre indeksleme


4. Yedek Oluşturma

Verilerin indekslenmesiyle odak noktası, yedeklemeler aracılığıyla veritabanının durumunun korunmasına geçer. Dizüstü bilgisayarın bu bölümü MinIO'ya yedekleme işleminin nasıl tetikleneceğini gösterir.


 result = client.backup.create( backup_id="backup-id", backend="s3", include_classes=["Article", "Author"], # specify classes to include or omit this for all classes wait_for_completion=True, ) print(result)

Python: yedekleme oluştur


Beklemek:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id-2', 'path': 's3://weaviate-backups/backup-id-2', 'status': 'SUCCESS'}

Başarılı Yedekleme Yanıtı


5. Geri Yükleme Amaçlı Şema Sınıflarını Silme

Bir restorasyon işlemine devam etmeden önce bazen mevcut şemanın temizlenmesi gerekebilir. Bu bölümde temiz bir restorasyon işleminin adımları gösterilmektedir. Bu, geri yüklenen verilerin veritabanındaki mevcut şemalarla veya verilerle çakışmamasını sağlar.


 client.schema.delete_class("Article") client.schema.delete_class("Author")


6. Yedeklemeyi Geri Yükleme

Bu bölümde, önceden yedeklenen verilerin nasıl geri yükleneceği ve veritabanının bilinen iyi duruma nasıl getirileceği açıklanmaktadır.

 result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print(result)

Python: yedeklemeyi geri yükle


Beklemek:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Başarılı Yedekleme-S3 Yanıtı


Geri Yükleme Sırasında Hata İşleme

Not defterinin bu bölümü, yedekleme geri yükleme işlemi sırasında hata yönetiminin uygulanmasına ilişkin bir örnek sağlar. Veri geri yükleme işlemleri sırasında beklenmeyen sorunlara ilişkin bilgiler sunar.


 from weaviate.exceptions import BackupFailedError try: result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print("Backup restored successfully:", result) except BackupFailedError as e: print("Backup restore failed with error:", e) # Here you can add logic to handle the failure, such as retrying the operation or logging the error.



Beklemek:

 Backup restored successfully: {'backend': 's3', 'classes': ['Author', 'Article'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Başarılı Yedekleme Geri Yükleme


Geri Yükleme Başarısının Doğrulanması


Son olarak, yedekleme ve geri yükleme işleminin başarıyla tamamlandığını doğrulamak için not defterinde 'Makale' sınıfının şemasını almaya yönelik bir adım bulunur. Bu doğrulama, verilerin ve şemanın doğru şekilde geri yüklenmesini sağlar.


 client.schema.get("Article")

Article sınıfını JSON nesnesi olarak döndürür


Beklemek:

 {'class': 'Article', 'description': 'A class to store articles'... [Truncated]...}


Not defterinin her bölümü, Weaviate istemci kitaplığı kullanılarak Python ekosistemi içinde gerçekleştirilen, ilk kurulum ve veri popülasyonundan yedekleme, geri yükleme ve doğrulamaya kadar Weaviate'deki veri yönetiminin yaşam döngüsü hakkında kapsamlı bir kılavuz sağlar.


Curl kullanarak Sürecin Ana Hatlarını Belirleme

Şu ana kadar size bunu Pythonic yöntemle nasıl yapacağınızı gösterdik. Aynı işlemlerin bir komut dosyası yazmadan nasıl gerçekleştirilebileceğini CURL aracılığıyla dahili olarak göstermenin yararlı olacağını düşündük.


Şema oluşturma, verileri indeksleme, yedekleme yapma ve verileri geri yükleme gibi görevler için bir Weaviate örneğiyle etkileşim kurmak için belirli curl komutları kullanılabilir. Bu komutlar Weaviate'in REST API'sine HTTP isteklerinde bulunur. Örneğin, bir şema oluşturmak için Weaviate'in şema uç noktasına şema ayrıntılarını içeren bir POST isteği gönderilir. Benzer şekilde, verileri indekslemek için, nesnenin uç noktasına veri yükünü içeren bir POST isteği yapılır.


Yedeklemeler, yedekleme uç noktasına gönderilen bir POST isteği aracılığıyla tetiklenir ve geri yükleme, geri yükleme uç noktasına gönderilen bir POST isteği aracılığıyla yapılır. Bu işlemlerin her biri, genellikle @ sembolünü kullanarak curl komutunda bir dosya referansı olarak sağlanan uygun JSON yükünü gerektirir.


Weaviate'i uygulamak için elbette örnek verilere ihtiyacımız olacak;


Aşağıdakileri ekledim:


  1. schema.json indekslemek istediğimiz verinin yapısını ana hatlarıyla belirtir.

  2. data.json gerçek verilerimizin devreye girdiği yerdir, yapısı schema.json dosyasındaki sınıflarla uyumludur.


Schema.json ve data.json dosyaları, MinIO blog varlıkları deposunda mevcuttur. Burada .


schema.json


 { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] }

Makale ve Yazar için örnek şema sınıfları


schema.json dosya, indekslenecek verinin yapısını ana hatlarıyla belirtir, sınıfları, özellikleri ve veri türlerini detaylandırır, Weaviate içinde verilerin nasıl organize edileceğine ve etkileşime geçileceğine ilişkin aşamayı etkili bir şekilde ayarlar. Bu şema, yapay zekanın gelen verileri anlaması ve kategorilere ayırması için bir plan görevi görerek vektör arama motorunun hassas ve alakalı bir şekilde çalışabilmesini sağlar.


Öte yandan, veri.json dosya bu şemayı gerçek veri örnekleriyle doldurarak gerçek dünyadaki uygulamaları ve senaryoları yansıtır. Bu örnek veriler, Weaviate'in arama yeteneklerinin potansiyelini aydınlatarak, sorguların nasıl çözüldüğünü ve yapay zekanın içerik anlayışına dayalı olarak sonuçların dinamik olarak nasıl oluşturulduğunu gösteren uygulamalı bir deneyim sunar.


veri.json


 [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ]

Makaleleri içeren örnek veriler


Curl ile ayarlama

Şema, veri yönetimi sistemimizin yapısal omurgası görevi görerek verilerin nasıl organize edildiğini, indekslendiğini ve sorgulandığını tanımlar.


Weaviate Şeması Oluşturma

Basit bir curl komutuyla ve yerel olarak mevcut çalışma dizinimize klonlanmış örnek dosyalarımızla; Verilerimizin uyacağı kuralları ve ilişkileri belirleyerek schema.json'umuzu doğrudan Weaviate'e gönderebiliriz.


 curl -X POST -H "Content-Type: application/json" \ --data @schema.json http://localhost:8080/v1/schema

CURL: oluştur


Şemayı Doldurma: Verileri Dizine Ekleme

Şemamız hazır olduğunda, bir sonraki adım onu gerçek verilerle doldurmayı içerir. Başka bir curl komutu kullanarak data.json dosyamızı şemaya indeksliyoruz.


 curl -X POST -H "Content-Type: application/json" \ --data @data.json http://localhost:8080/v1/objects

CURL: dizin


Veri Dayanıklılığının Sağlanması: MinIO ile Yedekleme

Benzersiz bir tanımlayıcı veya "yedek kimlik" atamamız gerekecek. Bu tanımlayıcı, yalnızca yedekleme kümelerinin hassas şekilde izlenmesini ve alınmasını kolaylaştırmakla kalmaz, aynı zamanda her veri kümesinin sürüm kontrollü olmasını da sağlar.


 curl -X POST 'http://localhost:8080/v1/backups/s3' -H 'Content-Type:application/json' -d '{ "id": "backup-id", "include": [ "Article", "Author" ] }'

CURL: yedekleme-s3


Beklemek:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Başarılı Yedekleme-S3 Yanıtı


Bu çıktı bir JSON nesnesi olarak biçimlendirilmiştir. Kullanılan arka ucu (bu durumda 's3' ), yedeklemeye dahil edilen sınıfların listesini ( 'Article' , 'Author' ), yedeklemeye verilen benzersiz tanımlayıcı kimliğini ( 'backup-id' ) içerir. , yedeğin S3 klasöründe nerede depolandığını gösteren yol ( s3://weaviate-backups/backup-id ) ve işlemin durumu ( 'SUCCESS' ).


Bu yapılandırılmış yanıt, yalnızca yedekleme sürecinin başarıyla tamamlandığını doğrulamakla kalmaz, aynı zamanda gelecekte referans, denetim veya geri yükleme süreçleri için kullanılabilecek temel bilgileri de sağlar.


Veri Restorasyon Süreci

Weaviate ekosistemindeki verilerin geri yüklenmesi, backup-id tarafından tanımlanan /v1/backups/s3/backup-id/restore uç noktasını hedefleyen bir POST isteği yoluyla yapılandırılmış bir API çağrısı yoluyla kolaylaştırılır. Bu kıvrılma çağrısı yalnızca kaybolan veya arşivlenen verileri geri yüklemekle kalmaz, aynı zamanda sürekliliği korumanıza da olanak tanır.


 curl -X POST 'http://localhost:8080/v1/backups/s3/backup-id/restore' \ -H 'Content-Type:application/json' \ -d '{ "id": "backup-id", "exclude": ["Author"] }'

CURL: geri yükleme


Beklemek:

 { "backend": "s3", "classes": ["Article"], "id": "backup-id", "path": "s3://weaviate-backups/backup-id", "status": "SUCCESS" }

Başarılı restorasyon yanıtı


Bu komutların her biri, özel kurulumunuza ve gereksinimlerinize göre uyarlanmalıdır. Uç nokta URL'lerini, veri dosyası yollarını ve diğer parametreleri gerektiği gibi değiştirmeniz gerekebilir. Ayrıca gerekli dosyaların (schema.json, data.json) ve yapılandırmaların ortamınızda mevcut olduğundan emin olun.

Weaviate Hakkında Ek Notlar

GitOps ile otomasyonlar

Ekipler her şeyi Git'te kodlayarak değişiklikleri kolayca izleyebilir, önceki durumlara geri dönebilir ve ortamlar arasında tutarlılık sağlayabilir. GitOps iş akışları, sürekli entegrasyon/sürekli dağıtım (CI/CD) araçları ve Kubernetes ile entegre edilebilir, böylece konteynerleştirilmiş uygulamaların ve altyapı yönetiminin orkestrasyonu daha da basitleştirilir. GitOps kullanarak nasıl otomatikleştirme yapılacağına dair gelecekteki bir gönderide ayrıntılara gireceğiz.

Kısmi Yedeklemeler ve Geri Yüklemeler

Weaviate, kısmi veri geçişi veya geliştirme testi gibi durumlar için yararlı olan belirli sınıfların yedeklenmesine veya geri yüklenmesine olanak tanır.


Çok Düğümlü Yedeklemeler: Özellikle Kubernetes ortamlarındaki çok düğümlü kurulumlar için, yapılandırmanızın yedekleme modülünü (MinIO için backup-s3 gibi) ve ilgili ortam değişkenlerini doğru şekilde belirttiğinden emin olun.

Sorun giderme

Yedekleme veya geri yükleme sırasında sorunlarla karşılaşırsanız, özellikle MinIO gibi S3 uyumlu depolamaya yönelik SSL ayarlarıyla ilgili olarak ortam değişkeni yapılandırmalarınızı kontrol edin. SSL'yi devre dışı bırakmak ( BACKUP_S3_USE_SSL: false ) bazı bağlantı sorunlarını çözebilir.

Weaviate için MinIO ile Sağlam ve Ölçeklenebilir Yedekleme Çözümü

Docker Compose kullanarak Weaviate'i MinIO ile entegre etmeye yönelik bu araştırmayı tamamladığımızda, bu kombinasyonun yalnızca teknik bir çözüm değil, aynı zamanda veri yönetimine yönelik stratejik bir iyileştirme olduğu açıktır. Bu entegrasyon, MinIO'nun artık Weaviate'in yapay zeka odaklı yetenekleriyle güçlendirilen ölçeklenebilir, güvenli ve yüksek performanslı veri depolama çözümleri sağlama taahhüdüyle mükemmel bir şekilde uyum sağlıyor. Docker Compose'un kullanımı bu entegrasyonu daha da kolaylaştırıyor ve karmaşık teknolojileri erişilebilir ve yönetilebilir hale getirmeye odaklandığımızı vurguluyor.


MinIO ekibi her zaman olduğu gibi veri yönetimi alanında yeniliği teşvik etmeye kararlıdır. Verilerin depolanma, erişilme ve analiz edilme şeklini geliştirmeye ve kolaylaştırmaya olan bağlılığımız misyonumuzun temelinde yer almaktadır.


Weaviate'in gelişmiş vektör veritabanı yeteneklerini MinIO tarafından sağlanan güçlü depolama çözümleriyle bir araya getirerek kullanıcılar, verilerinin tüm potansiyelini ortaya çıkarma yetkisine sahip oluyor. Bu, yalnızca verilerin erişilebilirliğini değil aynı zamanda temel düzeyde güvenliğini de sağlayan anlamsal arama işlevlerinden yararlanmayı içerir.


Sizin gibi kendini adamış ve tutkulu geliştiricilerin akıllarından çıkan olağanüstü yeniliklerden gerçekten ilham alıyoruz. Desteğimizi sunmak ve gelişmiş çözümleri keşfetme ve veri odaklı projelerinizde yeni zirvelere ulaşma yolculuğunuzun bir parçası olmak bizi heyecanlandırıyor. Lütfen bizimle iletişime geçmekten çekinmeyin Gevşek , sorularınız varsa veya sadece merhaba demek istiyorsanız.