CocoIndex wspiera Qdrant - integracja charakteryzuje się wysokowydajnym stosem Rust z stopniowym przetwarzaniem od końca do końca dla skali i świeżości danych. 🎉 Właśnie wprowadziliśmy naszą najnowszą zmianę, która obsługuje z Qdrant z CocoIndex indeksowania przepływu. nativnie automatic target schema setup Oznacza to, że deweloperzy nie muszą wykonywać żadnej konfiguracji schematu - w tym konfiguracji tabeli, typu pola, kluczy i indeksu dla sklepów docelowych. Konfiguracja jest wynikiem inferencji schematu z definicji przepływu CocoIndex. Jest już obsługiwana z native integracją z Postgres, Neo4j i Kuzu. Brak więcej ręcznych ustawień Wcześniej użytkownicy musieli ręcznie utworzyć kolekcję przed indeksowaniem: curl -X PUT 'http://localhost:6333/collections/image_search' \ -H 'Content-Type: application/json' \ -d '{ "vectors": { "embedding": { "size": 768, "distance": "Cosine" } } }' Dzięki nowej zmianie użytkownik nie musi wykonywać żadnego ręcznego zarządzania zbiorem. Jak to działa Zgodnie z modelem programowania przepływu danych użytkownik definiuje przepływ, w którym każdy krok zawiera informacje o typie danych wyjściowych, a następne ustawienie zawiera informacje o typie danych. (~ 100 wierszy pythona od końca do końca) Przykład W skrócie, można go przedstawić jako następujący wykres liniowy. W deklaracyjnym przepływie danych, jak powyżej Cel = formuła (źródło) Oznacza to zarówno dane, jak i oczekiwany schemat docelowy. pojedyncza definicja przepływu napędza zarówno przetwarzanie danych (w tym zarządzanie zmianami) jak i konfigurację schematu docelowego – zapewniając jedno źródło prawdy zarówno dla danych, jak i schematu. (np. w przypadku spokoju Rodzaje inferencji W strumieniu indeksowania eksport osadzeń i metadanych bezpośrednio do Qdrant to wszystko, czego potrzebujesz. doc_embeddings.export( "doc_embeddings", cocoindex.storages.Qdrant(collection_name=QDRANT_COLLECTION), primary_key_fields=["id"], ) Aby uruchomić proces CocoIndex, użytkownicy muszą najpierw uruchomić ustawienie, które obejmuje wszystkie niezbędne ustawienia dla potrzebnych backendów. cocoindex setup main.py cocoindex setup Tworzenie nowych backendów dla konfiguracji schematu, takich jak tabele/zbiory/etc. Zmiana istniejących backendów ze zmianą schematu - będzie próbować dokonać aktualizacji niezniszczającej, jeśli to możliwe, np. klucze podstawowe nie ulegają zmianie i obsługa układu docelowego aktualizacja schematu na miejscu (np. ALTER TABLE w Postgres), w przeciwnym razie upuść i odtworzyć. Pozbądź się stałych backendów. Następnie deweloperzy biegają cocoindex update main.py [-L] Aby rozpocząć indeksowanie rurociągu (-L dla długiego biegu). Jeśli wprowadziłeś aktualizacje logiczne, które wymagają aktualizacji schematu w sklepie docelowym, nie martw się. ponownie po aktualizacji logiki. CocoIndex dowie się schematu dla sklepu docelowego. Aby przesunąć schemat do sklepu docelowego, który powiadomi Cię w CLI. Jako wybór projektu, CocoIndex nie zaktualizuje żadnego schematu bez powiadomienia, ponieważ niektóre aktualizacje schematu mogą wiązać się z destrukcyjnymi zmianami. cocoindex update cocoindex setup Aby rzucić strumień, biegniesz cocoindex drop main.py Wyrzucają się z powrotem, gdy upuszczają strumień. cocoindex drop Wszystkie jednostki backendowe do celowych magazynów – takie jak tabela PostgreSQL lub zbiór Qdrant – są własnością przepływu jako dane pochodne, więc zostaną również usunięte. Dlaczego automatyczne schematy docelowe? Pytanie naprawdę powinno być, dlaczego nie? Tradycyjnym sposobem jest w pełni zrozumieć użytkowników i aby ustawić / zaktualizować schemat docelowy samodzielnie, w tym konkretny schemat. przepływy indeksowania często obejmują wiele systemów. Kiedy jak W sklepie docelowym: Wektorowe bazy danych (PGVector, Qdrant itp.) Baza danych relacyjnych (PostgreSQL) Bazy danych graficznych (Neo4j, Kuzu itp.) Typy danych, które pobierasz i schemat docelowy muszą pasować. Jeśli istnieje śledzenie stanu wewnętrznego, np. w przypadku przetwarzania stopniowego Tabele wewnętrzne (śledzenie stanu) Jest to nudne i bolesne, gdy robisz to ręcznie, ponieważ wszystkie te systemy muszą zgodzić się na schemat i strukturę. Ręczne konfigurowanie i synchronizacja schematów. Ścisła koordynacja między deweloperami, DevOps i inżynierami danych - ludzie, którzy piszą kod, mogą nie być tymi samymi ludźmi, którzy go wdrażają / uruchamiają w organizacji. Debugowanie nierównowagi między logiką przepływu a warstwami przechowywania. Przebieg produkcji jest zazwyczaj stresujący. Każde dodanie ruchomych części do układu indeksującego dodaje tarcia – wszelkie niezgodności między logiką a schematem przechowywania mogą prowadzić do cichych awarii lub subtelnych błędów. W niektórych przypadkach nie jest to cicha porażka.Niepowodzenie powinno być oczywiste, np. jeśli użytkownicy zapomnieli utworzyć tabelę lub kolekcję, po prostu popełni błąd podczas pisania do celu. Niektóre inne scenariusze mogą prowadzić do nie oczywistych problemów, tj. brak synchronizacji między przechowywaniem dla stanów wewnętrznych a celem. np. użytkownicy mogą opuścić przepływ i odtworzyć, ale nie dla celu; lub opuścić i odtworzyć cel, ale nie zrobić tego dla pamięci wewnętrznej. Ciągłe zmiany w systemie wprowadzają trwałe bóle w produkcji. Za każdym razem, gdy przepływ danych jest aktualizowany, schemat docelowy musi ewoluować równocześnie – czyniąc to Jednorazowo nudny proces, ale ciągłe źródło tarcia. Nie W rzeczywistych systemach danych nowe pola często wymagają indeksowania, stare są wyczerpane, a transformacje ewoluują.Jeśli typ się zmienia, schemat musi się dostosować.Te zmiany zwiększają złożoność i podkreślają potrzebę bardziej odpornej, adaptacyjnej infrastruktury. Infrastruktura indeksowania wymaga spójności danych między rurociągiem indeksowania a magazynami docelowymi, a im mniej luźne końce, tym łatwiejsze i bardziej wytrzymałe będą. Nasza wizja: deklaratywne, indeksowanie oparte na przepływie Kiedy założyliśmy CocoIndex, naszą wizją było umożliwienie programistom zdefiniowania transformacji danych i logiki indeksowania w sposób deklaratywny – a CocoIndex zrobi resztę. . automatic schema setup Jesteśmy zaangażowani w opiekę nad podstawową infrastrukturą, dzięki czemu programiści mogą skupić się na tym, co ma znaczenie: danych i logice. Jeśli kiedykolwiek zmagałeś się z synchronizacją logiki indeksowania i konfiguracji pamięci masowej – byliśmy tam.