Açık kaynaklı bir sütunlu veri formatı olan Lance'i temel alan LanceDB, onu AI/ML için çekici kılan bazı ilginç özelliklere sahiptir. Örneğin LanceDB, çeşitli veri türlerini işleme yeteneği ile açık ve örtülü vektörleştirmeyi destekler. LanceDB, aşağıdakiler gibi önde gelen makine öğrenimi çerçeveleriyle entegredir:
LanceDB, S3 uyumlu nesne depolama alanındaki verileri sorgulama yeteneğine sahiptir. Bu kombinasyon, yüksek performanslı, ölçeklenebilir ve bulutta yerel ML veri depolama ve alma sistemleri oluşturmak için idealdir. MinIO, çeşitli donanım, konum ve bulut ortamlarında performansı ve benzersiz esnekliği denklemin içine katarak bu tür dağıtımlar için doğal bir seçim haline getiriyor.
Bu eğitimi tamamladıktan sonra, herhangi bir veri sorunuyla mücadele etmek için LanceDB ve MinIO'yu kullanmaya hazır olacaksınız.
Onun bir tanesi
LanceDB gibi vektör veritabanları, verimli özellikleri sayesinde yapay zeka ve makine öğrenimi uygulamaları için belirgin avantajlar sunar.
Doğal Dil İşleme (NLP):
Anlamsal Arama: Yalnızca anahtar kelimelere göre değil, anlamlara göre sorguya benzer belgeleri veya pasajları bulun. Bu, chatbot yanıtlarını, kişiselleştirilmiş içerik önerilerini ve bilgi erişim sistemlerini güçlendirir.
Soru Yanıtlama: Anlamsal benzerliğe dayalı olarak ilgili metin pasajlarını bularak karmaşık soruları anlayın ve yanıtlayın.
Konu Modelleme: Büyük metin koleksiyonlarındaki gizli konuları keşfedin; belge kümeleme ve trend analizi için kullanışlıdır.
Bilgisayar görüşü:
Resim ve Video Erişimi: İçerik tabanlı görsel alımı, ürün arama ve video analizi için çok önemli olan görsel içeriğe dayalı benzer görselleri veya videoları arayın.
Nesne Algılama ve Sınıflandırma: Benzer eğitim verilerini verimli bir şekilde alarak nesne algılama ve sınıflandırma modellerinin doğruluğunu artırın.
Video Önerisi : Daha önce izlenen videoların görsel içeriklerine göre benzer videolar önerin.
Piyasadaki çok sayıda vektör veri tabanı arasında LanceDB, S3 uyumlu depolamada sorgulamayı desteklediği için yapay zeka ve makine öğrenimi için özellikle uygundur. Verileriniz her yerde, veritabanınız da her yerde olmalı.
MinIO'yu LanceDB ile kullanmak aşağıdakiler de dahil olmak üzere çeşitli avantajlar sunar:
MinIO ve LanceDB'nin birleşimi, büyük ölçekli makine öğrenimi veri kümelerini yönetmek ve analiz etmek için yüksek performanslı, ölçeklenebilir, bulutta yerel bir çözüm sağlar.
Bu öğreticiyi takip etmek için şunları kullanmanız gerekecek:
Aşağıdaki komutu çalıştırarak Docker Compose'un kurulu olduğundan emin olun:
docker compose version
Ayrıca Python'u da kurmanız gerekecek. Python'u şuradan indirebilirsiniz:
İsteğe bağlı olarak Sanal Ortam oluşturmayı seçebilirsiniz. Bağımlılıkları yalıtmak için sanal bir ortam oluşturmak iyi bir uygulamadır. Bunu yapmak için bir terminal açın ve şunu çalıştırın:
python -m venv venv
Sanal ortamı etkinleştirmek için:
Windows'ta:
.\venv\Scripts\activate
MacOS/Linux'ta:
source venv/bin/activate
Projeyi klonlayarak başlayın
docker-compose up minio
Bu MinIO konteynerini başlatacaktır. ' adresine gidebilirsiniz
Kullanıcı adı ve şifre minioadmin:minioadmin
ile giriş yapın.
Daha sonra, lance
adında bir MinIO paketi oluşturmak için aşağıdaki komutu çalıştırın.
docker compose up mc
Bu komut bir dizi işlemi gerçekleştirir
İşte her komutun bir dökümü:
ta ki (/usr/bin/mc config host minio ekle http://minio:9000 minioadmin minioadmin) echo '...bekliyor...' && uyku 1 yapana kadar; bitti ;: Bu komut, başarılı olana kadar sürekli olarak minio
adlı bir MinIO ana bilgisayarını belirtilen parametrelerle (uç nokta, erişim anahtarı ve gizli anahtar) yapılandırmaya çalışır. Her denemede bir bekleme mesajı yankılanır ve 1 saniye duraklar.
/usr/bin/mc rm -r --force minio/lance;: Bu komut, MinIO'daki lance
kovasındaki tüm içeriği zorla kaldırır (siler).
/usr/bin/mc mb minio/lance; : Bu komut MinIO'da lance
adında yeni bir kova oluşturur.
/usr/bin/mc politika seti genel minio/lance; : Bu komut, lance
kovasının politikasını genel olarak ayarlayarak genel okuma erişimine izin verir.
çıkış 0; : Bu komut, betiğin başarılı yürütmeyi gösteren 0 durum koduyla çıkmasını sağlar.
Ne yazık ki, LanceDB'nin yerel S3 desteği yoktur ve sonuç olarak, yaptığınız MinIO konteynerine bağlanmak için boto3 gibi bir şey kullanmanız gerekecektir. LanceDB olgunlaştıkça, kullanıcı deneyimini daha iyi hale getirecek yerel S3 desteğini sabırsızlıkla bekliyoruz.
Aşağıdaki örnek komut dosyası başlamanıza yardımcı olacaktır.
Gerekli paketleri pip kullanarak yükleyin. Aşağıdaki içeriğe sahip gereksinimleri.txt adlı bir dosya oluşturun:
lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9
Daha sonra paketleri yüklemek için aşağıdaki komutu çalıştırın:
pip install -r requirements.txt
MinIO kapsayıcısını oluşturma yönteminiz yukarıda belirtilenden farklıysa kimlik bilgilerinizi değiştirmeniz gerekecektir.
Aşağıdaki betiği bir dosyaya kaydedin, örneğin lancedb_script.py
.
import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()
Bu komut dosyası, rastgele oluşturulmuş verilerden bir Lance tablosu oluşturacak ve bunu MinIO klasörünüze ekleyecektir. Yine, bir paket oluşturmak için önceki bölümdeki yöntemi kullanmazsanız, betiği çalıştırmadan önce bunu yapmanız gerekecektir. Yukarıdaki örnek komut dosyasını MinIO grubunuza verdiğiniz adla eşleşecek şekilde değiştirmeyi unutmayın.
Son olarak, komut dosyası tabloyu MinIO'dan çıkarmadan açar ve bir arama yapmak ve sonuçları yazdırmak için Pandaları kullanır.
Komut dosyasının sonucu aşağıdakine benzer görünmelidir. Verilerin kendisinin her seferinde rastgele oluşturulduğunu unutmayın.
vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407
Performanslı, ölçeklenebilir ve geleceğe yönelik ML/AI mimarileri oluşturmak için bu eğitimde sunulan bu temeli temel almanın birçok yolu vardır. Cephaneliğinizde iki son teknoloji ve açık kaynaklı yapı bloğu var: MinIO nesne depolama ve LanceDB vektör veritabanı. Bunu ML/AI'ye kazanan biletiniz olarak düşünün
Burada durma. LanceDB geniş bir ürün yelpazesi sunuyor
Lütfen bize ne inşa ettiğinizi gösterin ve asil arayışınızda rehberliğe ihtiyacınız olursa [email protected] adresinden bize e-posta göndermekten veya yuvarlak masamıza katılmaktan çekinmeyin.