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à construitExistă implementări proprii pentru fiecare etapă, dar starea lor diferă și trebuie spusă pe față. Ce rulează cu vectori proprii: memoria unui board intern folosit zilnic, cu coloană `vector(1536)`, index `ivfflat` pe distanță cosinus, prag de similaritate 0,35 și o buclă care re-indexează la 30 de minute doar ce s-a schimbat. Ce rulează cu vectori la furnizor: baza de cunoștințe a agenților vocali, sincronizată către motorul de regăsire al furnizorului cu fragmente de 500 și suprapunere de 100. Ce rulează în producție **fără** vectori: baza de cunoștințe a platformei de asistenți text — extragere, împărțire, configurare per asistent și regăsire hibridă sunt scrise și funcționează, dar calea de indexare scrie coloana de vector cu `null`, deci scorul hibrid degradează la lexical, iar codul își spune singur asta prin eticheta `keyword-only`. Ce e scris și încă nu e pornit în producție: pipeline-ul propriu pe `pgvector` al platformei vocale, a cărui migrare poartă în antet mențiunea „LOCAL ONLY — do not push to prod”. Un serviciu se vinde cu harta asta pe masă, nu fără ea.
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.