corell
Un kernel d'inférence IA universel, asynchrone, agnostique et local-first (0 réseau) en Rust.
Philosophie
corell est conçu pour un seul impératif : aucun octet ne quitte votre machine.
Dans les environnements où la souveraineté des données est non négociable dossiers médicaux, documents juridiques, propriété intellectuelle industrielle les solutions cloud ne sont pas une option. corell abstrait la plomberie d'inférence locale via Ollama et sécurise la persistance d'état via un moteur Key-Value embarqué (sled), le tout sans aucune dépendance réseau externe.
Trois garanties fondamentales :
- Zéro réseau : Conçu pour des environnements air-gapped. Aucune télémétrie, aucun appel sortant.
- Agnosticisme modèle : Basculez de
llama3.2àdeepseek-r1:8bou tout modèle Ollama via une simple chaîne de caractères. - Bien commun : Licencié GPL-2.0-or-later. Immuablement libre.
Prérequis
- Rust ≥ 1.85 (édition 2024 requise)
- Ollama installé et en cours d'exécution sur
localhost:11434 - Le modèle cible téléchargé au préalable :
# ou
Installation
Ajoutez corell à votre Cargo.toml :
[]
= "0.1"
= { = "1", = ["full"] }
Démarrage rapide
Inférence synchrone (réponse complète)
use CorellKernel;
use PathBuf;
async
Inférence en streaming (token par token)
use CorellKernel;
use PathBuf;
use StreamExt;
async
Persistance locale (Key-Value)
use CorellKernel;
use PathBuf;
Architecture
corell/
├── src/
│ ├── lib.rs # CorellKernel : point d'entrée public
│ └── errors.rs # KernelError : énumération d'erreurs typées
├── Cargo.toml
└── README.md
CorellKernel
| Méthode | Description |
|---|---|
new(model, path) |
Initialise le kernel et ouvre/crée le stockage local |
execute(system, input) |
Inférence bloquante, retourne le texte complet |
execute_stream(system, input) |
Inférence en streaming, retourne un Stream<Item = Result<String, KernelError>> |
save_data(key, value) |
Persiste une valeur avec flush synchrone sur disque |
get_data(key) |
Récupère une valeur par clé (Option<String>) |
KernelError
| Variante | Cause |
|---|---|
StorageInitError |
Droits insuffisants sur le répertoire de stockage |
StorageOperationError |
Échec lecture/écriture/flush dans sled |
InferenceError |
Ollama inaccessible ou modèle non téléchargé |
IoError |
Erreur d'E/S système (via #[from] std::io::Error) |
Modèles testés
| Modèle | Commande pull | Usage recommandé |
|---|---|---|
llama3.2 |
ollama pull llama3.2 |
Usage général, contexte long |
deepseek-r1:8b |
ollama pull deepseek-r1:8b |
Raisonnement, analyse |
mistral |
ollama pull mistral |
Polyvalent, rapide |
phi4 |
ollama pull phi4 |
Machines à ressources limitées |
Tout modèle compatible Ollama fonctionne : passez simplement son identifiant à CorellKernel::new.
Cas d'usage
corell est particulièrement adapté pour :
- Systèmes de santé : Analyse de dossiers cliniques sans quitter le SI hospitalier
- Cabinets juridiques : Résumé et extraction d'informations contractuelles en circuit fermé
- Industrie et R&D : Traitement de données sensibles soumises à des accords de confidentialité
- Administrations : Respect des réglementations sur la localisation des données (RGPD, HDS)
- Développeurs : Couche d'abstraction légère pour tout projet Rust nécessitant de l'IA locale
Contribution
Les contributions sont les bienvenues. Ce projet suit les principes du logiciel libre.
Merci d'ouvrir une issue avant toute PR substantielle afin d'en discuter le périmètre.
Licence
corell est distribué sous licence GPL-2.0-or-later.
Vous êtes libre de l'utiliser, le modifier et le redistribuer, à condition que tout travail dérivé reste sous la même licence. Voir LICENSE pour le texte complet.
Développé par Jorge Andre Castro.