Construire des agents IA d'entreprise avec Flink SQL : connecter les LLMs aux données internes

2025-06-18

Cet article explore la construction d'agents IA d'entreprise à l'aide de Flink SQL, connectant les grands modèles de langage (LLMs) aux données et ressources internes. Pour les données structurées, la sémantique de jointure SQL de Flink SQL intègre facilement les données de bases de données externes à l'entrée du LLM. Pour les données non structurées, l'article propose la génération augmentée par la recherche (RAG), en codant les données en vecteurs stockés dans une base de données vectorielle, puis en interrogeant et en intégrant via le support de type vectoriel de Flink SQL. En utilisant l'exemple de résumé d'articles de recherche et d'intégration de recherches internes, l'article montre comment construire un système d'agent IA avec deux tâches Flink SQL : l'une met à jour le stockage vectoriel, l'autre interroge et appelle le LLM. Enfin, il mentionne l'utilisation des fonctions de table de processus (PTFs) pour intégrer la norme MCP d'Anthropic afin de construire des agents IA plus flexibles.

Lire plus
Développement

Stream vs. Batch : Il s'agit en réalité de Push vs. Pull

2025-05-18

Le débat courant « Stream vs. Batch » est trompeur. De nombreux systèmes de streaming utilisent en interne le traitement par lots pour améliorer les performances, mais la véritable distinction réside dans la sémantique du traitement des données : les systèmes « push » fournissent des données en temps réel, offrant une vue complète et à jour ; les systèmes « pull » interrogent les données périodiquement, risquant de manquer des mises à jour et des suppressions. Bien que « push » soit plus complexe, son avantage en temps réel est convaincant. Une fois que vous avez expérimenté la magie de la fraîcheur des données à la seconde près, vous ne voudrez plus jamais revenir en arrière. En pratique, les deux approches se complètent, le traitement par lots étant souvent utilisé pour la rétroaction dans les systèmes de streaming.

Lire plus
Développement traitement par lots

L'avenir de Kafka : Au-delà des partitions, vers une file d'attente de messages plus puissante

2025-04-25

Cet article explore les améliorations futures de Kafka, axées sur le dépassement de l'accès basé sur les partitions pour une approche centrée sur les clés. Cela permettrait un accès et une relecture des données plus efficaces, une mise à l'échelle dynamique des consommateurs et résoudrait les problèmes de blocage head-of-line. Il propose également des fonctionnalités telles que les hiérarchies de sujets, le contrôle de la concurrence, la prise en charge des schémas côté broker, l'extensibilité, les rappels de validation synchrones, la création de snapshots et la prise en charge multi-locataires pour améliorer les performances, la fiabilité et la facilité d'utilisation de Kafka, le rendant ainsi plus adapté aux applications de données modernes.

Lire plus

Le cache AOT de Kafka 4.0 améliore le temps de démarrage de 59%

2025-03-28

Cet article montre comment tirer parti de la compilation anticipée (AOT) de Java pour améliorer significativement le temps de démarrage d'Apache Kafka 4.0. En créant un fichier de cache AOT, l'auteur a réussi à réduire le temps de démarrage de Kafka de 690 millisecondes à 285 millisecondes, soit une amélioration impressionnante de 59%. Le processus a nécessité de résoudre un conflit JMX, conduisant à la création et à l'application réussies du cache AOT, entraînant des gains de performance substantiels.

Lire plus
Développement Compilation AOT

Le budget de synchronisation : minimiser les appels synchrones dans les systèmes distribués

2025-03-27

Cet article explore l'importance de gérer les appels synchrones lors de la construction de systèmes de services distribués. L'auteur introduit le concept de « budget de synchronisation », préconisant de minimiser les requêtes synchrones entre les services pour améliorer les performances et la disponibilité. Les appels synchrones sont coûteux, affectant les temps de réponse et la stabilité du système. À l'aide d'un exemple de traitement de commandes de commerce électronique, l'article montre comment gérer les interactions avec les services d'inventaire et d'expédition de manière asynchrone (par exemple, en utilisant Kafka), en réservant les appels synchrones aux situations où ils sont essentiels (comme les services de paiement). L'auteur aborde également le modèle Outbox et la technologie CDC pour gérer la mise en mémoire tampon des messages et la synchronisation des données dans la communication asynchrone, obtenant ainsi un système distribué haute performance et haute disponibilité.

Lire plus