CocoIndex mendukung QdrantNativitas- integrasi ini menampilkan tumpukan Rust berkinerja tinggi dengan pengolahan incremental end-to-end untuk skala dan kesegaran data. 🎉 Kami baru saja meluncurkan perubahan terbaru kami yang menanganiautomatic target schema setupdengan Qdrant dari CocoIndex indexing flow.
Itu berarti, pengembang tidak perlu melakukan pengaturan skema apa pun - termasuk pengaturan tabel, jenis bidang, kunci dan indeks untuk toko target. pengaturan ini adalah hasil dari inferensi skema dari definisi aliran CocoIndex. Ini sudah didukung dengan integrasi asli dengan Postgres, Neo4j, dan Kuzu. Ini memungkinkan operasi yang lebih lancar antara toko indeks dan target.
Tidak ada lagi manual
Sebelumnya, pengguna harus membuat koleksi secara manual sebelum mengindeks:
curl -X PUT 'http://localhost:6333/collections/image_search' \
-H 'Content-Type: application/json' \
-d '{
"vectors": {
"embedding": {
"size": 768,
"distance": "Cosine"
}
}
}'
Dengan perubahan baru, pengguna tidak perlu melakukan manajemen koleksi manual.
Bagaimana itu bekerja
Mengikuti model pemrograman alur data, pengguna mendefinisikan alur, di mana setiap langkah memiliki informasi jenis data output, dan setup berikutnya mengambil informasi jenis data.Contohnya(~ 100 baris Python dari akhir ke akhir)
Singkatnya, dapat disajikan sebagai graf garis berikut.
Dalam deklaratif dataflow seperti di atas
Target = Formulir (sumber)
Definisi satu aliran mendorong pemrosesan data (termasuk pengolahan perubahan) dan pengaturan skema target—menyediakan satu sumber kebenaran untuk kedua data dan skema.Jenis Inferensi(Sebagai contohnya Rust)
Dalam aliran indeks, mengekspor embeddings dan metadata langsung ke Qdrant adalah semua yang Anda butuhkan.
doc_embeddings.export(
"doc_embeddings",
cocoindex.storages.Qdrant(collection_name=QDRANT_COLLECTION),
primary_key_fields=["id"],
)
Untuk menjalankan proses CocoIndex, pengguna harus terlebih dahulu menjalankan setup, yang mencakup semua setup yang diperlukan untuk backend apa pun yang dibutuhkan.
cocoindex setup main.py
cocoindex setup
- Buat backend baru untuk pengaturan skema, seperti tabel/koleksi/etc.
- Ubah backend yang ada dengan perubahan skema - itu akan mencoba untuk melakukan pembaruan non-destruktif jika mungkin, misalnya kunci utama tidak berubah dan dukungan penyimpanan target pembaruan skema di tempat (misalnya ALTER TABLE di Postgres), jika tidak drop dan recreate.
- Tinggalkan stale backend.
Pengembang kemudian berlari
cocoindex update main.py [-L]
untuk memulai pipa indeksasi (-L untuk berjalan panjang).
Jika Anda telah membuat pembaruan logika yang mengharuskan skema di target store untuk diperbarui, jangan khawatir.cocoindex update
setelah pembaruan logika. CocoIndex akan menyimpulkan skema untuk toko target.cocoindex setup
Sebagai pilihan desain, CocoIndex tidak akan memperbarui skema apa pun tanpa pemberitahuan Anda, karena beberapa pembaruan skema mungkin melibatkan perubahan yang merusak.
Untuk melepaskan aliran, Anda akan berlari
cocoindex drop main.py
cocoindex drop
Menghilangkan kerusakan pada saat buang air besar.
Semua entitas backend untuk target store – seperti tabel PostgreSQL atau koleksi Qdrant – dimiliki oleh aliran sebagai data derivatif, sehingga akan ditinggalkan juga.
Mengapa harus menggunakan Schema Target Automatic?
Pertanyaannya harus benar-benar, mengapa tidak?
Cara tradisional adalah pengguna sepenuhnya mengertiKetikadanBagaimanauntuk mengatur / memperbarui skema target sendiri, termasuk skema spesifik. aliran indeks sering meliputi beberapa sistem.
Untuk target toko:
- Basis data vektor (PGVector, Qdrant, dll)
- Pembuatan database relasional (PostgreSQL)
- Database grafis (Neo4j, Kuzu dll)
Jenis data yang Anda keluarkan dan skema target Anda harus cocok.
Jika ada pelacakan status internal, misalnya, dalam kasus pemrosesan incremental
- Tabel internal (tracking negara)
Ini membosankan dan menyakitkan untuk melakukan ini secara manual, karena semua sistem ini harus setuju tentang skema dan struktur.
- Mengatur dan menyinkronkan skema secara manual.
- Koordinasi yang erat antara pengembang, DevOps, dan insinyur data - orang yang menulis kode mungkin bukan orang yang sama mengimplementasikannya / menjalankan di dalam organisasi.
- Memecahkan kesalahpahaman antara logika aliran dan lapisan penyimpanan.
- Produksi rollout biasanya stres.
Setiap penambahan bagian bergerak ke sistem pipa indeksasi menambahkan gesekan - setiap ketidaksesuaian antara logika dan skema penyimpanan dapat mengakibatkan kegagalan diam atau bug halus.
- Dalam beberapa kasus itu bukan kegagalan diam. kegagalan harus jelas, misalnya jika pengguna lupa untuk membuat tabel atau koleksi, itu hanya akan kesalahan ketika menulis ke target.
- Beberapa skenario lain dapat menyebabkan masalah yang tidak jelas, yaitu keluar dari sinkronisasi antara penyimpanan untuk keadaan internal dan target. misalnya pengguna dapat menurunkan aliran dan mereproduksi, tetapi tidak melakukannya untuk target; atau turun dan mereproduksi target, tetapi tidak melakukannya untuk penyimpanan internal.
Perubahan terus-menerus pada sistem memperkenalkan rasa sakit yang terus-menerus dalam produksi.Setiap kali aliran data diperbarui, skema target harus berevolusi bersama – membuatnyaTidakproses yang membosankan sekali, tetapi sumber gesekan yang berkelanjutan.
Dalam sistem data dunia nyata, bidang baru sering perlu diindeks, yang lama menjadi berkurang, dan transformasi berevolusi.Jika jenis berubah, skema harus beradaptasi.Perubahan ini memperbesar kompleksitas dan menekankan kebutuhan untuk infrastruktur yang lebih resilien dan dapat disesuaikan.
Infrastruktur indeksasi membutuhkan konsistensi data antara pipa indeksasi dan toko target, dan semakin tipis ujungnya, semakin mudah dan lebih kuat akan menjadi.
Visi kami: Declarative, Flow-Based Indexing
Ketika kami memulai CocoIndex, visi kami adalah untuk memungkinkan pengembang untuk mendefinisikan transformasi data dan logika indeks secara deklaratif – dan CocoIndex melakukan sisanya.automatic schema setup.
Kami berkomitmen untuk merawat infrastruktur yang mendasarinya, sehingga pengembang dapat fokus pada apa yang penting: data dan logika.Kami serius ketika kami mengatakan, Anda dapat memiliki pipa data siap produksi untuk AI dengan ~100 baris kode Python.
Jika Anda pernah berjuang untuk menjaga logika indeks dan pengaturan penyimpanan Anda sinkron - kami telah ada di sana.