CocoIndex Qdrant destekliyorDoğal- entegrasyon, ölçek ve veri tazeliği için end-to-end artan işleme ile yüksek performanslı bir Rust stack'a sahiptir. 🎉 Son olarak en son değişimimizi yayınladık.automatic target schema setupCocoIndex indeksleme akışı ile Qdrant.
Bu, geliştiricilerin tablo, alan türü, hedef mağazalar için anahtarlar ve indeks ayarlamaları da dahil olmak üzere herhangi bir şema ayarlaması yapmak zorunda kalmadığı anlamına gelir. Bu ayarlama, CocoIndex akış tanımından şema inferansının sonucudur. Postgres, Neo4j ve Kuzu ile yerel entegrasyon ile zaten desteklenmektedir. Bu, endeksleme ve hedef mağazalar arasında daha sorunsuz bir çalışma sağlar.
Artık manuel kurulum yok
Daha önce, kullanıcılar indeksleme yapmadan önce koleksiyonu manuel olarak oluşturmak zorunda kaldılar:
curl -X PUT 'http://localhost:6333/collections/image_search' \
-H 'Content-Type: application/json' \
-d '{
"vectors": {
"embedding": {
"size": 768,
"distance": "Cosine"
}
}
}'
Yeni değişiklik ile, kullanıcı herhangi bir manuel toplama yönetimi yapmak zorunda değildir.
nasıl çalışır
Veri akışı programlama modeli uyarınca, kullanıcı bir akış tanımlar, her adımın çıkış veri türü bilgisi vardır ve bir sonraki kurulum veri türü bilgisi alır.Örnek(~100 Python çizgi sonuna kadar)
Kısacası, aşağıdaki çizgi grafik olarak sunulabilir.
Yukarıda belirtildiği gibi veri akışı
Hedef = Formül ( Kaynak )
Bu, hem verileri hem de beklenen hedef şeması anlamına gelir. Tek bir akış tanımı hem veri işleme (değişiklik işleme dahil) hem de hedef şeması kurulumunu yönlendirir - hem veriler hem de şemalar için tek bir gerçeğin kaynağı sağlar. hakkında düşünmenin benzer bir yolu, operatörlerden ve girişlerden veri türünü varsayan tip sistemler gibidir.Tipi InferansÖrneğin Rust
Endeksleme akışında, entegre ve metadata doğrudan Qdrant'a aktarmanız gereken tek şey budur.
doc_embeddings.export(
"doc_embeddings",
cocoindex.storages.Qdrant(collection_name=QDRANT_COLLECTION),
primary_key_fields=["id"],
)
Bir CocoIndex işlemi başlatmak için, kullanıcıların önce gerekli tüm arka uçlar için gerekli tüm kurulumları kapsayan kurulumunu çalıştırmaları gerekir.
cocoindex setup main.py
cocoindex setup
- Tablolar / koleksiyonlar / vb gibi şemayı ayarlamak için yeni arka uçlar oluşturun.
- Schema değişikliği ile mevcut arka kapakları değiştirin - mümkünse bir yıkıcı olmayan güncelleştirme yapmaya çalışacaktır, örneğin, ana anahtarlar değişmez ve yerel şemaya yönelik depolama desteği güncelleştirmesi (örneğin, Postgres'te ALTER TABLE), aksi takdirde düşer ve yeniden oluşturulur.
- Stale Backends’ı indirin
Geliştiriciler koşuyor
cocoindex update main.py [-L]
Bir indeksleme boru hattı başlatmak için (uzun sürüş için L).
Hedef mağazasının şemasını güncellemenizi gerektiren mantıksal güncellemeler yapmışsanız, endişelenmeyin.cocoindex update
CocoIndex, hedef mağazası için şemayı tahmin edecek.cocoindex setup
Tasarım seçeneği olarak, CocoIndex herhangi bir şemayi sizin bildiriminiz olmadan güncelleyemez, çünkü bazı şema güncelleştirmeleri yıkıcı değişiklikler içerebilir.
Bir akış bırakmak için, koşacaksın
cocoindex drop main.py
cocoindex drop
Düştüğünüzde akıntıya düşer.
Bir PostgreSQL tablosu veya bir Qdrant koleksiyonu gibi hedef depoları için tüm arka plan entiteleri akışın elde edilen veriler olarak mülkiyetindedir, bu nedenle de düşülecektir.
Neden Otomatik Hedef Planı Sonuçlama?
Gerçekten soru, neden olmasın?
Geleneksel yöntem kullanıcıların tam olarak anlayabilmesidirNe zamanvenasılBelirli şemayı da dahil olmak üzere hedef şemayı kendileri ayarlamak / güncelleştirmek için.
Hedef Mağazası için:
- Vektör veritabanları (PGVector, Qdrant vb.)
- İlişkisel Veritabanları (PostgreSQL)
- Grafik veritabanları (Neo4j, Kuzu vb.)
Çıkardığınız veri türleri ve hedef şeması eşleşmelidir.
Eğer herhangi bir iç durum izleme varsa, örneğin, artan işleme durumunda
- İç Tabelalar (State Tracking)
Bunu manuel olarak yapmak sıkıcı ve acı verici, çünkü tüm bu sistemler şemada ve yapıda aynı fikirde olmalıdır.
- Sistemlerin manuel kurulumu ve senkronizasyonu.
- Geliştiriciler, DevOps ve veri mühendisleri arasındaki sıkı koordinasyon - kod yazan insanlar bir organizasyonda dağıtmak / çalıştırmak için aynı kişiler olmayabilir.
- Akış mantığı ve depolama katmanları arasındaki düzensizliklerin düzeltilmesi.
- Üretim rolü tipik olarak streslidir.
Endeksleme boru hattı sistemine herhangi bir hareketli parçanın eklenmesi sürtünmeler ekler - mantık ve depolama şeması arasındaki herhangi bir çelişki sessiz başarısızlıklara veya ince hatalara neden olabilir.
- Bazı durumlarda sessiz başarısızlıklar değildir. başarısızlık açık olmalıdır, örneğin kullanıcılar bir tablo veya koleksiyon oluşturmayı unutmuşsa, hedefe yazarken sadece hata çıkarır.
- Bazı diğer senaryolar açık olmayan sorunlara yol açabilir, örneğin, iç durumlar için depolama ve hedef arasındaki senkronizasyondan çıkabilir. örneğin, kullanıcılar akışı bırakabilir ve yeniden oluşturabilir, ancak hedef için bunu yapmazlar; ya da hedef bırakabilir ve yeniden oluşturabilir, ancak iç depolama için bunu yapmazlar.
Bir sistemin sürekli değişiklikleri üretimde kalıcı acıya neden olur. her zaman bir veri akışı güncellenirken, hedef şeması bir arada gelişmelidir.HayırTek seferde sıkıcı bir süreç, ancak sürekli bir sürtünme kaynağı.
Gerçek dünyadaki veri sistemlerinde, yeni alanların genellikle endekslenmesi, eski alanların bozulması ve dönüşümlerin gelişmesi gerekir. Bir tür değişirse, şemaya uyum sağlaması gerekir.
Endeksleme altyapısı, endeksleme boru hattı ve hedef depolar arasında veri tutarlılığı gerektirir ve daha az gevşek sonlar, daha kolay ve daha sağlam olacaktır.
Vizyonumuz: açıklayıcı, akış tabanlı endeksleme
CocoIndex'i başlattığımızda, vizyonumuz geliştiricilerin veri dönüşümünü ve indeksleme mantığını açıklayıcı bir şekilde tanımlamalarına izin vermekti - ve CocoIndex gerisini yapıyordu.automatic schema setup.
Temel altyapıyı korumaya kararlıyız, böylece geliştiriciler önemli olanlara odaklanabilir: veriler ve mantık. ~ 100 satır Python kodu ile AI için üretime hazır veri boru hattına sahip olabileceğinizi söylediklerinde ciddiyiz.
Eğer indeksleme mantığını ve depolama kurulumunu eşit tutmakla uğraşmışsanız - biz oradaydık.