- Base de données de graphes haute performance développée en Rust, fonctionnant à la fois en mode embarqué et en mode serveur tout en conservant une faible consommation mémoire
- Prend en charge à la fois le modèle Labeled Property Graph (LPG) et les triplets RDF, ce qui permet des usages variés, des réseaux sociaux au web sémantique
- Prend en charge de nombreux langages de requête, dont GQL, Cypher, Gremlin, GraphQL, SPARQL, SQL/PGQ, offrant un large choix aux développeurs
- Propose un ensemble complet de fonctionnalités, dont la recherche vectorielle basée sur HNSW, les transactions ACID, l'isolation par instantané MVCC et des bindings multilangages
- S'intègre à des frameworks IA comme LangChain, LlamaIndex, MCP, afin de prendre en charge la combinaison des données de graphe et des applications d'IA
Présentation de Grafeo
- Grafeo est une base de données de graphes haute performance développée en Rust, qui fonctionne aussi bien en mode embarqué qu'en mode serveur tout en conservant une faible consommation mémoire
- Elle a obtenu les meilleures performances dans le LDBC Social Network Benchmark et prend en charge l'exécution vectorisée, le chunking adaptatif et des opérations optimisées SIMD
- Elle prend en charge les deux modèles de données Labeled Property Graph (LPG) et triplets RDF, ce qui la rend adaptée à divers domaines, des réseaux sociaux au web sémantique
- Elle propose un ensemble complet de fonctionnalités, incluant les transactions ACID, l'isolation par instantané basée sur MVCC, des bindings multilangages et un écosystème d'intégration IA
Principales caractéristiques
-
Architecture haute performance
- Écrite autour d'un moteur central basé sur Rust, sans dépendance à C, avec utilisation optionnelle de jemalloc/mimalloc et de bibliothèques C TLS
- Inclut un moteur d'exécution push-based, le traitement parallèle par morsels, un stockage en colonnes, une compression par type et un optimiseur de requêtes basé sur les coûts
- Prend en charge une exécution efficace des requêtes via le data skipping à l'aide de zone maps
-
Prise en charge de multiples langages de requête
- Prend en charge GQL, Cypher, Gremlin, GraphQL, SPARQL et SQL/PGQ
- Permet de choisir le langage le plus adapté selon la nature du projet et le niveau d'expertise du développeur
- GQL est un pattern matching déclaratif normalisé ISO, Cypher utilise des patterns ASCII-art compatibles Neo4j, et Gremlin adopte un style de parcours basé sur Apache TinkerPop
- GraphQL prend en charge à la fois LPG et RDF, SPARQL est le langage standard W3C pour RDF, et SQL/PGQ prend en charge la syntaxe SQL:2023
GRAPH_TABLE
-
Modèles de données
- Le modèle LPG utilise une structure de nœuds et d'arêtes avec labels et propriétés, et prend en charge des propriétés de différents types de données
- Le modèle RDF utilise une structure en triplets subject-predicate-object, avec des index SPO/POS/OSP permettant des requêtes efficaces
- RDF est conforme aux standards W3C, ce qui le rend adapté au web sémantique, aux ontologies et aux linked data
-
Fonctionnalités de recherche vectorielle
- Fournit une recherche de similarité basée sur HNSW et prend en charge la quantification scalaire, binaire et product
- Permet de combiner l'exploration de graphe et la recherche de similarité sémantique
-
Embarqué et autonome
- Peut être directement embarquée dans une application sans dépendances externes, ou exécutée comme serveur autonome avec API REST et interface web
- Peut évoluer des appareils edge jusqu'aux clusters de production à grande échelle
-
Transactions et sûreté mémoire
- Garantit des transactions ACID complètes grâce à l'isolation par instantané basée sur MVCC
- S'appuie sur la sûreté mémoire de Rust et sur une conception de fearless concurrency pour une gestion fiable de la concurrence
-
Bindings multilangages
- Prend en charge Python(PyO3), Node.js/TypeScript(napi-rs), Go(CGO), C(FFI), C#(.NET 8 P/Invoke), Dart(dart:ffi) et WebAssembly(wasm-bindgen)
- Permet d'utiliser le même moteur Grafeo dans différents environnements langages
-
Écosystème et intégrations
- Intégré à des frameworks IA comme LangChain, LlamaIndex et MCP
- Fournit des widgets de notebook interactifs, une visualisation de graphes WebAssembly dans le navigateur, un serveur autonome avec interface web et des outils de benchmarking
Installation et démarrage
-
Commandes d'installation
- Python:
uv add grafeo
- Node.js:
npm install @grafeo-db/js
- Go:
go get github.com/GrafeoDB/grafeo/crates/bindings/go
- Rust:
cargo add grafeo
- .NET:
dotnet add package GrafeoDB
- Dart:
grafeo: ^0.5.21
- WebAssembly:
npm install @grafeo-db/wasm
-
Exemple de démarrage rapide
- Dans l'exemple Python, une base de données en mémoire est créée, puis des nœuds et des arêtes sont ajoutés avec les instructions
INSERT et MATCH, avant d'interroger les relations
- Dans l'exemple Rust, la base de données est créée avec
GrafeoDB::new_in_memory() et les mêmes requêtes sont exécutées via une session
Licence
- Grafeo est distribué sous licence Apache-2.0
Aucun commentaire pour le moment.