CocoIndex podržava Qdrant - integracija sadrži visokoučinkoviti Rust stack s inkrementalnom obradom od kraja do kraja za skalu i svježinu podataka. 🎉 Upravo smo predstavili našu najnoviju promenu koja se bavi sa Qdrant iz CocoIndex indeksiranje toka. Nativno automatic target schema setup To znači da programeri ne moraju raditi nikakvu postavku sheme - uključujući postavljanje tabele, tip polja, ključeve i indeks za ciljne trgovine. Setup je rezultat sheme inference iz definicije CocoIndex toka. To je već podržano s nativnom integracijom sa Postgres, Neo4j, i Kuzu. To omogućava glatkije rad između indeksiranja i ciljnih trgovina. Nema više ručnog podešavanja Ranije, korisnici su morali ručno kreirati kolekciju prije indeksiranja: curl -X PUT 'http://localhost:6333/collections/image_search' \ -H 'Content-Type: application/json' \ -d '{ "vectors": { "embedding": { "size": 768, "distance": "Cosine" } } }' S novim promjenama, korisnik ne mora obavljati nikakvo ručno upravljanje zbirkom. Kako funkcioniše U skladu sa modelom programiranja toka podataka, korisnik definira tok, gde svaki korak ima informacije o tipu podataka izlaza, a sljedeće podešavanje uzima informacije o tipu podataka. (~ 100 linija Pythona od kraja do kraja) Primer Ukratko, može se predstaviti kao sledeći graf linije. U deklarativnom toku podataka kao gore Cilj = formula (izvor) Ona podrazumijeva i podatke i očekivani ciljanu shemu. Jedinstvena definicija toka pokreće i obradu podataka (uključujući rukovanje promjenama) i postavljanje ciljanih shema – pružajući jedinstveni izvor istine za podatke i shemu. Sličan način razmišljanja o tome je poput tipskih sistema koji zaključuju tip podataka od operatera i ulazaka - (npr. u vezi sa smirenjem Vrste inferencije U toku indeksiranja, izvoz ugrađenosti i metapodataka direktno u Qdrant je sve što vam je potrebno. doc_embeddings.export( "doc_embeddings", cocoindex.storages.Qdrant(collection_name=QDRANT_COLLECTION), primary_key_fields=["id"], ) Da bi pokrenuli proces CocoIndex, korisnici moraju prvo pokrenuti instalaciju, koja pokriva sve potrebne instalacije za bilo koje potrebne backendove. cocoindex setup main.py cocoindex setup Kreirajte nove backendove za podešavanje sheme, kao što su tabele / kolekcije / itd. Promijenite postojeće backendove sa promjenom sheme - pokušaće da napravi nedestruktivno ažuriranje ako je moguće, npr. primarni ključevi se ne mijenjaju i ciljna podrška za skladištenje podržava ažuriranje sheme na licu mesta (npr. ALTER TABLE u Postgres), inače se spušta i reciklira. Uklonite stale backends. Proizvođači zatim trče cocoindex update main.py [-L] pokrenuti indeksiranje cjevovoda (-L za dugotrajno trčanje). Ako ste napravili logičke ispravke koje zahtijevaju ažuriranje sheme u ciljnoj prodavnici, ne brinite. opet nakon ažuriranja logike. CocoIndex će zaključiti shemu za ciljnu prodavnicu. kao izbor dizajna, CocoIndex neće ažurirati bilo koju shemu bez vaše obavijesti, jer neka ažuriranje sheme može uključivati destruktivne promene. cocoindex update cocoindex setup Da biste spustili tok, trčali biste cocoindex drop main.py Spušta zadnje završetke kada ispušta tok. cocoindex drop Svi backend entiteti za ciljne trgovine - kao što su PostgreSQL tabela ili Qdrant kolekcija - su u vlasništvu toka kao izvedenih podataka, tako da će biti odbačeni. Zašto automatski cilja shema inferencija? Pitanje bi stvarno trebalo biti, zašto ne? Tradicionalni način je da korisnici u potpunosti shvate i za podešavanje / ažuriranje ciljne sheme, uključujući specifičnu shemu. tokovi indeksiranja često obuhvaćaju više sistema. Na primjer: Kada Kako Na ciljnoj prodavnici: Vektorske baze podataka (PGVector, Qdrant itd.) Relativne baze podataka (PostgreSQL) Grafičke baze podataka (Neo4j, Kuzu itd.) Vrste podataka koje izlažete i ciljni raspored moraju se podudarati. Ako postoji interno praćenje stanja, npr. u slučaju inkrementalne obrade Interne tabele (Status tracking) To je dosadno i bolno da to radite ručno, jer svi ovi sustavi moraju da se slažu o shemi i strukturi. Ručno postavljanje i sinhronizacija shema. Usklađena koordinacija između programera, DevOps-a i inženjera podataka - ljudi koji pišu kod možda nisu isti ljudi koji ga implementiraju / pokreću u organizaciji. Debugging poremećaja između logike protoka i slojeva skladištenja. Rolout proizvodnje je obično stresan. Svako dodavanje pokretnih dijelova u indeksni sistem cijevi dodaje trenje - bilo kakvo neusklađenost između logike i sheme skladištenja moglo bi rezultirati tihim neuspjesima ili suptilnim greškama. U nekim slučajevima to nije tihi neuspeh. neuspeh bi trebao biti očigledan, npr. ako korisnici zaborave da kreiraju tabelu ili kolekciju, to će samo pogrešiti prilikom pisanja cilju. Neki drugi scenariji mogu dovesti do ne očiglednih problema, tj. iz sinhronizacije između skladištenja za unutarnja stanja i cilja. npr. korisnici mogu spustiti protok i reproducirati, ali ne i za cilj; ili spustiti i reproducirati cilj, ali ne i za unutarnje skladištenje. Kontinuirane promjene u sistemu uvode uporne bolove u proizvodnju. Svaki put kada se tok podataka ažurira, ciljna shema mora evoluirati zajedno – čineći je Jednom dosadan proces, ali kontinuirani izvor trenja. Ne U realnim sistemima podataka, nova polja često trebaju indeksiranje, stara polja se depreciraju, a transformacije se razvijaju. Ako se tip promijeni, shema se mora prilagoditi. Indeksacijska infrastruktura zahtijeva dosljednost podataka između indeksacijskog kanala i ciljnih skladišta, a što su krajevi manji, to će biti lakše i robusnije. Naša vizija: Deklarativno, indeksiranje zasnovano na protokovima Kada smo pokrenuli CocoIndex, naša vizija je bila omogućiti programerima da deklarativno definiraju transformaciju podataka i logiku indeksiranja – a CocoIndex radi ostatak. . automatic schema setup Mi smo posvećeni brini o temeljnoj infrastrukturi, tako da programeri mogu da se fokusiraju na ono što je važno: podatke i logiku. Ako ste se ikada borili sa održavanjem vaše logike indeksiranja i podešavanja skladišta u sinhronizaciji - mi smo bili tamo.