J’ai développé un Graph Dataframe et une base de données
(github.com/eastlighting1)Je suis un étudiant diplômé d’un master dans un laboratoire qui travaillait sur les graphes de connaissances, les ontologies, etc.
Après l’obtention de mon diplôme, en réfléchissant à la manière de développer mon profil, j’ai repensé à l’« open source » que l’école mettait en avant. Ensuite, en explorant diverses idées, je me suis souvenu que pendant mon master, j’avais essayé de mener des recherches avec neo4j, mais j’avais fini par abandonner parce que les E/S prenaient beaucoup trop de temps. Je me suis donc dit qu’il fallait développer des bibliothèques à la fois rapides et capables de conserver des performances au niveau des bibliothèques existantes. Sous le thème de l’écosystème des graphes, je développe ainsi diverses bibliothèques de graphes avec l’aide d’un agent IA.
-
Lynxes
- Lynxes est une bibliothèque de type Dataframe qui vise à être la version Graph de Polars. Son nom vient donc de Pandas - Polars puis Lynxes.
- J’ai également implémenté et utilisé un fichier de données appelé
gf, dont la structure ressemble au RDF des ontologies. - C’est basé sur Apache Arrow, mais celui-ci ne prend pas en charge le CRUD comme un dataframe par défaut ! J’ai donc beaucoup réfléchi à la manière de gérer ce point.
- Si l’on regarde le benchmark, pour être honnête, ce n’est pas plus rapide que des bibliothèques existantes comme networkx ou igraph, mais c’est tout de même suffisamment pratique à l’usage, donc j’en suis pour l’instant satisfait.
-
CaracalDB
- CaracalDB est une bibliothèque de base de données qui vise à être la version Graph DB de DuckDB. Vous aurez sans doute tout de suite remarqué que la structure X + DB est inspirée de DuckDB, et pour « Caracal », je me suis appuyé sur le conseil de GPT indiquant que le caracal est un animal proche du lynx.
- CaracalDB utilise lui aussi un fichier DB dédié appelé
.crcl. À l’origine, c’était une structure en répertoires, mais quand j’ai demandé à le transformer en fichier, cela a très bien fonctionné aussi sous cette forme, ce qui m’a plu. - En tant que base de données embarquée, il est naturellement plus rapide que Neo4j, qui utilise un serveur.
Les deux bibliothèques sont publiées sur PyPI, vous pouvez donc les utiliser immédiatement.
uv add lynxes
uv add caracaldb
Par ailleurs, j’essaie aussi de mener séparément le travail de benchmark et d’optimisation dans ce dépôt.
- La TASK 1 concerne le Knowledge Graph, la Task 2 GraphRAG. Ensuite, je pense m’attaquer aux GNN.
Il y a encore beaucoup de points à améliorer. Les critiques et remarques du type « Pourquoi avoir implémenté ça comme ça ? » ou « Pourquoi ce benchmark a-t-il été implémenté de cette façon ? » sont également les bienvenues.
Aucun commentaire pour le moment.