1,068 показания
1,068 показания

This Open Source Tool Could Save Your Data Team Hundreds of Hours

от LJ5m2025/06/09
Read on Terminal Reader

Твърде дълго; Чета

CocoIndex поддържа Qdrant [natively] - интеграцията се характеризира с високопроизводителна Rust Stack с нарастваща обработка от край до край за мащаб и свежест на данните. Тя вече се поддържа с native интеграция с Postgres, Neo4j и Kuzu.
featured image - This Open Source Tool Could Save Your Data Team Hundreds of Hours
LJ HackerNoon profile picture
0-item
1-item

CocoIndex поддържа Qdrantроден- интеграцията се характеризира с високопроизводителна Rust Stack с нарастваща обработка от край до край за мащаб и свежест на данните. 🎉 Ние току-що разгърнахме най-новата ни промяна, която се справяautomatic target schema setupс Qdrant от CocoIndex индексиране поток.


Това означава, че разработчиците не трябва да правят никакви настройки на схеми - включително настройка на таблица, тип поле, ключове и индекс за целеви магазини. Настройката е резултат от схема извод от дефиницията на потока на CocoIndex. Тя вече се поддържа с native интеграция с Postgres, Neo4j и Kuzu. Това позволява по-безпроблемна работа между индексирането и целевите магазини.

Няма повече ръчни настройки

Преди това потребителите трябвало ръчно да създават колекцията, преди да индексират:

curl -X PUT 'http://localhost:6333/collections/image_search' \
  -H 'Content-Type: application/json' \
  -d '{
    "vectors": {
      "embedding": {
        "size": 768,
        "distance": "Cosine"
      }
    }
  }'

С новата промяна потребителят не трябва да извършва ръчно управление на колекцията.

Как работи

Следвайки модела за програмиране на потока на данни, потребителят дефинира поток, където всяка стъпка има информация за изходния тип данни, а следващата настройка включва информация за типа данни.Пример(~ 100 реда на Python край до край)

Накратко, тя може да бъде представена като следната линейна графика.

В декларативния поток от данни, както е по-горе

Цел = Формула (Източник)

Той предполага както данни, така и очакваната целева схема. Едно определение на един поток задвижва както обработката на данни (включително обработката на промени), така и настройката на целевата схема, като осигурява един източник на истина както за данните, така и за схемата.Видове инфериорни(например за почивка)

В потока за индексиране, експортирането на вграждания и метаданни директно в Qdrant е всичко, от което се нуждаете.

doc_embeddings.export(
    "doc_embeddings",
    cocoindex.storages.Qdrant(collection_name=QDRANT_COLLECTION),
    primary_key_fields=["id"],
)

За да стартирате процес на CocoIndex, потребителите трябва първо да изпълнят инсталацията, която обхваща цялата необходима инсталация за всички необходими backends.

cocoindex setup main.py

cocoindex setup

  • Създаване на нови задвижвания за конфигурацията на схемата, като например таблици/колекции/и т.н.
  • Промяна на съществуващите backend с промяна на схемата - тя ще се опита да направи неразрушителна актуализация, ако е възможно, напр. първичните ключове не се променят и поддръжката на целевото съхранение е актуализирана на място (напр. ALTER TABLE в Postgres), в противен случай пада и възпроизвежда.
  • Изхвърлете постоянните задници.

Разработчиците след това бягат

cocoindex update main.py [-L]

за да стартирате индексиращ тръбопровод (-L за дълъг ход).

Ако сте направили актуализации на логиката, които изискват да се актуализира схемата в целевия магазин, не се притеснявайте.cocoindex updateотново след актуализацията на логиката. CocoIndex ще заключи схемата за целевия магазин.cocoindex setupкато избор на дизайн, CocoIndex няма да актуализира никаква схема без ваше уведомление, тъй като някои актуализации на схемата могат да включват разрушителни промени.

