{"id":42503686,"url":"https://github.com/dataforgoodfr/13_democratiser_sobriete","last_synced_at":"2026-01-28T13:36:54.872Z","repository":{"id":277205774,"uuid":"920604282","full_name":"dataforgoodfr/13_democratiser_sobriete","owner":"dataforgoodfr","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-19T17:33:33.000Z","size":203611,"stargazers_count":7,"open_issues_count":5,"forks_count":9,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-01-19T22:48:24.829Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dataforgoodfr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-22T13:00:02.000Z","updated_at":"2026-01-07T10:15:02.000Z","dependencies_parsed_at":"2025-02-12T18:30:58.874Z","dependency_job_id":"d77e4354-de63-4f46-bb18-1da98bcba465","html_url":"https://github.com/dataforgoodfr/13_democratiser_sobriete","commit_stats":null,"previous_names":["dataforgoodfr/13_democratiser_sobriete"],"tags_count":0,"template":false,"template_full_name":"dataforgoodfr/d4g-project-template","purl":"pkg:github/dataforgoodfr/13_democratiser_sobriete","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F13_democratiser_sobriete","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F13_democratiser_sobriete/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F13_democratiser_sobriete/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F13_democratiser_sobriete/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","download_url":"https://codeload.github.com/dataforgoodfr/13_democratiser_sobriete/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F13_democratiser_sobriete/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T13:02:32.985Z","status":"ssl_error","status_checked_at":"2026-01-28T13:02:04.945Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-28T13:36:54.570Z","updated_at":"2026-01-28T13:36:54.857Z","avatar_url":"https://github.com/dataforgoodfr.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Democratiser la sobriété\n\nUn projet visant à démocratiser les approches de sobriété grâce à un système RAG (Retrieval-Augmented Generation) et des outils d'analyse automatisée.\n\n\u003e [!IMPORTANT]\n\u003e Il est interdit de pusher de la documentation générée par IA. De même, pour les issues et la description des PR. En faisant cela, vous gagnez du temps mais en faites perdre aux autres. De même, soyez prudent avec le code généré par IA car, outre sa fiabilité qu'il faut vérifier, il est excessivement verbeux. Le code et la doc sont aussi bien des actifs que des passifs donc il faut viser une certaine efficience : assez mais pas trop.\n\n\n## Présentation du projet\n\nLe projet est structuré en plusieurs sous-projets :\n\n- **Visualisation** (branche `visualizations-combined` non encore mergée) :\n    - [Carbon budget](https://app-d066b92e-20ba-4dbf-af25-73c7e5657091.cleverapps.io/) : budget carbone restant par pays pour rester sour les 2°C de réchauffement\n    - Décomposition [monde](https://app-e1c3f118-5441-449a-99f3-fa4036bb2ad4.cleverapps.io/) et [UE](https://app-ac31ad44-d32f-4998-87c6-b9b699c29c63.cleverapps.io/) de scénarios de décarbonation en Population - Décarbonation - Efficacité énergétique - Sobriété\n    - [Indicateurs de bien-être](https://app-aa62786e-21f6-42ab-b0ff-ddca6575e4f8.cleverapps.io/) (EWBI)\n- **Library** : base d'articles sur la sobriété dont le code de création est défini dans `library/`. Il contient aussi un sous-package `taxonomy` définissant une taxonomie métier visant à enrichir les métadonnées des articles.\n- **Policy analysis** (dans `policy_analysis/`) : pipeline d'extraction et d'analyse de politiques de sobriété et de leurs impacts dont les résultats ont vocation à être inclus dans le RAG.\n- **ChatSufficiency** (dans `rag_system/`) : chatbot destiné aux experts des politiques publiques, branchés en RAG sur la library et les résultats de la policy analysis.\n\nVoici un schéma d'architecture du projet :\n![Schéma du projet](assets/architecture.png)\n\n\n## Library\n\nLa library est constituée en trois grandes étapes :\n1. Pré-screening : récupération des références des articles traitant de la sobriété sur OpenAlex\n2. Extraction full-text : récupération des textes complets pour autant d'articles que possible\n3. Extraction de la taxonomie : les métadonnées des articles sont enrichis par une taxonomie extraite des articles par traitement NLP.\n\n[README Library](library/README.md)\n\n\n## Policy analysis\nDeux étapes dévelopées dans ce sous projet: \n- Extraction des données des abstract puis des full text ( pas testé ?) pour strucutrer les metadonnées des policies \n    - Le full text va récuperer les données des pollitiques basé sur l'id open alex sur la base Qdrant\n- Pipeline d'analyse des secteurs des pollitiques et de leur facteurs puis clustering des pollitiques avec des test avec Knn, Kmeans et HDbscan\n    - Plusieur scripts d'optimisations ont été fait \n\nLes fichiers sont sauvegardés en csv et il faudra intégrer les résultats pour etre disponibles pour le chat sufficiency \nLe projet semble avoir été un repo à part ajouté au monorepo et il semble y avoir des incohérences dans les dépendences \n\n[README Policy Analysis](policy_analysis/README.md)\n\n\n## ChatSufficiency\nIl s'agit de brancher un un système de Retrieval Augmented Generation (RAG) sur la library, soit un chatbot composé de deux sous-systèmes :\n- un retriever ~ moteur de recherche sur la library ;\n- un LLM répondant à la requête à partir des documents retournés par le retriever.\n\nLe travail initial s'est fondé sur la librairie open source Kotaemon, qui s'est avérée amener plus de complications qu'elle n'en évitait.\nIl a donc été décidé d'en sortir et de réimplémenter les fonctionnalités nécessaires avec du code custom.\n\n[README ChatSufficiency](rag_system/README.md)\n\n\n## Quick Start\nChaque dossier est un projet indépendant, mais voici les dépendances communes à installer.\n\n\nInstaller uv :\n\n```bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\nInstaller pre-commit avec uv (pas obligatoire si vous avez déjà pre-commit installé) :\n\n```\nuv tool install pre-commit --with pre-commit-uv\npre-commit --version  # check proper installation\npre-commit install  # activate hooks before each commit\n```\n\nLancer les pre-commit hooks manuellement :\n```\npre-commit run --all-files\n```\n\n\n## Roadmap\n\nVoici dans les grosses mailles les étapes prévues:\n\n- [x] Nettoyage du repo et de la base de données postgres\n- [x] Refactoring pour mieux isoler les sous-projets\n- [x] Recréer la library\n- [x] Chunking et embedding pour ingestion en base vectorielle\n- [x] V0 du chatbot sans policy analysis\n- [ ] Finalisation du pipeline de policy analysis et application à un petit échantillon de la library\n- [ ] V1 du chatbot avec intégration de la policy analysis\n- [ ] V2 de la library : extraction markdown et chunking plus fin\n- [ ] Application du pipeline de policy analysis à toute la library, ou une portion conséquente (besoin de ressources de calcul importantes -\u003e Jean Zay)\n- [ ] V2 du chatbot\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataforgoodfr%2F13_democratiser_sobriete","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdataforgoodfr%2F13_democratiser_sobriete","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataforgoodfr%2F13_democratiser_sobriete/lists"}