Résumé
- Présente HCL Informix VectorBlade, une solution de stockage et de recherche vectoriels natifs.
- Explique comment créer des flux de travail RAG à partir de données opérationnelles.
- Fait le lien entre les bases de données traditionnelles et IA générative modernes IA générative .
- Propose les conseils d'experts prodigués par les architectes et stratèges d'Informix.
Chapitres
Bonjour à tous, et merci de vous être connectés à ce webinaire. On m’appelle JC, et je suis architecte en chef chez Informix. Pour ceux qui ne me connaissent pas, j’ai commencé à travailler chez Informix en 1991, une époque magique où les dinosaures parcouraient encore la Terre.
J'ai été embauché au support de première ligne, et non en tant que programmeur. Ainsi, lorsque je suis ensuite passé au développement, j'avais déjà gravi tous les échelons du support. Évidemment, mon travail consiste désormais à me concentrer sur l'innovation.
Mais j'aime à penser qu'après avoir passé une bonne partie du milieu des années 90 avec un bipeur à la ceinture, à remettre en marche des systèmes en panne à toute heure du jour et de la nuit, je me soucie vraiment autant de la qualité des logiciels que de l'innovation. L’une des principales innovations apportées par Informix à l’époque était l’extensibilité. Parmi les quatre grandes bases de données — Informix, Oracle, DB2 et Sybase —, Microsoft n’était pas encore l’acteur qu’il allait devenir quelques années plus tard.
Mais parmi ces quatre solutions, IVS a véritablement été la première à permettre à un développeur externe de créer ses propres types de données et son propre code C ou Java, afin de les exécuter au sein du serveur au même titre que les composants natifs. Nous avons appelé « datablade » chaque ensemble de types et de routines utilisateur, et de nombreux développeurs se sont lancés à corps perdu dans l'exploitation de cette fonctionnalité. Nous aussi, d'ailleurs.
Nous avons développé quelques-uns de nos propres modules de données qui sont toujours disponibles et très utilisés, même 30 ans plus tard. Lorsque vous téléchargez IVS en 2026, vous bénéficiez d’un module de recherche textuelle de base, d’un module géospatial et d’un module de séries chronologiques. Au début de cette année, nous avons décidé de faire d’IVS un excellent environnement pour stocker et utiliser nativement des vecteurs, un type de données complexe qui n’est pas techniquement nouveau, mais dont l’importance pour le monde est relativement récente.
Et très vite, nous avons compris que la meilleure façon d'y parvenir était de tirer parti de notre propre technologie d'extensibilité. Cinq mois plus tard, nous y voilà. Nous y sommes parvenus.
Et aujourd'hui, nous dévoilons le module HCL Informix Vector Blade. Je tiens à préciser d'emblée que ce module ne fonctionne pas avec un backend IBM Informix. Il ne fonctionne qu'avec HCL Informix et n'est pris en charge par aucune version du serveur antérieure à la version 15.0.1.
Je vous indiquerai un peu plus tard la version minimale exacte que nous recommandons. En attendant, notre équipe a hâte de vous la présenter, alors commençons sans plus attendre. Nous accueillons Jean George-Perrin, stratège en données, champion IBM et champion Informix de longue date, plus connu sous le nom de JGP, qui va nous expliquer ce que sont les vecteurs et pourquoi ils sont si utiles dans les applications d'intelligence artificielle.
Ensuite, j'interviendrai pour vous parler du pouvoir que notre outil vous confère sur ce nouveau monde, et nous aurons une démonstration animée par Scott Norris, ingénieur terrain chez Informix et personne tout simplement formidable. Pendant ce temps, n’hésitez pas à poser des questions, et l’équipe fera de son mieux pour y répondre en direct. Utilisez simplement la fonctionnalité « Questions-Réponses » et la fenêtre correspondante de Zoom plutôt que le chat, si vous le voulez bien, car c’est là que nous les consulterons.
Encore merci de vous joindre à nous, et JGP, c'est à vous. Très bien.
Salut à tous. Je suis moi aussi dans l'univers Informix depuis un petit moment déjà. D'accord ?
Ce n'est donc pas depuis aussi longtemps que JC, et sans doute pas de manière aussi marquante que lui, mais j'ai commencé mon parcours avec Informix en 1997, au sein d'une entreprise appelée 4js Development Tools. Et tout a commencé… Ce que j'aime bien dire à propos d'Informix, c'est qu'avant cela, je n'avais que des connaissances de niveau universitaire en matière de bases de données, et je les détestais vraiment. Mais le karma a fait son œuvre, et ça m'est resté.
Ainsi, lorsque j'ai rejoint Actian il y a un an, presque jour pour jour, cela a vraiment été un moment passionnant de retrouver cette formidable famille Informix. Et je suis vraiment ravi de constater que ce webinaire attire un public assez nombreux pour une heure aussi tardive (1 h du matin) à Sydney.
D'accord. Alors, pourquoi utilise-t-on les vecteurs ? D'accord.
En gros, l'idée, c'est que ce sont les vecteurs qui déterminent la similarité, et c'est la meilleure méthode qu'on ait trouvée pour le faire, du moins pour l'instant, quand il s'agit de comparer différentes choses. D'accord ? Comparer du texte ou, par exemple, un chiot est un chien.
Et c'est ce genre de similitude dont nous avons besoin pour mieux comprendre les consignes, les questions et l'approche sémantique de l'IA. Il existe en fait deux façons de procéder. Les algorithmes eux-mêmes, comme nous allons le voir, ne sont pas nouveaux.
Et c'est toujours la même chose : on dit que le « big data » permet de faire davantage d'analyses. Aujourd'hui, on dispose enfin de la puissance de calcul nécessaire pour mettre en œuvre l'IA comme on en a toujours rêvé. D'accord ?
Il existe donc en réalité deux façons de procéder. La méthode actuelle, ou la plus courante, consiste à utiliser une base de données NoSQL, c'est-à-dire à installer une sorte de base de données vectorielle que l'on télécharge, que l'on installe et que l'on gère séparément. C'est une solution autonome.
Il faut mettre en place et entretenir des pipelines, et nous savons tous que les pipelines sont, par nature, fragiles. Vous vous retrouvez avec des données en double. Vous devez vous familiariser avec un nouveau système et un nouveau modèle de sécurité pour ces bases de données.
Et bien sûr, dans le cadre du cycle de vie de tout cela, il faut effectuer des sauvegardes et, bien sûr, mettre en place l'infrastructure nécessaire. Voilà donc comment les gens procèdent actuellement. Ou alors, on se fie à ce dont on dispose.
Et si vous utilisez Informix aujourd’hui, c’est sans doute parce que vous lui faites confiance depuis longtemps, et vous pouvez tout simplement effectuer exactement les mêmes opérations que lorsque vous utilisiez ce moteur. D’accord ? C’est là tout avantage ce que JC vient d’évoquer à propos de ces types opaques qui font véritablement partie de notre stratégie.
Diapositive suivante. Bon, on sait tous, d’accord, on sait tous que l’IA, c’est compliqué, que le retour sur investissement lié à l’IA n’est pas facile à quantifier. Et puis, quand ChatGPT a fait son apparition, on a été séduits par cette « magie » : je pose une question, et j’obtiens une bonne réponse.
Je demande à Code Code de générer du code, et j'obtiens de bonnes applications. Mais quand il s'agit des données d'entreprise, du savoir-faire de l'entreprise, c'est en fait très difficile d'obtenir quelque chose, d'accord ? Et ces chiffres font un peu peur.
D'accord ? Vous avez vu cette étude du MIT qui affirme que GénAI aucun retour sur investissement dans 95 % des cas ? Vous avez vu que McKinsey a déclaré que le déploiement d'agents était très difficile ?
Vous voyez que Gartner affirme que 40 % des programmes seront abandonnés, d'accord ? Il y a donc vraiment beaucoup de risques liés à tout ça. Le défi est là : voulez-vous vraiment ajouter une nouvelle base de données ou une nouvelle stratégie en matière de bases de données par-dessus tout ça ?
Voilà donc le genre de questions que vous pouvez vous poser, d'accord ? Et si l'on considère l'iceberg, cet iceberg que nous connaissons tous… Eh bien, 20 % des données sont structurées, et c'est une estimation avancée par Gartner depuis longtemps.
Et ces 80 % de données non structurées. D'accord ? On a toujours cru qu'on pourrait transformer les données non structurées en données structurées, mais ce n'est pas le cas, d'accord ?
Et le problème, c'est que personne ne le fait. Une solution serait donc de rassembler tous ces éléments non structurés — tout ce texte, ces images, etc. — dans une base de données où l'on pourrait facilement effectuer des requêtes pour les explorer, comme on le ferait avec du SQL classique. D'accord ?
C'est donc là aussi l'un de ses atouts. Et comme le disait JC, la technologie BLADE, qui est au cœur d'Informix, ainsi que la conception de l'architecture, ont permis de support modèles différents. D'accord ?
Je me souviens des nombreux efforts consacrés aux séries chronologiques, ce qui a fait d'Informix un choix très populaire dans le secteur des télécommunications. Sans oublier qu'Informix a été l'un des premiers moteurs à support le format XML. C'était à l'époque où le XML était très en vogue.
J'apprécie toujours autant le XML. En somme, tout cela signifie en réalité que vous ne choisissez pas une base de données en fonction d'une tendance du moment. D'accord ?
Du genre : « Oh, on passe au format vectoriel, alors créons une nouvelle base de données pour le format vectoriel. » « Oh, on passe au format relationnel. Créons une nouvelle base de données pour le format relationnel. » D'accord ? Donc, on est vraiment en mesure de tirer parti des ressources existantes, des données existantes sans avoir à les déplacer, etc.
C'est donc vraiment pour cette raison que vous pouvez désormais disposer de ce nouveau huitième modèle de données dans cette architecture, cette architecture Informix. Et vous pouvez le constater, n'est-ce pas, lorsque vous la comparez à différents produits, d'accord ? Ici, je viens de comparer quatre bases de données très répandues.
Donc, il y a le nôtre, notre cher Informix, et puis il y a les autres, d'accord ? Donc, ça a toujours été comme ça : on a toujours prospéré en gérant les aspects techniques et technologiques correctement, grâce à l'architecture en place. D'accord.
Par exemple, quand on parle de réplication, celle-ci est pratiquement intégrée d’emblée, quel que soit le type de solution. Et cela fait toute la différence. Donc oui, certaines sont open source, d’autres sont gratuites, mais il ne s’agit pas seulement ici du coût de la licence, il s’agit aussi de la charge cognitive nécessaire pour comprendre comment ces nouveaux produits fonctionnent réellement.
Et en y réfléchissant bien, ce n'est pas une nouveauté pour Informix. Nous avons commencé, et je me souviens avoir testé Excalibur à l'époque. Comme beaucoup de choses chez Informix, ce produit était probablement en avance sur son temps, et cela s'est produit un peu avant que nous n'ajoutions les cas d'utilisation concrets et les cas d'utilisation les plus populaires.
Donc, grâce à cette nouvelle vague d'indexation, nous avons réussi à mettre en place une architecture vectorielle très compétitive pour répondre à vos besoins en matière de données. D'accord. Je pense donc que nous y sommes parvenus.
C'est vraiment impressionnant, et j'ai hâte de partager ça avec vous et d'en savoir un peu plus sur les détails techniques que JC va nous présenter, ainsi que sur la démonstration que Scott va nous faire juste après. Alors JC, à toi. D'accord.
Comme je l'ai dit tout à l'heure, l'extensibilité est l'un des points forts d'Informix. Et pour être honnête, l'ajout d'un type de données vectoriel natif à IDS n'a pris qu'environ une journée. Il s'agit simplement d'un type de données défini par l'utilisateur (UDT) opaque de taille variable, qui dépend du nombre de dimensions de votre vecteur.
Et il est stocké en mémoire interne, un peu comme on peut s'y attendre. Il s'agit d'un tableau de nombres à virgule flottante de quatre octets, précédé d'un nombre de dimensions. Nous l'avons dimensionné de telle sorte que, pour l'instant, le nombre maximal de dimensions soit de 1 536, ce qui correspond au format « trois petits vecteurs » d'OpenAI pour l'embedding de texte.
Mais s'il y a une demande pour des vecteurs plus grands, nous pouvons facilement faire évoluer le type, qui s'appelle d'ailleurs Lvector_embedding. Je suis très curieux de voir comment les utilisateurs se serviront de cet outil et ce qu'ils estimeront manquer. Nous avons des clients très créatifs et ingénieux, je ne doute donc pas que nous aurons de toute façon des améliorations intéressantes à apporter au cours des six prochains mois.
Créer ce type défini par l'utilisateur (UDT) `Lvector_embedding` ainsi qu'une poignée de fonctions associées. Vous aurez besoin de deux routines de conversion permettant de passer d'un type `VARCHAR` à un vecteur, et inversement. Vous aurez également besoin de routines d'entrée/sortie, ainsi que de routines d'envoi et de réception sur le réseau.
Cette partie-là a été relativement facile. Je ne sais pas si cela m'a pris une journée, mais ça a sans doute duré presque une journée. C'est l'indexation de vecteurs comportant des milliers de dimensions et la recherche efficace sur ces derniers qui s'avèrent un peu plus complexes.
Plutôt que de réinventer la roue, nous avons donc décidé d’utiliser une bibliothèque open source pour nous décharger d’une grande partie de ce travail fastidieux. Google en propose une. Il en existe également une de Microsoft.
Mais finalement, nous avons opté pour LanceDB. LanceDB existe certes en tant que produit de base de données autonome, mais ce n'est pas de cela qu'il s'agit ici. Ils proposent également une bibliothèque C qui prend en charge une grande partie des fonctionnalités du produit autonome, et c'est celle-ci que nous avons intégrée au blade.
Cette bibliothèque est déjà bien aboutie et propose une variété de types d’index, tels que « IVF-flat », ainsi qu’une combinaison intéressante entre IVF et HNSW. Sans oublier, bien sûr, les trois principales méthodes de calcul de distance : la distance euclidienne, la distance cosinus et le produit scalaire. Nous avons donc combiné la bibliothèque LanceDB avec une couche d'interface que nous avons développée nous-mêmes, composée d'environ 30 UDR, pour former une bibliothèque partagée appelée Lvector.bld.
Comme tous les modules, celui-ci s'installe dans le répertoire « Informix extend ». Une fois le module installé, tant que vous utilisez HCL Informix version 15.0.1.10 ou une version ultérieure, il s'enregistrera automatiquement. Vous pouvez l'utiliser avec la version 15.0.9, voire même avec des versions antérieures.
Mais l'enregistrement automatique ne se déroule pas aussi bien dans ces versions antérieures à la 15.0.1. Cela signifie que lorsque votre application appelle l'un de ces 30 UDR pour la première fois pour une base de données donnée, le moteur effectue automatiquement plusieurs opérations. Tout d’abord, il exécute le script objects.sql, qui fait partie du blade, et les définitions de ces UDR ainsi que de l’UDT d’intégration Lvector sont ajoutées aux catalogues système.
Si aucun VP de classe Lvec n'est déjà en cours d'exécution, un VP sera alors créé automatiquement. Bien entendu, nous vous recommandons d'ajouter une ligne à votre fichier de configuration, une ligne de classe VP qui inclut une classe Lvec avec le nombre de VP que vous souhaitez voir fonctionner. Mais au départ, vous n'en aurez probablement pas, c'est pourquoi nous en créerons automatiquement un pour vous.
La bibliothèque partagée Lvector est ensuite chargée et liée dynamiquement aux VP Lvec. À ce stade, votre lame est active et prête à l'emploi. Que pouvez-vous donc en faire ?
Eh bien, voici un scénario possible. Vous pouvez créer une table Informix comportant, par exemple, une colonne de type Lvector_embedding. Cette table comportera également une colonne de type « serial » ou « big serial » qui identifiera de manière unique chaque vecteur, ce qui est assez important.
Elle comporte également une colonne de type varchar nommée « métadonnées ». Cette colonne doit obligatoirement s'appeler « métadonnées ». Elle permet de stocker n'importe quel texte, mais on y inscrit généralement des catégories ou des mots-clés sur lesquels on pourrait vouloir effectuer un filtrage.
Par ailleurs, la table peut comporter des colonnes contenant l'objet qui a été Embarqué, par exemple une colonne de type varchar pour un bloc de texte, une colonne de type blob, ou quelque chose de ce genre. Il ne s'agit là que d'un exemple simple. Vous pouvez donc charger des milliers, voire des millions de vecteurs dans cette table, en identifiant chaque vecteur à l'aide de la colonne « serial ».
Vous pouvez ensuite indexer ces vecteurs et effectuer des recherches pour trouver les voisins les plus proches en créant une colonne ou une table Lance, puis en la synchronisant instantanément avec votre table Informix. Cela permettra de copier très rapidement tous les vecteurs, les identifiants et les métadonnées la table Lance, qui pourra alors être indexée et faire l'objet de recherches. Vous pouvez effectuer des recherches directement dans la table Lance.
Désolé, Nick, on veut revenir en arrière. On n'est pas encore à la diapositive suivante. Désolé.
Recule un peu plus. Encore une fois. D'accord.
Passez à la diapositive suivante, s'il vous plaît. Voilà où nous en sommes. C'est là où nous en sommes.
Vous pouvez donc effectuer une recherche directement dans la table « Lance », ou bien, bien sûr, joindre cette table à la table Informix classique ou à autant de tables Informix que vous le souhaitez afin de récupérer, par exemple, les X voisins les plus proches d'un vecteur donné, ainsi que tout texte, image ou autre objet associé à ces voisins. Vous pouvez effectuer des requêtes hybrides. En fait, vous pouvez les effectuer à plusieurs niveaux.
Par exemple, la table Lance stockera les métadonnées que les vecteurs, comme je l’ai dit, et ces métadonnées elles-mêmes faire l’objet d’une indexation et d’un filtrage. Vous pouvez également filtrer sur une ou plusieurs colonnes de votre table Informix si vous effectuez une jointure. L'objectif serait, par exemple, d'obtenir les 10 voisins les plus proches d'un vecteur en fonction à la fois de la sémantique et de certains mots-clés, puis d'affiner cette liste de voisins en filtrant selon les critères de votre choix à partir de la ou des tables Informix.
Cet affinage à l'aide de requêtes hybrides permet de réduire considérablement les « hallucinations » de l'IA, un problème bien connu, et c'est d'une simplicité enfantine avec Vector Blade. Mais où trouve-t-on tous ces vecteurs ? À quel niveau de votre application s'effectue l'encodage ?
Eh bien, c'est à vous de voir. Vous pouvez fournir vos propres représentations, et IDS se chargera volontiers de les indexer, de les rechercher et de les stocker avec tous les objets associés, tels que des images, des fichiers audio, du texte, etc., comme il l'a toujours fait. Mais pour plus de commodité, nous avons également intégré dans le blade un UDR appelé « L vector_embed », qui prendra un varchar en argument, l’enverra à OpenAI Embarquer , puis renverra un vecteur de 1 536 dimensions.
La seule condition préalable est que vous disposiez d'une clé API OpenAI et que vous la communiquiez à IDS via un nouveau paramètre de configuration. Diapositive suivante, s'il vous plaît. Voici donc un exemple illustré d'un cas d'usage RAG spécifique cas d'usage le « blade ».
Votre organisation dispose d'un grand nombre de documents confidentiels. Il peut s'agir de spécifications techniques, de documents relatifs aux politiques internes, ou de tout autre document important pour vous ou votre organisation que vous ne souhaitez pas voir diffusé sur le Web. Vous importez ces documents dans une application qui découpe le texte en segments ; en d'autres termes, un modèle entraîné divise le document en sections qui se chevauchent.
Chaque bloc est ensuite Embarqué un modèle de votre choix, et vous utilisez Vector Blade pour stocker et indexer les vecteurs obtenus ainsi que leurs blocs dans IDS. Diapositive suivante, s'il vous plaît. Il est maintenant temps d'effectuer une recherche sur ces vecteurs.
Imaginons qu'un utilisateur une requête en langage naturel dans votre application, qui intègre cette requête à l'aide du même modèle. Vous transmettez le vecteur obtenu à IDS et demandez, par exemple, les 10 voisins les plus proches. Vous ne souhaitez pas obtenir de vecteurs en retour.
Ce qu'il vous faut, ce sont des identifiants vectoriels, que vous pourrez ensuite utiliser pour retrouver les segments associés dans une table Informix. Vous transmettez ensuite ces segments de texte à un modèle de langage de grande échelle (LLM), qui met en forme la réponse, laquelle est affichée à utilisateur, ce genre de chose. Diapositive suivante, s'il vous plaît.
Ce qui est formidable avec cette lame, comme l’a évoqué JGP, c’est qu’elle ne représente qu’une partie entièrement intégrée de l’ensemble IDS. Toutes les opérations que j’ai décrites ici pourraient se dérouler dans un coin de votre base de données de production sans nuire aux performances des autres tâches de production. Vous n’avez pas besoin d’une base de données distincte.
Toutes vos données relationnelles peuvent se joindre à la fête, et tout le monde s'entend à merveille. Diapositive suivante, s'il vous plaît. Voici donc ce que vous pouvez faire pour commencer.
On suppose que vous disposez déjà de HL Informix 15.0.1.10 ou d'une version supérieure, installée et opérationnelle, et que vous avez téléchargé le fichier TAR du module. Il s'agit en fait simplement d'un fichier TAR que vous installez dans Informix pour étendre ses fonctionnalités. Vous devez configurer quelques paramètres, tels que votre clé API OpenAI si vous comptez créer des représentations vectorielles à l'aide de ce module.
Il vous suffit ensuite d'enregistrer le blade dans votre base de données, et c'est parti ! Vous pouvez enregistrer le blade manuellement ou laisser le système le faire automatiquement, comme je l'ai mentionné précédemment. Dans le répertoire Informix Direct Extend, vous trouverez un sous-répertoire intitulé « samples », dans lequel nous avons mis à votre disposition quelques exemples de scripts SQL que vous pouvez consulter, voire exécuter.
À ce stade, vous pourrez commencer à tester la trentaine d'UDR en utilisant l'accès à la base de données. À partir de là, vous pourrez commencer à développer votre application. Diapositive suivante, s'il vous plaît.
Il s'agit donc d'un workflow plus détaillé qui met en évidence plusieurs points supplémentaires. Avant de mettre votre application en ligne, vous avez probablement importé un volume important de données. Cette phase est représentée en bas du diagramme.
Vous avez créé des vecteurs pour le texte et les images, puis vous avez chargé ces représentations, ainsi que les objets associés, dans Informix à l'aide du module « blade ». Vous avez ensuite indexé ces vecteurs. Désormais, lorsque vous créez un index sur une table Lance contenant des vecteurs, cela ne rend pas la table statique.
Vous pouvez ajouter et supprimer des vecteurs sans problème, et vos recherches continueront à exploiter l'index. Ainsi, une fois la phase d'ingestion terminée, vous lancez votre application, et un client recherche un produit à l'aide d'une description en langage naturel plutôt que d'un nom de produit spécifique. « Montrez-moi vos VTT les moins chers équipés de freins à disque », par exemple.
Cette requête est Embarqué le modèle que vous avez choisi. Le vecteur obtenu est ensuite utilisé dans une requête ANN requête Informix, qui renvoie les identifiants du nombre de voisins les plus proches demandé par votre application. Ces identifiants sont utilisés pour effectuer une jointure afin de trouver les éléments les plus pertinents de votre catalogue, puis la liste est classée par coût.
En théorie, tout cela peut être réalisé en une seule requête hybride. Les résultats sont ensuite renvoyés à utilisateur, mais vous pouvez également utiliser un LLM pour mettre en forme et enrichir les résultats avant de les afficher. C'est à peu près ce que nous avons mis en place, et Scott est maintenant prêt à vous présenter une démo qui illustre ce même principe.
À toi, Scott. D'accord.
Merci, JC. Très bien. Je vais partager mon écran.
Non. Passe à la suivante… En fait, Nick, passe à la diapositive suivante. Désolé pour ça.
D'accord. Comme l'a mentionné JC, nous voulons nous assurer que nous utilisons bien Informix 15.01.10 ou une version ultérieure. Pour l'instant, nous avons effectué de nombreux tests sous Red Hat Linux.
Vous devez vous rendre sur le site d'OpenAI pour créer une clé. On nous demande souvent si cela a un coût. Or, vous pouvez obtenir une clé gratuitement.
Je crois que j'ai payé environ 10 dollars, et ça permet d'obtenir beaucoup d'intégrations. Assurez-vous d'avoir suffisamment d'espace. Au fur et à mesure que nous avancions dans ce processus, j'ai atteint ces deux seuils de deux gigaoctets.
Il serait donc préférable d'opter pour une capacité de deux gigaoctets ou plus. Et ensuite, votre archive. Diapositive suivante.
D'accord. Comme l'a mentionné JC, pour y parvenir, vous devez nous demander le fichier TAR contenant les représentations vectorielles des lames. Vous exportez toutes ces commandes dans votre shell, puis, dans votre fichier de configuration, vous préchargez toutes ces informations.
Et ensuite, au fur et à mesure que nous avancerons, vous allez enregistrer le moteur. Allez-y donc, passez à la diapositive suivante. Et voici, encore une fois, quelques exemples de scripts SQL.
Je vais en prendre note. Nous sommes en train de peaufiner cette présentation, alors merci de ne pas vous en tenir à la lettre à ces diapositives. Nous vous enverrons donc un dossier de présentation mis à jour par la suite.
Diapositive suivante. Et voici quelques exemples génériques illustrant comment nous procédons pour certains des encodages. Encore une fois, si vous remarquez l'un de ces UDR, commencez par le vecteur L, suivi d'un trait de soulignement, puis de la commande correspondante.
Très bien. Et la diapositive suivante. Et la diapositive suivante.
Et maintenant, je vais vous montrer cette démo. Bon, je vais partager tout mon écran ici. Est-ce que tout le monde voit bien ?
D'accord. Merci. Oui.
Très bien. Pour commencer, nous avons mentionné que nous disposions d’un certain nombre d’échantillons associés à la pale. Je préfère donc être franc avec tout le monde et vous présenter quelques-uns des échantillons que nous avons préparés.
En gros, la configuration du blade consiste à créer une base de données dans laquelle nous allons stocker toutes nos nouvelles informations. Nous allons exécuter l'instruction « prepare ». Cela permet d'enregistrer le blade en vue de son utilisation.
Ensuite, nous allons passer en revue plusieurs instructions CREATE. Je vais m'en occuper. Nous allons donc nous y mettre.
Croisez tous les doigts pour que les dieux des bases de données soient cléments avec moi aujourd’hui. Vous remarquerez que nous avons plusieurs bases de données ici ; nous allons donc en sélectionner une, puis nous allons exécuter quelques-uns de nos exemples. Commençons donc par la configuration.
Nous lançons donc le programme d'installation, et nous allons poursuivre en l'exécutant. En gros, cela consiste à saisir toutes les informations dans la lame, à enregistrer la lame et à tout configurer. Ensuite, je vais configurer ma clé ; il s'agit, je le rappelle, de la clé OpenAI.
Vous pouvez le faire depuis votre fichier de configuration. J'ai remarqué que chaque fois que je créais une nouvelle base de données, je devais toujours réinitialiser cette clé ou m'assurer qu'elle était bien associée. Je vais donc simplement associer cette clé, puis je vais lancer l'opération.
Et cela permet d'enregistrer automatiquement le module pour qu'il soit prêt à l'emploi. Nous sommes donc désormais prêts à l'utiliser. L'une des tâches que nous venons de terminer consiste à configurer tous les UDR dans le module.
Bon, voyons ça de plus près. Bien sûr. Merci, dieux de la démo.
Il manque un espace après le mot « from ». Oui, d'accord. Le mot « from ».
Oh, merci. Et où ça, d'ailleurs ? Hum.
Bon, alors… Je crois que le retour à la ligne s'est détraqué. Ouais. C'est comme ça qu'on voit que c'est en direct, le code SQL de débogage de… Ah, oui.
C'est ce qu'on peut faire ici pour gagner sa vie. Très bien. En gros, ça va simplement nous montrer tous les LDR associés à cette pale.
Comme l'a mentionné JC, il y en a plusieurs là-dedans : les opérations habituelles de création de tables, de compilation et de synchronisation. Tu ne partages donc plus ton écran, Scott. Vraiment ?
D'accord. On voit bien ta jolie bouille. Hmm.
Je vois Scott. Je vois son écran. Ouais.
D'accord. Je crois qu'il essaie de nous montrer sa démo. Non, tu vois l'écran ?
Tu ne vois pas l'écran, alors ? Ouais, je vois l'accès à la base de données et… D'accord. Ouais.
Ah bon ? Ouais. Je ne vois pas ça.
JC, tu me laisses un peu perplexe. Je suppose que… désolé. Je ne sais pas pourquoi, mais je ne vois que toi.
D'accord. Pas de souci. D'accord.
Bon, alors partons d'ici. On va juste faire une petite démo. En gros, ce qu'on va faire ici, c'est créer un tableau.
Nous allons créer une table de lances ou une table de vecteurs. Elle s'appelle « Demodocs ». Petite mise en garde : si vous exécutez ces commandes et que vous avez tendance à les répéter plusieurs fois, sachez que la suppression de la base de données n'entraîne pas la suppression des tables de vecteurs. Vous devrez donc les supprimer vous-même afin de repartir de zéro.
Mais ce sont là des problèmes que j'ai rencontrés au fur et à mesure que nous avancions dans ce projet. Très bien. Donc, ça existe déjà.
Et c'est parti. Voyons voir. Allez, c'est parti.
Après avoir joué avec tout ça, et toi… Je n’ai pas rangé derrière moi. Bon, d’accord.
Bref. En fait, cela nous a permis de créer plusieurs entrées vectorielles dans notre table vectorielle. Nous avons donc quelques mots sur les nombres, et nous procédons ainsi avant de valider notre travail.
Donc, si on sélectionne dans ce tableau, on devrait voir nos points d'entrée les plus proches, qui ne sont que trois dans ce cas-là. Bon, bien sûr, je vais encore tout gâcher puisque c'est là-dedans. Super.
Bon. Tant pis pour la préparation à l'avance et… Ouais.
Voyons voir. Je l'ai bien ici... Désolé. C'est l'autre.
D'accord. Attends une seconde. Bon, comme je l'ai dit, je...
C'est ce que j'ai fait. Tout ça a été créé, c'est pour ça que ça plante chez moi. D'accord.
Eh bien… Il y a une chose intéressante à noter pendant que Scott fait tout ça : dans ce scénario, Scott ne crée pas son propre encodage, donc on n’utilise pas les clés OpenAI ici. D’accord, donc… Exact.
Donc, dans ce scénario, c'est pour ça que vous voyez le vecteur et cette chaîne de caractères limitée là. Exactement. Et vous n'avez pas besoin d'utiliser OpenAI du tout pour utiliser Blade.
C'est juste que... Oui... ça facilite les choses. Mm-hmm.
Aucun d'entre eux ne fonctionne chez moi. Alors, qu'est-ce qu'on fait ? Je m'en excuse.
Je me suis retrouvé dans une situation bizarre. Non. Une table.
Alors, qu'est-ce qui se passe ? Bon, j'ai complètement foiré. Eh bien, ouais, c'est vrai que j'ai foiré ça.
Excuse-moi. DBA. Alors, Scott, tu ne pourrais pas faire une démonstration de DocuLens ?
Ouais, pas DocuLens, parce que le conteneur DocuLens a été corrompu. Oh. Donc, à moins qu’il puisse le lancer très vite, on pourra le montrer.
Je pourrais peut-être. Laisse-moi voir. Pendant que tu te renseignes là-dessus, on va faire une démonstration à la soirée Informix chez Kim, c'est ça ?
Kim, tu peux mentionner dans le chat, si tu veux, ton événement qui aura lieu prochainement à Kuala Lumpur. Comme ça, on sera prêts sur place. Oui.
On a couru dans tous les sens cette dernière semaine pour tout corriger ici. En fait, le DocuLens rend un peu mieux l'idée, mais… Je suis en train de le lancer, je pourrai peut-être vous le montrer dans une seconde.
Mon serveur est en train de démarrer. Il est presque prêt. Nous avons ici une démo d'analyseur de documents dans un conteneur, plus précisément un conteneur Docker.
Je suis donc en train de le lancer. Pendant que JC le lance. Dans ce premier exemple, et je le répète, nous ne faisons pas appel à OpenAI, nous ajoutons toutes ces instructions à notre table de vecteurs.
La commande que je viens d'exécuter va extraire les trois lignes les plus proches de ce tableau vectoriel. Et, comme il n'y en a que trois, nous allons obtenir, une fois encore, ces trois réponses. D'accord.
Bon, je vais essayer de partager ça. D'accord. Je vais arrêter de partager.
Comme je l'ai dit, je débute avec Zoom, on verra donc comment ça se passe. Zoom demande l'autorisation de contourner les restrictions. Autoriser.
Écrans. Je vais partager tout mon écran. On peut le voir, JC ?
Ouais. On voit bien Docker. D'accord.
Donc, comme je le disais, j'ai un conteneur sur lequel tourne un serveur Informix et où le blade est actif. Il s'agit simplement d'une petite démo qu'un de mes collègues a rapidement mise au point pour utiliser le blade, et qui me permet de mettre en ligne des documents. Je vais donc mettre en ligne des documents depuis…
Voyons voir. Je vais essayer de créer un dossier. Je suppose que ce sont des documents qui appartiennent à votre organisation.
Dans mon cas, j'ai quelques scripts que j'ai écrits et quelques spécifications de conception de haut niveau pour des fonctionnalités d'Informix. Et cela vise simplement à simuler en quelque sorte un cas où l'on dispose de documents confidentiels que l'on ne souhaite pas voir publiés sur le Web. Oups.
Ça n'a pas marché. Bon, on dirait que j'ai autant de chance que toi, Scott. Je vais réessayer une dernière fois.
Je vais essayer avec un document séparé.
Ouais, si tu essayais avec une seule personne, ça marcherait. Ou avec deux personnes. Donc pour l'instant, c'est…
Ah. Il se peut que mon réseau ne soit pas configuré correctement. Partons de ce principe pour l'instant.
Ce que cette démo a fait, en fait, c’est qu’elle a téléchargé et découpé les documents en segments, puis vectorisé ces segments, ce qui permet ensuite d’effectuer des requêtes en langage naturel sur ces segments, et ça fonctionne plutôt bien. Mais pour l’instant, je ne parviens pas à télécharger les documents, probablement à cause d’un problème de réseau. Je crains donc qu’il faille laisser tomber cette partie.
Mais passons à… Je vais arrêter de partager mon écran, et passons à la séance de questions-réponses. J'ai ici quelques questions auxquelles Scott et moi allons répondre.
Je vois qu'il y a un message de John. Oui, on en a reçu quelques-uns via la fenêtre dédiée aux questions-réponses. Je vais y répondre dans une seconde.
Alors, Scott, peux-tu nous dire combien coûte la Vector Blade ? C'est sans doute une question évidente que les gens vont poser. Exactement.
Donc, Vector Blade est fourni gratuitement avec Informix 15. Il n'y a donc aucun coût associé à cela. D'accord.
Une autre question se pose : quelle version d'Informix prend en charge le Vector Blade ? J'ai déjà un peu abordé ce sujet. Il faut que ce soit HL Informix, et plus précisément la version 15.01.
Nous vous recommandons désormais la version 15.01.10 ou une version ultérieure, car c'est dans cette version que nous avons intégré la fonction d'enregistrement automatique. Vous pouvez enregistrer manuellement la lame avec une version antérieure, mais il est tout simplement beaucoup plus pratique d'utiliser celle qui prend en charge l'enregistrement automatique. Cela ne fonctionnera pas avec des versions plus anciennes telles que la 14.10 ou la 12.10.
Et donc, si vous utilisez une version plus ancienne, cela pourrait être une bonne raison de passer à la version suivante. Passons à la question suivante : est-ce qu’IBM Informix dispose de cette fonctionnalité ? C’est à toi de répondre, Scott.
Oui. IBM Informix ne dispose donc pas du « Vector Blade », et nous n'autoriserons pas non plus son utilisation au sein d'IBM Informix. D'accord.
Existe-t-il un tutoriel simple qui me permettrait de tester les fonctionnalités de Vector Blade ? Oui. Comme je l'ai dit, une fois le module installé, il suffit de décompresser ce fichier dans Informix pour l'étendre, et vous trouverez dans ce répertoire un sous-répertoire intitulé « samples » qui contient quatre scripts d'exemple qui fonctionnent, je vous le garantis.
Oui. Et elles sont de plus en plus complexes et intéressantes. La première se contente donc de détecter la lame et d'effectuer une action très rudimentaire.
Quand on arrive au numéro quatre, on utilise des déclencheurs pour insérer des lignes dans la table Informix et les synchroniser automatiquement avec la table Lance, et ça devient plus intéressant. Donc… Exact. Suivant.
Ouais. Juste une petite précision là-dessus : ouais, elles fonctionnent toutes, parce que je les ai testées ce matin et hier soir, et elles fonctionnaient toutes pour moi avant la session d'aujourd'hui. Ouais.
C'est la vie, j'imagine. Alors Scott, pour toi, comment faire pour obtenir une licence d'évaluation ? D'accord.
Bon, Nick, tu voudras peut-être publier ça dans le chat, mais nous avons bien une adresse e-mail à laquelle tu peux nous contacter pour obtenir une licence d'évaluation. Le message sera transmis à la chef de produit, Emily Taylor, et à moi-même, et nous te contacterons pour lancer le processus. D'accord. Je réponds à quelques questions ici.
John a demandé : « Existe-t-il un équivalent chez HCL à IBM Informix Developer Edition ? » Nous avons donc ces éditions du côté d’IBM, mais nous n’avons généralement pas ce genre de configuration chez HCL. Oui. Et pour répondre à la question, non, nous n’en avons pas.
Chez nous, la version d'HCL Informix est toujours la version « Advanced Enterprise », comparable à celle d'IBM. Mais HCL ne prend en charge et ne commercialise que cette version-là. D'accord.
Colin demande : « Les dépendances open source auront-elles un impact sur les éditeurs de logiciels indépendants (ISV) et les fabricants d'équipements d'origine (OEM) susceptibles de commercialiser des solutions basées sur le Vector Blade ? » Je crains que cela ne dépasse mes compétences. Évidemment, LanceDB, la bibliothèque C que nous utilisons, est une bibliothèque open source, et nous disposons d’une licence Apache standard pour cette bibliothèque open source. Scott, ou l’un des autres intervenants, savez-vous si cela a une incidence sur la revente ?
Non. Non. Non.
Il va falloir qu'on revienne vers Colin. On peut s'en occuper et faire le suivi. J'espère vraiment que non.
Mais on va se pencher là-dessus. Oui, on support produit, d'accord ? Donc, si support fait partie du produit, on ne va pas externaliser le support , c'est ça ?
C'est ça. Ouais. Ouais.
Bon, je ne vois pas d'autres questions arriver, alors… Oh, nous en avons une autre de John. « Comment comptez-vous attirer de nouveaux clients HCL Informix sans édition développeur, en mettant particulièrement l'accent sur le Vector Blade, qui semble constituer un atout majeur ? » Je vais laisser Scott répondre à cette question.
Oui, je peux m'en charger. Donc, nous sommes conscients que lorsque nous… Étant donné que nous ne proposons qu'une seule version, et que chaque utilisateur différent, nous avons toutefois su faire preuve d'une grande réactivité pour nous assurer de pouvoir vous fournir ce produit. C'est donc un sujet sur lequel je serais ravi de vous aider et de mieux comprendre les spécificités de vos environnements.
Mais, comme me l'a répété à plusieurs reprises mon équipe de direction, ne laisse pas les coûts t'empêcher de conclure un accord. Donc… Et comme l'a souligné Kevin… C'est une promesse sérieuse, Scott.
D'accord ? Ah oui. Eh bien, tu ne sais pas à quel point je dois jongler en coulisses pour que tout fonctionne ici.
« Emily a donc déclaré, selon John Ritson : “Tout utilisateur intéressé peut utilisateur une licence d’essai gratuite pour une durée limitée. Mais la version que l’on peut tester est l’édition HCL Informix Enterprise.” C’est plutôt sympa. Mm-hmm. »
Mais c'est pour une durée limitée. Exact. « As-tu essayé cette lame de données dans ta langue maternelle ? » Ah, alors peut-être que la question porte sur les langues autres que l'anglais.
C'est une très bonne question. En fait, c'est JGP qui m'a posé cette question, et j'avais l'intention d'essayer une consigne en français, mais je n'ai jamais trouvé le temps de le faire. Je n'ai pas encore essayé ça.
Ça dépend… On utilise le LLM d’OpenAI, ainsi que leur modèle d’embedding, et je suppose que ça ne se limite pas à l’anglais, mais je n’ai pas encore essayé. C’est une très bonne question. Je vais devoir tester ça.
D'accord. Quand j'ai lu la question de Boyko, en entendant « langage natif », j'ai tout de suite pensé à Informix 4GL ou quelque chose comme ça. Ouais.
Je m'attendrais donc à ce que ça fonctionne avec le 4GL. Alors… Alors JGP, tu n'as pas essayé le modèle d'embedding d'OpenAI ou un LLM avec le français, n'est-ce pas ?
Non, je ne l'ai pas fait. Et j'ai hâte d'essayer la lame elle-même. Mais j'ai été un peu trop souvent en déplacement ces derniers temps... Ouais...
pour faire ça.
Mais ça figure en très bonne place sur ma liste des choses à faire avant de mourir. Alors, Boyko, j'espère que je prononce bien ton nom. Boyko a dit qu'il voulait du bulgare.
Ça va encore plus loin. Je ne saurais pas comment tester ça, mais il y a des chances que ça marche. Comme on le constate lorsqu’on utilise ces outils d’IA, ils font parfois des choses auxquelles on ne s’attend pas.
Ils s'en sortent mieux que ce à quoi on s'attendait. Il va donc falloir essayer plein de langues différentes. On dirait que les questions se font un peu plus rares par ici.
Et bien sûr, il nous reste quelques petits problèmes techniques à régler dans notre démo. Mais j'espère que vous avez pu vous faire une idée de ce que fait le Blade, que vous avez envie de l'essayer et que vous avez apprécié notre webinaire. Je pense que nous pouvons clore le webinaire maintenant.
Merci à tous d'être venus. Merci. Au revoir.
À très bientôt. Et bonne…