Comment construire des graphiques de connaissances à partir de sources de données non structurées.
Caveat: ce dépôt fournit le code source et les cahiers qui accompagnent un tutoriel pédagogique; Il n'est pas destiné à une bibliothèque ou un produit de package.
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -U pip wheel
python3 -m pip install -r requirements.txt L'application de démonstration complète est dans demo.py :
python3 demo.py Cette démonstration arrache des sources de texte à partir d'articles sur la liaison entre la démence et la viande rouge transformée régulièrement, puis produit un graphique à l'aide de NetworkX , une base de données vectorielle de Text Chunk incorporeds utilisant LanceDB et un modèle d'intégration d'entité utilisant gensim.Word2Vec , où les résultats sont:
data/kg.json - sérialisation du graphique NetworkXdata/lancedb - Tables de base de données vectoriellesdata/entity.w2v - modèle d'intégration d'entitékg.html - Visualisation du graphique interactif dans PyVis Une collection de cahiers de jupyter illustre des étapes importantes dans ce workflow:
./venv/bin/jupyter-labconstruct.ipynb - Construction détaillée de KG à l'aide d'un graphique lexicalchunk.ipynb - Exemple simple de la façon de gratter et de faire des morceaux de textevector.ipynb - Tableau de requête LancedB pour les intégres de texte (après avoir exécuté demo.py )embed.ipynb - interroger le modèle d'intégration d'entité (après avoir exécuté demo.py ) Objectif: Construire un graphique de connaissances (kg) à l'aide de bibliothèques open source où les modèles d'apprentissage en profondeur fournissent des solutions ponctuelles étroitement axées pour générer des composants pour un graphique: nœuds, bords, propriétés.
Ces étapes définissent un processus généralisé, où ce tutoriel reprend au graphique lexical :
Recouvrement sémantique:
Graphique de données:
Graphique lexical:
Cette approche contraste avec l'utilisation d'un modèle grand langage (LLM) comme une approche unique s'adapte à toute approche "Black Box" pour générer le graphique entier automatiquement. Les approches de la boîte noire ne fonctionnent pas bien pour les pratiques KG dans des environnements réglementés, où les audits, les explications, les preuves, la provenance des données, etc., sont nécessaires.
Mieux encore, passez en revue les résultats intermédiaires après chaque étape d'inférence pour collecter la rétroaction humaine pour conserver les composants KG, par exemple, en utilisant Argilla .
Les KG utilisés dans les applications critiques telles que les enquêtes reposent généralement sur les mises à jour, pas un processus de construction en une étape. En produisant un kg basé sur les étapes ci-dessus, les mises à jour peuvent être gérées plus efficacement. Les applications en aval telles que Graph Rag pour la mise à la terre que les résultats LLM bénéficieront également d'une meilleure qualité de données.
spaCy : https://spacy.io/GLiNER : https://github.com/urchade/glinerGLiREL : https://github.com/jackboyla/glirelOpenNRE : https://github.com/thunlp/opennreNetworkX : https://networkx.org/PyVis : https://github.com/westhealth/pyvisLanceDB : https://github.com/laancedb/laancedbgensim : https://github.com/piskvorky/gensimpandas : https://pandas.pydata.org/Pydantic : https://github.com/pydantic/pydanticPyinstrument : https://github.com/joerick/pyinstrument Remarque: vous devez utiliser le script nre.sh pour charger des modèles pré-formés OpenNRE avant d'exécuter le cahier opennre.ipynb .