За да хвърлиш поток, ще тичаш

cocoindex drop main.py

cocoindex dropНамаляване на задните крайници, когато тече поток.

Всички бек-енд субекти за целевите магазини – като например таблица на PostgreSQL или колекция на Qdrant – са собственост на потока като получени данни, така че те също ще бъдат премахнати.

Защо автоматична целева схема за извод?

Въпросът наистина трябва да бъде, защо не?

Традиционният начин е потребителите напълно да разбераткогатоиКакда настроите/актуализирате самата целева схема, включително конкретната схема.Потоците за индексиране често обхващат няколко системи.

За целта на магазина:

  • Векторни бази данни (PGVector, Qdrant и др.)
  • Релационни бази данни (PostgreSQL)
  • Графични бази данни (Neo4j, Kuzu и др.)

Типовете данни, които извличате, и целевата ви схема трябва да съвпадат.

Ако има някакво вътрешно проследяване на състоянието, например в случай на увеличена обработка

  • Вътрешни таблици (проследяване на състоянието)

Това е скучно и болезнено да се направи ръчно, тъй като всички тези системи трябва да се съгласят по схема и структура.

  • Ръчно настройване и синхронизиране на схеми.
  • Тясна координация между разработчиците, DevOps и инженерите на данни - хората, които пишат кода, може да не са същите хора, които го разгръщат / изпълняват в една организация.
  • Дебугиране на несъответствия между логиката на потока и слоевете за съхранение.
  • Производственият ритъм обикновено е стресиращ.

Всяко добавяне на движещи се части към системата за индексиране добавя триене - всяко несъответствие между логиката и схемата за съхранение може да доведе до мълчаливи неуспехи или фини грешки.

  • В някои случаи това не са мълчаливи неуспехи. неуспехът трябва да е очевиден, например ако потребителите са забравили да създадат таблица или колекция, това просто ще се обърка, когато пишете на целта.
  • Някои други сценарии могат да доведат до не-очевидни проблеми, т.е. синхронизиране между съхранението за вътрешни състояния и целта. например потребителите могат да пуснат потока и да възпроизвеждат, но не и за целта; или да пуснат и възпроизвеждат целта, но не и за вътрешното съхранение.

Непрекъснатите промени в системата въвеждат постоянни болки в производството. Всеки път, когато потокът от данни се актуализира, целевата схема трябва да се развива заедно – като го правинеЕднократно досаден процес, но непрекъснат източник на триене.

В реалните системи за данни, новите полета често се нуждаят от индексиране, старите се обезценяват, а трансформациите се развиват.Ако типът се промени, схемата трябва да се адаптира.Тези промени увеличават сложността и подчертават необходимостта от по-устойчива, адаптивна инфраструктура.

Инфраструктурата за индексиране изисква съгласуваност на данните между индексиращия тръбопровод и целевите хранилища и колкото по-слаби са краищата, толкова по-лесно и по-устойчиво ще бъде.

Нашата визия: Декларативно, базирано на потока индексиране

Когато стартирахме CocoIndex, нашата визия беше да позволим на разработчиците да определят логиката за трансформация на данни и индексиране декларативно – а CocoIndex прави останалата част.automatic schema setup.

Ние се ангажираме да се грижим за основната инфраструктура, така че разработчиците да могат да се съсредоточат върху това, което има значение: данните и логиката.Ние сме сериозни, когато казваме, че можете да имате готов за производство тръбопровод за данни за AI с ~ 100 реда код на Python.

Ако някога сте се борили с поддържането на вашата логика за индексиране и настройките за съхранение в синхрон - ние бяхме там.

L O A D I N G
. . . comments & more!

About Author

LJ HackerNoon profile picture
Hacker, Builder, Founder, CocoIndex

ЗАКАЧВАЙТЕ ЕТИКЕТИ

ТАЗИ СТАТИЯ Е ПРЕДСТАВЕНА В...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks