Notre stack technique GenAI en production
On va parler technique GenAI (mais pas de LLM) !
Je partageais lundi mes observations sur le marché GenAI, et notamment l’importance d’un socle logiciel robuste.
Les fondamentaux d’une plateforme GenAI
Une plateforme GenAI repose sur des éléments fondamentaux : l’orchestration des tâches (souvent asynchrones), des agents avec gestion de la mémoire, le parsing intelligent de documents, une base vectorielle performante, et une observabilité fine de la génération des LLM.
Si vous faites une recherche Google, pardon Perplexity, on vous proposera LangChain ou llamaIndex, 2 frameworks “populaires” ayant les éléments cités au-dessus. Finalement nous avons écarté LangChain, sa couche d’abstraction s’est révélée être plus un frein qu’autre chose. Un projet GenAI est avant tout un projet d’orchestration de flux et de calls API, rien qui nécessite un framework.
Cela nous a conduit à développer notre propre socle technique chez Coddity, aujourd’hui éprouvé en production.
👷♀️ Système
Le cœur est en Go pour développer chaînes et nos agents : la gestion native de la concurrence de Go est parfaite pour les tâches LLM, par nature asynchrones, hormis le streaming de chat.
Nous avons développé nos propres packages pour la gestion des graphes et de la mémoire des agents, ainsi qu’une bibliothèque de connecteurs vers différents providers LLM intégrant des mécanismes de fallback automatique en cas de défaillance.
🛠️ DB vectorielle
Nous avons choisi Qdrant. Au-delà de ses performances et sa scalabilité, son API est très bien pensée avec des capacités de graphe et sa recherche hybride avec BM42. Son UI native est également un plus pour le debugging et le monitoring.
📕 Parser
Le parsing est souvent la clef invisible de la performance des plateformes GenAI qui traitent des données propriétaires. Sans parsing performant, “garbage in, garbage out” sera vérifié.
Nous avons opté pour une approche mutualisée avec un service dédié sur nos serveurs, capable de traiter efficacement la quasi-totalité des formats de documents que nous rencontrons.
⚙️ Infrastructures
Nous utilisons Clever Cloud pour l’orchestrateur : c’est simple, performant et français.
Pour les cas d’usage nécessitant privacy ou fine-tuning, nous nous appuyons sur Runpod et en particulier sur leur serverless qui permet de monter du GPU à la demande, parfait pour une optimisation des coûts avec une demande variable.
Pour l’observabilité LLM, après avoir utilisé une plateforme maison simple, nous réfléchissons à passer sur Langsmith qui nécessitera de faire évoluer l’orchestrateur pour l’intégration des flux.
Conclusion
Cette stack technique, construite sur les besoins réels de production plutôt que sur des choix théoriques, nous permet aujourd’hui de lancer des POC rapidement en utilisant un socle prêt pour la production.
Pour les non techniques qui sont arrivés jusque là, bravo !