Projets / profile-search-rag
Extraction et recherche de profils
Un outil interne qui extrait des profils structurés à partir de CV avec de l'OCR et un LLM, puis trouve les correspondances par le sens, avec une explication pour chacune.
- Période
- 3 mois
- Rôle
- Développeur
- Contexte
- Outil interne, cabinet de conseil
- Cloud
- GCP
[ Architecture ]
Comment ça marche
Lancez un scénario pour suivre une requête à travers le système. Sélectionnez un composant pour lire son rôle et ses flux.
un recruteur
Un CV synthétique
Un fichier CV ajouté au vivier.
cv.pdf
- Appuyez sur Ajouter un CV pour suivre la requête à travers le système.
- 01RecruteurTéléverse un CV
- 02App rechercheFichier accepté
- 03OCR & extractionTexte extrait · profil structuré construit
- 04Profils & vector storeProfil stocké · vecteur ajouté à l'index
- ✓Le profil est stocké sous forme de données structurées et devient cherchable par le sens en quelques instants.
- 01RecruteurSaisit la requête
- 02App rechercheRequête reçue
- 03Profils & vector storeRequête encodée · profils les plus proches trouvés
- 04Explication matchChaque profil relu au regard de la requête
- 05App rechercheShortlist affichée avec une raison pour chaque match
- ✓Le recruteur obtient une shortlist classée par le sens, avec une courte raison pour chaque match.
Problème
Trouver le bon profil dans un grand vivier de CV est lent. Les CV ont des mises en page très variées et la recherche par mots-clés rate les formulations voisines : construire une shortlist prenait donc du temps.
Données
Des fichiers de CV, le texte extrait, les profils structurés et leurs embeddings. Les CV sont des données personnelles : les démonstrations n’utilisent que des CV synthétiques.
Approche
- Extraction par OCR et LLM. L’OCR lit le CV, puis un LLM transforme le texte en profil structuré.
- Recherche sémantique. Les profils sont encodés et indexés dans un moteur de recherche vectorielle : la recherche porte sur le sens, pas sur les mots.
- Correspondances expliquées. Un LLM relit les profils les plus proches au regard de la requête et dit pourquoi chacun correspond, dans une application Streamlit simple.
Évaluation
L’outil a été jugé sur le temps nécessaire pour construire une shortlist, comparé au processus manuel.
Résultat
Environ 5 000 profils ont été indexés, et la construction d’une shortlist a pris environ 40 % de temps en moins.
Mon rôle
J’ai construit l’outil : l’extraction, l’indexation, la recherche et l’interface.