🌀 WeaveStruct¶
De la donnée brute à l'information exploitable : traitement de documents, extraction d'entités et relations, et construction de graphes de connaissances.
WeaveStruct est une plateforme modulaire et évolutive dédiée au traitement intelligent de documents. Grâce à l'intégration de technologies avancées en NLP et en Machine Learning, elle permet d'analyser, structurer et exploiter des données non structurées en informations prêtes à l'emploi.
🚀 Fonctionnalités clés¶
📄 Traitement des documents¶
- Formats pris en charge : PDF, DOCX, avec prise en charge de l'OCR pour les documents scannés.
- Extraction avancée : Extraction des tableaux, figures, et métadonnées.
- Conversion multi-format : Export en JSON, YAML, Markdown ou CSV pour une intégration aisée.
🧠 Reconnaissance d'entités et extraction de relations¶
- Modèles avancés :
- GLiNER : Reconnaissance d'entités nommées (personnes, organisations, lieux, etc.).
- GLIREL : Extraction de relations logiques et hiérarchiques.
- Résultats exploitables : Stockage des entités et relations dans une base de données orientée graphes (Neo4j).
🌐 Construction de graphes de connaissances¶
- Stockage relationnel : Construction automatique de graphes dans Neo4j.
- Visualisation intuitive : Données prêtes pour des outils de visualisation tels que Cytoscape ou GraphXR.
🔍 Recherche vectorielle et embeddings¶
- Modèles d'embeddings : Intégration du modèle Ollama pour transformer les documents en représentations vectorielles.
- Indexation rapide : Recherche vectorielle rapide grâce à PostgreSQL et l'extension PGVector.
📈 Suivi des performances et monitoring¶
- Tracking des modèles : Intégration avec MLflow pour le suivi des expériences et métriques.
- Monitoring système : Metrics exposées pour Prometheus pour une supervision en temps réel.
🧱 Briques utilisées¶
- DoclingV2 : Framework avancé pour le traitement et l'analyse de documents. C'est le point d'entrée des données.
- LangChain : Gestion des flux conversationnels et chaînes d'appels de modèles pour des cas complexes, avec des classes clés comme :
LinkExtractor
: Extraction des liens logiques entre les entités mentionnées dans un document.GraphTransformer
: Transformation des données textuelles en graphes exploitables.- GLiNER : Reconnaissance d'entités nommées à l'aide de modèles NLP préentraînés.
- Ollama : Génération d'embeddings vectoriels et analyse de documents pour la recherche vectorielle.
⚙️ API : Points d'entrée principaux et description¶
📂 Gestion des documents¶
-
POST /documents/upload/
Description : Télécharge un document pour traitement initial (extraction de texte, OCR, etc.). -
POST /documents/index_document/
Description : Indexe un document pour exécuter des tâches d'extraction d'entités et de relations. -
POST /documents/rag_process/
Description : Convertit un document en embeddings vectoriels pour une recherche rapide.
🔗 Graphes de connaissances¶
-
GET /graph/entities/
Description : Renvoie toutes les entités extraites et enregistrées dans la base de données de graphes. -
GET /graph/relationships/
Description : Récupère toutes les relations entre les entités identifiées. -
GET /graph/visualize/
Description : Renvoie les données formatées pour visualiser le graphe des entités et relations.
🔍 Recherche¶
-
GET /search/entities/
Description : Permet de rechercher des entités spécifiques dans la base à l'aide de mots-clés. -
GET /search/relationships/
Description : Effectue une recherche sur les relations existantes dans le graphe.
🛠️ Administration et suivi¶
GET /metrics/
Description : Expose les métriques système pour le monitoring via Prometheus.
🌟 Contribuer¶
Les contributions sont les bienvenues !
1. Forkez le projet.
2. Créez une branche pour votre fonctionnalité (git checkout -b feature/awesome-feature
).
3. Commitez vos modifications (git commit -m 'Add awesome feature'
).
4. Poussez la branche (git push origin feature/awesome-feature
).
5. Ouvrez une Pull Request.
📜 Licence¶
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus d'informations.