Expertise · Bases de connaissances et recherche sémantique
Nous construisons le corpus à partir duquel un assistant est autorisé à répondre, avec des règles sur ce qui y entre, comment il est découpé, comment il est recherché et ce qui se passe quand la source change.
Un assistant qui répond aux clients n’est exactement aussi bon que le corpus dans lequel il lit. Nous nous occupons du corpus : extraction depuis les documents et le site, découpage en fragments, indexation, recherche, gate d’approbation humaine et actualisation. Cela inclut la réponse à la question de quand la recherche sémantique ne vaut PAS la peine.
Déjà construitIl existe des implémentations propres pour chaque étape, mais leur état diffère et doit être dit franchement. Ce qui tourne avec ses propres vecteurs : la mémoire d’un board interne utilisé quotidiennement, avec colonne `vector(1536)`, index `ivfflat` sur distance cosinus, seuil de similarité 0,35 et une boucle qui réindexe toutes les 30 minutes uniquement ce qui a changé. Ce qui tourne avec les vecteurs du fournisseur : la base de connaissances des agents vocaux, synchronisée vers le moteur de recherche du fournisseur avec des fragments de 500 et un chevauchement de 100. Ce qui tourne en production **sans** vecteurs : la base de connaissances de la plateforme d’assistants texte — extraction, segmentation, configuration par assistant et recherche hybride sont écrites et fonctionnent, mais le chemin d’indexation écrit la colonne de vecteur avec `null`, donc le score hybride retombe au lexical, et le code le dit lui-même par l’étiquette `keyword-only`. Ce qui est écrit et n’est pas encore lancé en production : le pipeline propre sur `pgvector` de la plateforme vocale, dont la migration porte dans l’en-tête la mention « LOCAL ONLY — do not push to prod ». Un service se vend avec cette carte sur la table, pas sans elle.
Un assistant qui parle aux clients ne « sait » rien. À chaque question, quelqu’un cherche au préalable quelques fragments de texte et les lui met sous les yeux, puis il formule la réponse à partir d’eux. La qualité de la réponse se décide presque entièrement à cette étape de recherche, pas dans le choix du modèle. C’est pourquoi ce service concerne le corpus et la recherche, pas le modèle.
Le travail comporte quatre parties qui se dégradent indépendamment les unes des autres. L’extraction : à partir de quels fichiers et de quelles pages nous extrayons un texte utilisable, et que faisons-nous quand nous ne pouvons pas. Le découpage : quelle taille ont les fragments, quel chevauchement ils ont, où l’on coupe une phrase. La recherche : comment les fragments sont choisis pour une question donnée, combien, et selon quel critère. Le rafraîchissement : ce qui se passe quand le document source est modifié. Un système peut être impeccable sur trois d’entre elles et inutile à cause de la quatrième.
Il existe une étape supplémentaire, que beaucoup sautent et qui change complètement le résultat : la porte d’approbation. Un corpus qui grandit tout seul, à partir des conversations, finit vite par contenir des réponses que personne n’a validées. La boucle que nous avons construite fonctionne à l’inverse : quand l’agent dit « je n’ai pas cette information », la question est enregistrée avec l’état « en attente », une personne reçoit une notification et répond, puis sa réponse passe à l’état « approuvé » et n’entre alors qu’à ce moment dans le corpus. La connaissance grandit à partir de manques réels, avec une personne dans la chaîne.
Et la partie impopulaire : la recherche sémantique n’est pas toujours le bon choix. Pour une plateforme publique propre, nous l’avons volontairement refusée. Le corpus est le texte même de la plateforme, découpé en courts passages qui portent chacun la page d’où ils viennent, ponctués par un chevauchement de mots. Sans vecteurs, sans dépôt vectoriel, sans requête réseau supplémentaire — et, plus important encore, sans aucune source en dehors du dépôt. L’assistant ne peut que répéter ce qui est déjà écrit sur le site, et toute réponse se vérifie dans une page écrite par une personne. C’est tout le mécanisme anti-invention.