Desenvolvi um Graph Dataframe e um Database
(github.com/eastlighting1)Sou um estudante que concluiu o mestrado em um laboratório de pesquisa que trabalhava com grafo de conhecimento, ontologia e temas afins.
Depois de me formar, pensei em como poderia fortalecer meu currículo, e lembrei do que a universidade sempre enfatizava: open source. A partir daí, fui elaborando várias ideias, até me lembrar de uma pesquisa que tentei conduzir no mestrado usando neo4j, mas que acabei abandonando porque o IO demorava demais. Então, com a ideia de desenvolver bibliotecas que mantivessem um desempenho no nível das bibliotecas já existentes, mas com mais velocidade, venho criando várias bibliotecas de grafos com a ajuda de um AI Agent sob o tema Graph Ecosystem.
-
Lynxes
- Lynxes é uma biblioteca de dataframe com o objetivo de ser a versão Graph do Polars. Por isso, o nome segue a linha de Pandas - Polars - Lynxes. (Lynx é um lince.)
- Também implementei e utilizo junto um arquivo de dados chamado
gf, que se parece com o RDF de ontologias. - É baseado em Apache Arrow, mas ele, por padrão, não oferece suporte a CRUD como um dataframe! Então, pensei bastante em como lidar com isso.
- Se você olhar o benchmark, sendo bem sincero, ele não é mais rápido que bibliotecas já estabelecidas como networkx ou igraph, mas ainda assim está bom o suficiente para usar sem incômodos, então por enquanto estou satisfeito.
-
CaracalDB
- CaracalDB é uma biblioteca de banco de dados com o objetivo de ser a versão Graph DB do DuckDB. Imagino que vocês já tenham percebido de onde veio a estrutura X + DB, inspirada no DuckDB, e o nome Caracal foi escolhido com base numa sugestão do GPT de que o caracal é um animal parecido com o lince.
- O CaracalDB também usa um arquivo próprio de banco de dados com a extensão
.crcl. Originalmente era uma estrutura de diretórios, mas quando pedi para transformar em arquivo, funcionou muito bem desse jeito também, o que foi ótimo. - Por ser um banco de dados embarcado, naturalmente ele tende a ser mais rápido que o Neo4j, que usa servidor.
As duas bibliotecas já foram publicadas no PyPI, então dá para usar imediatamente.
uv add lynxes
uv add caracaldb
Além disso, também estou fazendo trabalhos separados de benchmark e otimização neste repositório.
- A TASK 1 é Knowledge Graph, a Task 2 é GraphRAG. Estou pensando em fazer GNN em seguida.
Ainda há muitos pontos em que falta maturidade. Comentários e críticas como 'Por que isso foi implementado assim?' e 'Por que esse benchmark foi implementado desse jeito?' são muito bem-vindos.
Ainda não há comentários.