<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cloud computing &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/cloud-computing/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:23:58 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>cloud computing &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Souveraineté numérique</title>
		<link>https://www.smalsresearch.be/souverainete-numerique/</link>
					<comments>https://www.smalsresearch.be/souverainete-numerique/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 18 Apr 2025 12:00:27 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22369</guid>

					<description><![CDATA[Nous assistons une fois de plus à l’émergence de questions fondamentales d’indépendance, de sécurité et d’autonomie stratégique : la souveraineté numérique est tendance.]]></description>
										<content:encoded><![CDATA[
<p><em><em>Dit artikel is ook beschikbaar in het</em> <a href="/digitale-soevereiniteit/">Nederlands</a>.</em></p>



<p>Les services numériques doivent non seulement être rentables, mais également robustes&nbsp;: ils doivent continuer à fonctionner si certains fournisseurs ou éléments de base font défaut pour une raison quelconque. Il ne s’agit pas uniquement d’une question purement technique, d’un enfermement propriétaire (<a href="https://fr.wikipedia.org/wiki/Enfermement_propri%C3%A9taire">vendor lock-in</a>) ou d’<a href="https://www.ibm.com/think/topics/multicloud">architecture multicloud</a>. Nous assistons une fois de plus à <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">l’émergence de questions fondamentales </a>d’indépendance, de sécurité et d’autonomie stratégique&nbsp;: la <em>souveraineté numérique</em> est tendance.</p>



<p>On comprend aisément pourquoi&nbsp;: avec un revirement politique d’une ampleur sans précédent, la réputation des États-Unis en tant que partenaire commercial fiable s’est volatilisée en un temps record. Du jour au lendemain, un <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">service peut être interrompu</a> ou des <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">droits de douane peuvent être introduits</a> sans raison valable. Quiconque développe ou gère des infrastructures IT critiques en tremble rien qu’à l’idée. Et l’autonomie vaut soudain à nouveau son pesant d’or.</p>



<h2 class="wp-block-heading">Piliers stratégiques</h2>



<p>Le cœur de la souveraineté numérique réside dans la capacité à choisir, déployer et gérer des solutions technologiques sans dépendances externes étendues. Ces dépendances sont souvent plus profondes que nous ne le pensons, comme l’a démontré une expérience intéressante du<a href="https://www.youtube.com/watch?v=Rxuf1598bjc"> journaliste de Gizmodo, Kashmir Hill</a>, il y a quelques années. La dépendance technologique représente toujours un risque. Afin de le minimiser, nous pouvons entre autres&nbsp;:</p>



<ul class="wp-block-list">
<li>Investir dans le développement local et <em>open source</em> des technologies</li>



<li>Construire nous-même des infrastructures robustes et décentralisées</li>



<li>Développer nos propres compétences et capacités technologiques</li>



<li>Inclure des conditions d’interopérabilité, de migration de données, de flexibilité, d’interruption, etc. dans des clauses contractuelles et les marchés publics.</li>



<li>&#8230;</li>
</ul>



<p>En matière de développement logiciel pratique également, les choix qui favorisent l’agilité technologique présentent un avantage&nbsp;:</p>



<ul class="wp-block-list">
<li>Choisir des normes ouvertes et des API robustes et standardisées</li>



<li>Développer des solutions non seulement modulaires et évolutives, mais également agnostiques vis-à-vis du cloud</li>



<li>Implémenter des middleware capables de relier différentes technologies</li>



<li>Prêter attention à la portabilité, à la compatibilité multiplateforme et à la compatibilité entre navigateurs</li>



<li>…</li>
</ul>



<p><a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">La souveraineté sur les données</a> est également très importante. Une souveraineté numérique exige de conserver un contrôle maximal sur la collecte, le stockage, le traitement et la protection des données. Cela peut se faire en organisant le stockage et le traitement des données localement, de préférence en appliquant des mécanismes solides de <a href="https://fr.wikipedia.org/wiki/Gouvernance_des_donn%C3%A9es">gouvernance des données</a>, ou en les confiant à un tiers qui offre les garanties nécessaires et opère dans le cadre d’une <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">législation compatible</a>.</p>



<p>La Belgique se débrouille plutôt bien en matière d’autonomie infrastructurelle, avec le <a href="https://gcloud.belgium.be">cloud gouvernemental G-Cloud</a> et le réseau <a href="https://www.belnet.be/">Belnet</a>, entre autres.</p>



<h2 class="wp-block-heading">Le rôle de l’<em>open source</em></h2>



<p>Les technologies <em>open source</em>, en tant que <em>vecteurs</em> d’indépendance technologique, sont des éléments fondamentaux de la souveraineté numérique. Elles offrent une totale transparence du code, permettent la modification ou le propre développement, et diminuent la dépendance vis-à-vis des géants technologiques étrangers.</p>



<p>Cependant, cela a également un coût. L’utilisation de logiciels <em>open source</em> et de normes ouvertes implique de fournir soi-même l’ensemble du support, de la formation, des mises-à-jour, de la compatibilité, du débogage, etc. En échange de l’autonomie, il faut inclure un éventail de tâches connexes. Cela implique notamment un investissement dans la gestion active, ainsi que la maintenance et le développement des connaissances. Les acteurs commerciaux proposant des solutions propriétaires s’en chargent généralement.</p>



<p>Devenir totalement autonome est donc généralement impossible. Il existe un cas d’étude bien connu, celui de la ville de Munich, qui a ambitieusement <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">basculé en 2006 vers un environnement Linux développé en interne</a>, mais qui, en raison de problèmes persistants de compatibilité et de l’augmentation des coûts de gestion qui en découle, a mis fin au programme en 2017 pour revenir à un environnement Microsoft standardisé.</p>



<h2 class="wp-block-heading">Chez nos voisins</h2>



<p>L’Allemagne est une fervente partisane de la souveraineté numérique depuis longtemps. L’<em><a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a></em> allemande utilise même le terme dans son slogan. L’expérience munichoise a donné naissance à l’actuel <em><a href="https://opensource.muenchen.de/">Open Source Programme Office</a></em> de la ville. Le niveau fédéral allemand encourage également l’indépendance technique, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Des projets propres tels que <em><a href="https://scs.community/">Sovereign Cloud Stack</a></em> (actuellement <a href="https://www.sovereigncloudstack.org/">en transformation</a> après la fin du financement),</li>



<li>Le <em><a href="https://www.sovereign.tech/">Sovereign Tech Fund</a></em>, qui fournit des fonds pour maintenir les composants <em>open source</em> essentiels,</li>



<li>Le <em><a href="https://zendis.de/">Zentrum Digitale Souveränität</a></em> (ZenDis), qui aide les gouvernements à réduire leurs dépendances technologiques.</li>
</ul>



<p>Ce dernier investit également avec succès dans deux projets propres&nbsp;:</p>



<ul class="wp-block-list">
<li>La plateforme <a href="https://opencode.de/">OpenCode</a>, où les services publics peuvent publier et partager leur code avec d’autres,</li>



<li>L’environnement de travail administratif <a href="https://opendesk.eu/en/">OpenDesk</a>, qui inclut également des options typiques pour les entreprises telles que l’authentification unique et les intégrations entre les réunions, les «&nbsp;chats&nbsp;», le calendrier et les courriers électroniques.<br></li>
</ul>



<p>La France n’est pas en reste non plus. Plusieurs initiatives en faveur de la souveraineté numérique sont menées par la Direction interministérielle du Numérique (<a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>). Ils comptent également leur propre dépôt sous la forme de <a href="https://code.gouv.fr/fr/">code.gouv.fr</a>. En outre, ils développent de manière proactive de nouvelles applications dans leur propre <a href="https://beta.gouv.fr/">incubateur</a>. Cela a donné naissance à des projets tels que <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a>, une suite <em>enterprise level</em> de bureautique qui offre des fonctionnalités telles que le chat vidéo, les webinaires et le transfert de fichiers, et qui est en cours d’extension pour inclure des traitements de texte et des tableurs. La France s’est également engagée dans une <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">stratégie de cloud computing la plus indépendante possible</a> et, tout aussi important, elle s’efforce de motiver et de former ses fonctionnaires par le biais de la <a href="https://code.gouv.fr/fr/bluehats/">communauté des Blue Hats</a>. Du côté des entreprises, l’union des entreprises du logiciel libre et du numérique ouvert (<a href="https://cnll.fr/">CNLL</a>) s’est engagé en faveur de la souveraineté numérique.</p>



<p>Ce qui est frappant à la fois avec l’<a href="https://opendesk.eu/">OpenDesk</a> allemand et <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a> française, c’est qu’ils sont tous deux également disponibles en anglais. Même dans le contexte gouvernemental, on prend de plus en plus conscience que les initiatives <em>open source</em> ont de meilleures chances de succès si l’on investit de manière proactive dans l’internationalisation. Plus prometteur encore, <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> et <a href="https://zendis.de/">ZenDis</a> ont commencé une collaboration concrète avec une <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">application de prise de notes développée conjointement</a>. Cette dernière a été présentée lors du dernier <a href="https://fosdem.org/">FOSDEM</a>, la grand-messe annuelle des développeurs <em>open source</em> à Bruxelles, où les <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">collaborations gouvernementales étaient à l’honneur</a>.</p>



<p>Le tandem franco-allemand est un signe prometteur de la volonté de l’Europe de s’unir pour promouvoir la souveraineté numérique. Nous savons déjà que les <a href="https://www.numerique.gouv.fr/espace-presse/premiers-succes-cooperation-franco-allemande-administration-numerique-souveraine-collaboration-trilaterale-avec-royaume-des-pays-bas-signature-nouvelle-declaration-dintention-commune/">Pays-Bas souhaitent se joindre</a> à cette collaboration. En effet, le <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">débat social</a> y est également bien vivant, même à la Seconde Chambre, avec des discussions sur les <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">services cloud</a> ou le <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. L’Organisation néerlandaise pour la recherche scientifique appliquée (<a href="https://www.tno.nl/en/importance-digital-sovereignty/">TNO</a>) a publié un <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">long rapport sur la souveraineté numérique</a>, les <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universités en font un sujet de discussion</a> et le <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">monde des affaires</a> y prête également attention. La souveraineté numérique est à l’ordre du jour à <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">tous les niveaux de gouvernement</a>.</p>



<h2 class="wp-block-heading">Le rôle de l’Europe</h2>



<p>L’Union européenne a un intérêt stratégique évident dans la souveraineté (numérique). Les éléments clés à cet égard sont le récent <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> et le <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Ces deux cadres législatifs visent à limiter le pouvoir des géants technologiques étrangers et à rendre le «&nbsp;terrain de jeu&nbsp;» plus équitable et transparent pour les entreprises européennes. L’UE souhaite ainsi renforcer son autonomie stratégique en établissant des règles claires en matière de gestion des données et des plateformes, rendant les États membres européens moins vulnérables aux dépendances extérieures. Le <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> et la <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">directive NIS2</a> devraient garantir que la sécurité et la fiabilité ne soient pas compromises.</p>



<p class="has-text-align-left">L’UE entreprend également de <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">nombreuses initiatives pertinentes</a>, mais toutes ne décollent pas tout aussi facilement. La fragmentation européenne est une vieille plaie. Les petits projets restent souvent petits et, une fois le financement terminé, ils se transforment en <em><a href="https://fr.wikipedia.org/wiki/Logiciel_abandonn%C3%A9">abandonware</a></em>. Par exemple, il est impossible de savoir si la nouvelle <em><a href="https://europeanopensource.academy/">European Open Source Academy</a></em> survivra à la fin de son cycle de financement en 2027. D’autre part, les consortiums à grande échelle ont de nombreux problèmes de coordination et de contrôle. Le projet <a href="https://gaia-x.eu/">GAIA-X</a> a ainsi acquis la réputation d’être <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">plus une histoire de mémos que de démos</a>, si bien que les nouveaux projets tels qu’<a href="https://openeurollm.eu/">OpenEuroLLM</a> sont également accueillis avec un certain scepticisme. Le déploiement des <em><a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">European Data Spaces</a></em> dans divers domaines devrait favoriser la souveraineté sur les données. Cela <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">deviendra obligatoire</a> pour la santé (EHDS), qui pourrait insuffler un nouvel élan. Cela ne suffit cependant pas à apaiser les inquiétudes&nbsp;: le <a href="https://www.euro-stack.info/">rapport complet EuroStack</a> de la <em>Bertelsmann Stiftung</em> présente même à l’UE une vision plus ambitieuse sur un plateau d’argent.</p>



<p>Sous l’égide de l’<a href="https://interoperable-europe.ec.europa.eu/">Europe Interopérable</a>, on retrouve l’<em>Open Source Observatory and Repository</em> (<a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>), en plus de <em><a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a></em> et <em><a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a></em>. Ils surveillent l’utilisation de l’<em>open source</em> dans les administrations gouvernementales européennes depuis plus de 15 ans maintenant, et encouragent les partenariats et la réutilisation. L’<em><a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a></em> récemment lancé devrait permettre aux pays de réutiliser plus facilement les solutions des uns et des autres. Ils publient également des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapports</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">études de cas</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">catalogues nationaux</a> (dans lesquels nous trouvons <a href="https://www.ict-reuse.be/">ict-reuse.be</a>) et une <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">lettre d’information</a>. Les gouvernements qui souhaitent mettre en place leur propre <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance"><em>Open Source Program Office</em> (OSPO)</a> afin de contribuer activement aux projets <em>open source</em> tels que <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">celui de l’UE</a>, y trouvent le soutien nécessaire. Les <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Pays-Bas</a> sont déjà convaincus. Si les autorités belges veulent contribuer visiblement à la souveraineté numérique, voilà une excellente occasion.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La souveraineté numérique est plus qu’un choix technique. C’est une stratégie continue pour retrouver un pouvoir d’agir dans un monde numérique hautement interconnecté où les éléments fondamentaux peuvent soudainement changer. Nous ne voulons pas nous contenter de consommer la technologie, mais aussi la façonner, la comprendre et la contrôler activement. Cela nous permettrait de réduire les dépendances externes et les risques qui en découlent. La pensée et la coopération européennes offrent des possibilités de synergies.</p>



<p><a id="_msocom_1"></a>L’autonomie technologique nécessite un écosystème technologique sain. Une attention constante au capital humain et au développement des connaissances est indispensable. Pour y parvenir de manière durable, les initiatives de soutien doivent bénéficier des ressources nécessaires&nbsp;:</p>



<ul class="wp-block-list">
<li>Développer de manière proactive des alternatives technologiques, qui anticipent la demande,</li>



<li>Participer à l’échange de connaissances, à des évènements et réseauter, avec des pairs, des institutions du savoir, des pays voisins, avec l’UE, etc.</li>



<li>Investir ou participer activement aux solutions <em>open source</em> existantes que l’on réutilise,</li>



<li>Construire des communautés autour de projets propres,</li>



<li>Investir dans un design attrayant et l’intuitivité des solutions propres,</li>



<li>Rendre sa propre solution disponible en dehors de ses murs&nbsp;: publier en <em>open source</em>, <a href="https://yml.publiccode.tools">intégrer dans des catalogues</a>, ajouter une documentation et une traduction anglaise, etc.</li>



<li>Travailler sur la notoriété de la marque&nbsp;: sites web, promotion, marketing, salons professionnels, médias (sociaux), etc.</li>



<li>&#8230;</li>
</ul>



<p>Les personnes intéressées par ce thème peuvent suivre les organisations et les initiatives mentionnées dans cet article sur les médias sociaux ou à travers leurs lettres d’information. Pour une analyse approfondie, le <a href="https://www.euro-stack.info/">rapport EuroStack</a> mentionné ci-dessus est intéressant. Si vous cherchez des alternatives pour les dépendances dans vos propres projets, <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a> ou <a href="https://alternativeto.net/">alternativeto.net</a> sont de bons points de départ. Enfin, la souveraineté numérique est un effort d’équipe, n’hésitez donc surtout pas à partager d’autres sources, projets ou liens intéressants dans les commentaires ci-dessous&nbsp;!</p>



<p>______________________</p>



<p><em>Ce post est une contribution de Joachim Ganseman, consultant IT chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>


]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/souverainete-numerique/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Digitale Soevereiniteit</title>
		<link>https://www.smalsresearch.be/digitale-soevereiniteit/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 04 Apr 2025 14:39:21 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22224</guid>

					<description><![CDATA[We zien vandaag fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie opnieuw ter sprake komen: Digitale Soevereiniteit is hot.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/souverainete-numerique/">en français</a>.</em></p>



<p>Digitale dienstverlening moet niet alleen kostenefficiënt zijn, maar ook robuust: het moet blijven werken als bepaalde toeleveranciers of bouwblokken het laten afweten, om welke reden dan ook. Dat is niet alleen een louter technisch vraagstuk van <a href="https://nl.wikipedia.org/wiki/Vendor_lock-in">vendor lock-in</a> of <a href="https://www.ibm.com/think/topics/multicloud">multicloud architectuur</a>. We zien fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">opnieuw ter sprake komen</a>: <em>Digitale Soevereiniteit</em> is hot.</p>



<p>De aanleiding is niet ver te zoeken: met een beleidsomslag van jewelste is de reputatie van de VS als betrouwbare handelspartner in recordtempo verdampt. Zonder aanleiding kan van de ene dag op de andere een <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">dienstverlening stopgezet</a>, of een <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">handelstarief ingevoerd</a> worden. Wie kritische infrastructuur en IT ontwikkelt of beheert, trekt lijkbleek weg van het idee alleen al. En zo is zelfredzaamheid plots weer goud waard.</p>



<h2 class="wp-block-heading">Strategische pijlers</h2>



<p>De kern van digitale soevereiniteit ligt in het kunnen kiezen, implementeren en beheren van technologische oplossingen zonder verregaande externe afhankelijkheden. Die afhankelijkheden zitten dieper dan we vaak denken, zoals enkele jaren geleden nog gedemonstreerd in een interessant <a href="https://www.youtube.com/watch?v=Rxuf1598bjc">experiment van Gizmodo journaliste Kashmir Hill</a>. Technologische afhankelijkheid vormt altijd een risico. Om dat te minimaliseren kunnen we onder andere:</p>



<ul class="wp-block-list">
<li>Investeren in lokale en open-source technologie-ontwikkeling</li>



<li>Zelf robuuste, gedecentraliseerde infrastructuren opbouwen</li>



<li>Eigen technologische vaardigheden en capaciteiten uitbouwen</li>



<li>Voorwaarden qua interoperabiliteit, data-migratie, flexibiliteit, stopzetting, … opnemen in contractuele clausules en openbare aanbestedingen</li>



<li>&#8230;</li>
</ul>



<p>Ook bij praktische software-ontwikkeling hebben keuzes die technologische wendbaarheid bevorderen een streepje voor:</p>



<ul class="wp-block-list">
<li>Verkies open standaarden en robuuste, gestandaardiseerde APIs</li>



<li>Ontwikkel niet alleen modulair en schaalbaar maar ook cloud-agnostisch</li>



<li>Implementeer eventueel middleware die verschillende technologieën kan overbruggen</li>



<li>Besteed aandacht aan portabiliteit, cross-platform en cross-browser compatibiliteit</li>



<li>…</li>
</ul>



<p>Daarnaast is ook <a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">data-autonomie</a> van groot belang. Zo vereist digitale soevereiniteit dat men maximale controle over data-verzameling, -opslag, -verwerking en -bescherming behoudt. Dat kan door de data-opslag en -verwerking lokaal te organiseren, liefst met toepassing van degelijke <a href="https://en.wikipedia.org/wiki/Data_governance">data governance</a> mechanismes, of door ze bij een derde partij onder te brengen die de nodige garanties biedt en tenminste onder een <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">compatibele wetgeving</a> opereert.</p>



<p>Het mag gerust gezegd worden dat België het op het vlak van infrastructurele autonomie, met onder andere de <a href="https://gcloud.belgium.be">overheidscloud Gcloud</a> en <a href="https://www.belnet.be/">Belnet</a>, best goed doet.</p>



<h2 class="wp-block-heading">De rol van open-source</h2>



<p>Open-source technologieën zijn, als <em>enablers</em> van technologische onafhankelijkheid, fundamentele bouwstenen voor digitale soevereiniteit. Ze bieden volledige transparantie van code, geven de mogelijkheid tot aanpassing of eigen ontwikkeling, en ze verminderen de afhankelijkheid van buitenlandse technologiereuzen.</p>



<p>Dat heeft echter ook een kostenplaatje. Wie in eigen beheer open-source software en open standaarden wil aanwenden, moet ook zelf voorzien in alle ondersteuning, opleiding, upgrades, compatibiliteit, eventueel debuggen, etc. In ruil voor autonomie moet je een heel takenpakket mee opnemen in de marge. Dat impliceert dat je moet willen investeren in actief beheer, onderhoud en kennisopbouw. Commerciële spelers met bedrijfseigen oplossingen ontzorgen je daar meestal van.</p>



<p>“All the way” zelfvoorzienend worden is daarom meestal onhoudbaar. Een bekende case studie is die van de stad München, die vanaf 2006 ambitieus <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">overschakelde naar een zelf ontwikkelde Linux-omgeving</a>, maar omwille van aanslepende compatibiliteitsproblemen en de daarmee gepaard gaande oplopende beheerskosten, in 2017 de stekker uit het programma trok en opnieuw voor een gestandaardiseerde Microsoft-omgeving koos.</p>



<h2 class="wp-block-heading">In de buurlanden</h2>



<p>Duitsland draagt het idee van digitale soevereiniteit dus al langer een warm hart toe. De Duitse <a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a> zet de term zelfs in hun slogan. De ervaring van München evolueerde naar het huidige <a href="https://opensource.muenchen.de/">Open Source Programme Office</a> van de stad. Het Duitse federale niveau moedigt technische onafhankelijkheid ook aan, met onder andere:</p>



<ul class="wp-block-list">
<li>Eigen projecten zoals <a href="https://scs.community/">Sovereign Cloud Stack</a> (lijkt momenteel <a href="https://www.sovereigncloudstack.org/">in transformatie</a> na afloop financiering),</li>



<li>Het <a href="https://www.sovereign.tech/">Sovereign Tech Fund</a>, dat financiering voorziet om kritische open-source componenten te onderhouden,</li>



<li>Het <a href="https://zendis.de/">Zentrum Digitale Souveränität</a> (ZenDis), dat overheden ondersteunt bij de afbouw van technologische afhankelijkheden.</li>
</ul>



<p>Die laatste investeert ook met succes in 2 eigen projecten:</p>



<ul class="wp-block-list">
<li>Het platform <a href="https://opencode.de/">OpenCode</a> waar overheidsdiensten hun code kunnen publiceren en delen met anderen,</li>



<li>De administratieve werkomgeving <a href="https://opendesk.eu/en/">OpenDesk</a> , die ook typische enterprise-opties omvat zoals Single Sign-on en integraties tussen meetings, chats, kalender, en email.</li>
</ul>



<p>Frankrijk zit evenmin stil. Verschillende initiatieven voor digitale soevereiniteit worden bij onze zuiderburen getrokken door <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>, de centrale interministeriële dienst voor digitalisering. Met <a href="https://code.gouv.fr/fr/">code.gouv.fr</a> hebben zij ook hun eigen code repository. Daarnaast ontwikkelen ze zelf proactief nieuwe toepassingen in een eigen <a href="https://beta.gouv.fr/">incubator</a>. Dat resulteerde onder andere in <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, een <em>enterprise-level</em> kantoorsuite die functionaliteiten zoals videochat, webinars, en file transfer aanbiedt, en nu wordt uitgebreid met tekstverwerkers en spreadsheets. Frankrijk zet eveneens in op een <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">maximaal onafhankelijke cloud-strategie</a>, en minstens zo belangrijk, werken ze aan motivatie en kennis bij hun overheidsmedewerkers via de <a href="https://code.gouv.fr/fr/bluehats/">Blue Hats community</a>. Vanuit het bedrijfsleven zet <a href="https://cnll.fr/">CNLL</a> zich in voor digitale soevereiniteit.</p>



<p>Opvallend aan zowel het Duitse <a href="https://opendesk.eu/">OpenDesk</a> als het Franse <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, is dat beide ook beschikbaar zijn in het Engels. Zelfs in overheidscontext is dus ondertussen het bewustzijn gegroeid dat open-source initiatieven betere slaagkansen hebben als men proactief investeert in internationalisering. Nog hoopgevender is dat <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> en <a href="https://zendis.de/">ZenDis</a> concreet zijn beginnen samenwerken. Op het laatste <a href="https://fosdem.org/">FOSDEM</a> evenement, de jaarlijks weerkerende hoogmis voor open-source developers in Brussel, stonden <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">overheidssamenwerkingen in de kijker</a> en presenteerden ze een <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">tesamen ontwikkelde notitie-app</a>.</p>



<p>Deze Duits-Franse tandem is een veelbelovend teken dat, als het gaat over het bevorderen van digitale soevereiniteit, de wil alleszins bestaat om Europese krachten wat te bundelen. Er is alvast bekend dat <a href="https://www.numerique.gouv.fr/espace-presse/les-premiers-succ%C3%A8s-de-la-coop%C3%A9ration-franco-allemande-en-faveur-dune-administration-num%C3%A9rique-souveraine-ouvrent-la-voie-%C3%A0-une-collaboration-trilat%C3%A9rale-avec-le-royaume-des-pays-bas-%C3%A0-travers-la-signature-dune-nouvelle-d%C3%A9claration-dintention-commune/">Nederland wil aansluiten</a> bij hun samenwerking. Daar leeft de <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">maatschappelijke discussie</a> immers ook, tot in de Tweede Kamer, met debatten over <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">clouddiensten</a> of <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. Het onderzoeksinstituut <a href="https://www.tno.nl/nl/digitale-soevereiniteit/">TNO</a> publiceerde er een <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">lijvig rapport over digitale soevereiniteit</a>, de <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universiteiten agenderen het</a>, en ook het <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">bedrijfsleven</a> besteedt er aandacht aan. Op <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">alle bestuursniveaus</a> ligt digitale soevereiniteit er op tafel.</p>



<h2 class="wp-block-heading">De rol van Europa</h2>



<p>De EU heeft een evident strategisch belang bij (digitale) soevereiniteit. Centrale elementen hierin zijn de recente <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> en <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Beide wetgevende kaders hebben tot doel om de macht van buitenlandse technologiereuzen te beperken en het speelveld voor Europese bedrijven gelijkwaardiger en transparanter te maken. Hiermee wil Europa haar strategische autonomie versterken door duidelijke regels te stellen rondom data- en platformbeheer, waardoor Europese lidstaten minder kwetsbaar worden voor externe afhankelijkheden. De <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> en de <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">NIS2-richtlijn</a> moeten erover waken dat daarbij niet aan veiligheid en betrouwbaarheid wordt ingeboet.</p>



<p class="has-text-align-left">Ze onderneemt daarnaast <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">tal van relevante initiatieven</a>, maar die komen niet allemaal even vlot van de grond. De Europese versnippering is een oud zeer. Kleine projecten blijven vaak klein, en eens de financiering afloopt, verworden ze tot <a href="https://en.wikipedia.org/wiki/Abandonware">abandonware</a>. Zo is het onvoorspelbaar of het net gestarte <a href="https://europeanopensource.academy/">European Open Source Academy</a> het einde van haar financieringsronde in 2027 zal overleven. Grootschalige consortia kennen dan weer heel wat problemen met coördinatie en sturing. Het <a href="https://gaia-x.eu/">GAIA-X</a> project heeft zo enigszins de reputatie gekregen als een verhaal van <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">meer memo&#8217;s dan demo&#8217;s</a>, wat maakt dat ook nieuwe projecten zoals <a href="https://openeurollm.eu/">OpenEuroLLM</a> met enige scepsis onthaald worden. De uitrol van de <a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">Europese Data Spaces</a> in verschillende domeinen moet data-autonomie bevorderen. Voor gezondheid (EHDS) <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">wordt deze verplicht</a>, wat misschien voor nieuw momentum kan zorgen. Maar dat is niet genoeg om de bezorgdheden weg te nemen: het lijvige <a href="https://www.euro-stack.info/">EuroStack rapport</a> van de Bertelsmann Stiftung stelt de EU zelfs op een dienblaadje een ambitieuzere visie voor.</p>



<p>Onder de paraplu van <a href="https://interoperable-europe.ec.europa.eu/">Interoperable Europe</a> vinden we naast <a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a> en <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a> ook <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>, het Open Source Observatory and Repository, terug. Zij monitoren ondertussen al meer dan 15 jaar het gebruik van open-source in Europese overheidsadministraties, en moedigen samenwerkingsverbanden en hergebruik aan. Met de recent gelanceerde <a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a> moet het gemakkelijker worden voor landen om elkaars oplossingen te hergebruiken. Daarnaast publiceren ze <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapporten</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">case studies</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">nationale catalogi</a> (waarin we <a href="https://www.ict-reuse.be/">ict-reuse.be</a> terugvinden) en een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">nieuwsbrief</a>. Overheden die zelf een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance">Open Source Program Office (OSPO)</a> willen oprichten om actief bij te dragen aan open-source projecten, net zoals de <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">EU er een heeft</a>, vinden bij hen steun. <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Nederland</a> is alvast overtuigd. Als Belgische overheden zichtbaar willen bijdragen aan digitale soevereiniteit, ligt hier nog een uitgelezen kans.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Digitale soevereiniteit is meer dan een technische keuze. Het is een continue strategie om <em>agency </em>terug te winnen in een sterk geïnterconnecteerde digitale wereld waarvan fundamentele bouwblokken plots kunnen verschuiven. We willen niet alleen technologie consumeren, maar deze ook actief vormgeven, begrijpen en controleren. Zo beperken we externe afhankelijkheden en de risico&#8217;s die daarmee gepaard gaan. Europees denken en samenwerken biedt daarbij opportuniteiten voor synergieën.</p>



<p>Technologische autonomie vereist een gezond technologisch ecosysteem. Permanente aandacht voor menselijk kapitaal en kennisopbouw zijn een must. Om dat te doen slagen op een duurzame manier, verdienen ondersteunende initiatieven de nodige middelen:</p>



<ul class="wp-block-list">
<li>Proactief technologische alternatieven ontwikkelen, anticiperend op de vraag,</li>



<li>Participeren in kennisuitwisseling, evenementen en netwerken, met vakgenoten, kennisinstellingen, buurlanden, EU, &#8230;</li>



<li>Actief meewerken aan, of investeren in, bestaande open-source oplossingen die je zelf hergebruikt,</li>



<li>Communities uitbouwen rondom eigen projecten,</li>



<li>Investeren in aantrekkelijke vormgeving en gebruiksgemak van de eigen oplossingen,</li>



<li>Eigen oplossingen inzetbaar maken buiten de eigen muren: publiceren als open-source, <a href="https://yml.publiccode.tools">integreren in catalogi</a>, een Engelse vertaling en documentatie toevoegen,</li>



<li>Werken aan naambekendheid: websites, promotie, marketing, vakbeurzen, (social) media, &#8230;</li>



<li>&#8230;</li>
</ul>



<p>Wie interesse heeft om dit thema verder op te volgen, kan de in dit artikel vermelde organisaties en initiatieven volgen op sociale media of via hun nieuwsbrieven. Voor een <em>deep dive</em> is het bovenvermelde <a href="https://www.euro-stack.info/">EuroStack rapport</a> interessant. Om alternatieven te zoeken voor afhankelijkheden in je eigen projecten, zijn <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a>, of <a href="https://alternativeto.net/">alternativeto.net</a> goede startpunten. Tot slot: digitale soevereiniteit is een <em>team effort</em>, voel je daarom vrij om andere bronnen, projecten, of interessante links te delen in de commentaren hieronder!</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PII Filtering &#8211; par ******* habitant *****</title>
		<link>https://www.smalsresearch.be/pii-filtering-fr/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Thu, 31 Oct 2024 16:24:12 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=21300</guid>

					<description><![CDATA[Comment protéger les données personnelles communiquées sans méfiance avec des agents conversationnels ? Le filtrage automatique peut partiellement aider, mais il ne s'agit pas d'une solution miracle.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar <a href="/pii-filtering/" data-type="post" data-id="21217">in het Nederlands</a>.</em></p>



<p>Avec la popularité des applications d&#8217;IA dotées d&#8217;une interface conversationnelle, un &#8220;vieux casse-tête&#8221; refait surface : comment protéger les données personnelles communiquées, souvent sans méfiance, à un système automatisé de conversation ? Par extension, cette question se pose pour toute application où des données personnelles doivent être partagées avec des tiers. Les dépendances externes d&#8217;une application peuvent toutefois constituer un enchevêtrement complexe. Il n&#8217;est pas non plus toujours possible (ou économiquement viable) d&#8217;éviter les grands acteurs d&#8217;infrastructures informatiques d&#8217;IA &#8211; du moins pas si vous souhaitez rester à jour avec les dernières capacités de manière rentable.</p>



<p>Une solution possible est connue sous le nom de <em>PII Filtering</em>. En l&#8217;occurrence, PII est l&#8217;acronyme anglais de <em>Personal(ly) Identifiable/Identifying Information</em>, c&#8217;est-à-dire les informations par lesquelles une personne peut être identifiée. L&#8217;idée est assez simple&nbsp;: un filtre supplémentaire est placé devant l&#8217;application, qui élimine les informations à caractère personnel des données d&#8217;entrée, avant que celles-ci ne soient transmises à l&#8217;application. Si cela fonctionne bien, alors ce que l&#8217;application fait de ces données en coulisses n&#8217;a pas d&#8217;importance.</p>



<h2 class="wp-block-heading">PII vs. Personal Data</h2>



<p>Avant toute chose, il est crucial de comprendre que les PII ne peuvent être assimilées à des &#8220;Personal Data&#8221; telles que définies par le RGPD et d&#8217;autres législations européennes. Les PII sont un concept ancré dans le droit états-unien. Elles font généralement référence à un ensemble fini d&#8217;informations d&#8217;identification qui peuvent être utilisées dans le but de distinguer ou de confirmer l&#8217;identité d&#8217;un individu, comme les numéros de registre national, les adresses et les numéros de téléphone. Aux États-Unis, les réglementations sont souvent prescriptives à cet égard&nbsp;: par exemple, <a href="https://fr.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act">HIPAA</a> (réglementation sur la protection des données relatives à la santé) comprend <a href="https://www.luc.edu/its/aboutus/itspoliciesguidelines/hipaainformation/the18hipaaidentifiers/">une liste de 18 identifiants</a> définis comme PII. Cela présente le grand avantage d&#8217;être relativement facile à implémenter : une fois que la liste est entièrement cochée, il n&#8217;y a plus guère de débat juridique possible.</p>



<p>En revanche, la <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">RGPD</a> européenne adopte une approche de principe : elle définit un concept plus large de <a href="https://gdpr-info.eu/art-4-gdpr/"><em>Personal Data</em></a> (données à caractère personnel). Ce concept englobe &#8220;toute information se rapportant à une personne physique identifiée ou identifiable&#8221;. Cela signifie que même des informations en apparence anodines, comme la couleur &#8220;rouge&#8221;, peuvent être considérées comme des données à caractère personnel si elles se rapportent, par exemple, à la couleur préférée d&#8217;une personne. Cette définition des données à caractère personnel dépendante du contexte rend toutefois pratiquement impossible le développement de détecteurs ou de filtres génériques et polyvalents pour ces données. Ce qui est considéré comme des données personnelles ou non doit être évalué au cas par cas. Les développeurs sont donc confrontés à une personnalisation plus importante qu&#8217;ils ne le souhaiteraient, mais les juristes, les DPO et les <a href="https://www.autoriteprotectiondonnees.be/">autorités de protection des données</a> ont également fort à faire avec de telles évaluations dans chaque pays de l&#8217;UE.</p>



<p>Ainsi, les solutions de filtrage des PII considérées comme conformes aux États-Unis risquent toujours de ne l&#8217;être que partiellement dans l&#8217;Union européenne. Étant donné que le terme <em>PII</em> semble s&#8217;être imposé sur le marché mondial, nous ferons dans le présent article uniquement référence aux PII. Gardez toujours à l&#8217;esprit que le <em>Personal Data</em> doit être le point de départ dans le contexte de l&#8217;UE.</p>



<h2 class="wp-block-heading"><strong>Détection et filtrage des PII</strong></h2>



<p>Afin de filtrer des informations textuelles, nous utilisons généralement des modèles techniques de <a href="https://fr.wikipedia.org/wiki/Reconnaissance_de_formes">reconnaissance de formes</a> et de <a href="https://fr.wikipedia.org/wiki/Traitement_automatique_des_langues">traitement automatique des langues (Natural Language Processing ou NLP)</a>. Ces modèles analysent les données non structurées, à la recherche de formes telles que des formats d&#8217;adresses e-mail ou des chaînes numériques similaires à un registre national ou encore à des numéros de téléphone, afin de les modifier ou de les anonymiser par la suite. En outre, des <a href="https://fr.wikipedia.org/wiki/Expression_r%C3%A9guli%C3%A8re">formes d&#8217;expression régulières (regex)</a> personnalisées sont souvent ajoutées afin de reconnaître les formes d&#8217;informations sensibles spécifiques à l&#8217;application en question.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2024/10/image.png"><img fetchpriority="high" decoding="async" width="523" height="217" src="/wp-content/uploads/2024/10/image.png" alt="Een voorbeeld van PII Filtering met NER in het Nederlands. Bron: pii-filter library (c) &quot;HabaneroCake&quot;, MIT license" class="wp-image-21255" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/image.png 523w, https://www.smalsresearch.be/wp-content/uploads/2024/10/image-300x124.png 300w" sizes="(max-width: 523px) 100vw, 523px" /></a><figcaption class="wp-element-caption">Filtrage PII basé sur NER en néerlandais. Source: <a href="https://github.com/HabaneroCake/pii-filter/">pii-filter library</a> (c) &#8220;HabaneroCake&#8221;, MIT license</figcaption></figure>



<p>Un filtrage efficace des PII repose en grande partie sur la <a href="https://fr.wikipedia.org/wiki/Reconnaissance_d%27entit%C3%A9s_nomm%C3%A9es">reconnaissance d&#8217;entités nommées (Named Entity Recognition ou NER)</a>, une méthode NLP qui identifie les entités telles que les noms, les dates et les lieux dans un texte. Nous avons déjà publié des articles plus détaillés à ce sujet &#8211; voir les articles sur <a href="/facetten-van-natural-language-processing-deel-2/">NLP</a> et <a href="/named-entity-recognition-une-application-du-nlp-utile/">NER</a>.  L&#8217;essor de l&#8217;IA générative n&#8217;a pas encore changé grand-chose à la conception des techniques de NER. Aujourd&#8217;hui encore, de nombreux outils de filtrage de PII utilisent des outils NLP sous-jacents bien développés tels que <a href="https://www.nltk.org/">NLTK</a>, <a href="https://spacy.io/">SpaCy</a> ou <a href="https://flairnlp.github.io/">Flair</a>.</p>



<p>Toutefois, les PII peuvent également apparaître dans des images&nbsp;: scans de documents, photos de visages ou de plaques d&#8217;immatriculation, &#8230; Le filtrage de ces images nécessite une approche plus sophistiquée, car les données sensibles peuvent apparaître sous diverses formes, de notes écrites à la main à des reflets sur des photos. La <a href="https://fr.wikipedia.org/wiki/Reconnaissance_optique_de_caract%C3%A8res">reconnaissance optique de caractères (Optical Character Recognition ou OCR)</a> permet d&#8217;extraire le texte des images et de le convertir dans un format qui peut être analysé de la même manière que des données textuelles. Une fois le texte extrait, il est soumis au même processus de filtrage des PII à l&#8217;aide de techniques NLP. Des algorithmes de <a href="https://fr.wikipedia.org/wiki/D%C3%A9tection_d%27objet">reconnaissance d&#8217;objets</a> sont utilisés pour reconnaître les éléments visuels sensibles (tels que des visages ou des documents personnels) contenus dans l&#8217;image elle-même.</p>



<p>Une fois identifiées, vous devez décider de ce qu&#8217;il convient de faire avec les PII détectées. Les options possibles sont les suivantes&nbsp;:</p>



<ul class="wp-block-list">
<li>Remplacement/substitution par une autre valeur. Celle-ci peut éventuellement être créée à l&#8217;aide d&#8217;un <a href="https://faker.readthedocs.io/en/master/">outil de génération de données synthétiques</a>, de sorte que l&#8217;original est remplacé par une alternative d&#8217;apparence réaliste.</li>



<li>Masquage / obfuscation : remplacement par un caractère ou une barre. Cela peut être partiel, afin de ne pas perdre des informations plus générales utiles : par exemple, nous pouvons toujours voir que +32********* est un numéro de téléphone belge.</li>



<li>Suppression</li>



<li><a href="https://fr.wikipedia.org/wiki/Fonction_de_hachage_cryptographique">Hashage</a> (mieux encore avec <a href="https://fr.wikipedia.org/wiki/Salage_(cryptographie)">salage</a> en prévention des attaques par force brute)</li>



<li>Chiffrement, éventuellement <a href="https://en.wikipedia.org/wiki/Format-preserving_encryption">préservant le format des données</a></li>



<li>&#8230;</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png"><img decoding="async" width="722" height="410" data-id="21264" src="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png" alt="" class="wp-image-21264" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34.png 722w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34-300x170.png 300w" sizes="(max-width: 722px) 100vw, 722px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png"><img loading="lazy" decoding="async" width="736" height="374" data-id="21265" src="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png" alt="" class="wp-image-21265" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02.png 736w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02-300x152.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Texte en néerlandais (à gauche) anonymisé par masquage (au centre) ou par substitution (à droite) à l&#8217;aide de <a href="https://language-tools.ec.europa.eu/NLPServices/NLP">l&#8217;outil UE NLP Service</a>. Notons que le texte anonymisé contient toujours des éléments de carrière uniques à partir desquels il est possible de déduire l&#8217;identité cachée. Texte source : <a href="https://pers.kortrijk.be/228363-kortrijk-rouwt-om-overlijden-martine-tanghe">Ville de Courtrai, communiqué de presse 23/07/2023</a></figcaption></figure>



<p>D&#8217;autres fonctions sont possibles pour les images, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Flouter (blurring) ou d&#8217;autres filtres. Il convient de noter ici que certains filtres sont <a href="https://github.com/Y-Vladimir/SmartDeblur?tab=readme-ov-file">réversibles</a>.</li>



<li>Couvrir ou écraser, par exemple avec un rectangle noir.</li>



<li>&#8230;</li>
</ul>



<p>Le remplacement par une valeur alternative du même type peut toutefois créer des effets étranges, parce que l&#8217;entité n&#8217;est pas toujours estimée correctement ou parce que trop peu ou pas de contexte peut être pris en compte. Certains outils peuvent ainsi ne pas tenir compte du genre si un nom aléatoire doit être choisi pour remplacer un nom réel, alors qu&#8217;il peut être nécessaire de rester cohérent sur le plan grammatical ou sur celui du contenu. Il arrive également que des noms de lieux comme Saint-Nicolas soient anonymisés en Saint-Kevin, par exemple, parce que Nicolas est considéré comme un prénom. Les modèles de langage utilisés pour la NER ne sont donc certainement pas sans faille.</p>



<p>En théorie, il devrait être possible d&#8217;obtenir de meilleurs résultats en activant des LLM modernes comme le GPT-4 avec des requêtes construites de manière intelligente. Des mesures dans ce sens verront probablement le jour sous peu, mais aujourd&#8217;hui, les besoins en puissance de calcul, la consommation d&#8217;énergie et le coût sont encore trop élevés, et le temps de réponse trop lent, pour que l&#8217;on puisse également faire évoluer cette méthode.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png"><img loading="lazy" decoding="async" width="793" height="364" data-id="21271" src="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png" alt="" class="wp-image-21271" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02.png 793w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-300x138.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-768x353.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Le même texte en néerlandais (à gauche) anonymisé par ChatGPT 4o (à droite). La requête demandait de &#8220;remplacer toutes les PII et les données personnelles, y compris les professions, les employeurs, les villes, les dates et les âges&#8221;. Notez que le texte résultant a également été réécrit. Pour y remédier, il faudrait développer et affiner la requête.</figcaption></figure>



<h2 class="wp-block-heading">Outils courants</h2>



<p>Les personnes qui recherchent des systèmes de filtrage de PII à grande échelle, et qui souhaitent pouvoir analyser des bases de données, des réseaux ou des systèmes de fichiers entiers, se retrouvent avec des outils du domaine de <a href="https://en.wikipedia.org/wiki/Data_loss_prevention_software"><em>Data Loss Prevention</em></a>. Ceux-ci devraient empêcher les PII de quitter l&#8217;entreprise sans les autorisations nécessaires. Vous trouverez une vue d&#8217;ensemble du marché en consultant <a href="https://www.gartner.com/reviews/market/data-loss-prevention">Gartner</a>. Les géants de l&#8217;internet proposent également des solutions à cette fin, telles que <a href="https://aws.amazon.com/fr/macie/">Amazon Macie</a>, <a href="https://cloud.google.com/security/products/sensitive-data-protection">Google SDP</a>, ou <a href="https://www.ibm.com/guardium">IBM Guardium</a>. Les techniques utilisées dans ces outils sont quelque peu liées à celles utilisées dans les enquêtes judiciaires &#8211; ce que l&#8217;on appelle l&#8217;eDiscovery, que nous avons <a href="/e-discovery/">déjà évoquée</a>.</p>



<p>Les créateurs d&#8217;applications sont plus susceptibles d&#8217;être intéressés par des outils sous forme de bibliothèques, de SDK ou d&#8217;API. Les projets intéressants sont les suivants&nbsp;:</p>



<ul class="wp-block-list">
<li>Pour le texte&nbsp;:
<ul class="wp-block-list">
<li><a href="https://microsoft.github.io/presidio/">Microsoft Presidio</a> (<a href="https://huggingface.co/spaces/presidio/presidio_demo">démo</a>) (également disponible sous la forme de <a href="https://microsoft.github.io/presidio/samples/docker/">Docker containers</a>), ou le service <a href="https://learn.microsoft.com/en-us/azure/ai-services/language-service/personally-identifiable-information/quickstart?tabs=windows&amp;pivots=rest-api">PII detection</a> sur Azure</li>



<li><a href="https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html">Amazon Comprehend</a> (<a href="https://ai-service-demos.go-aws.com/comprehend">démo</a>)</li>



<li>Les <a href="https://language-tools.ec.europa.eu/NLPServices">EU Language Services pour NLP</a> (login requis)&nbsp;: pour l&#8217;anonymisation des documents dans les langues de l&#8217;UE, basé sur le <a href="https://gitlab.com/MAPA-EU-Project/mapa_project">projet MAPA-EU</a>, qui peut également être utilisé via Docker Compose.</li>



<li><a href="https://github.com/tokern/piicatcher">PIICatcher</a> (pour les bases de données et les systèmes de fichiers)</li>
</ul>
</li>



<li>Pour les images&nbsp;:
<ul class="wp-block-list">
<li><a href="https://google.github.io/magritte/">Google Magritte</a>&nbsp;(pour les visages)</li>



<li><a href="https://github.com/facebookresearch/EgoBlur">Meta Research EgoBlur</a>&nbsp;(Pour les visages et les plaques d&#8217;immatriculation)</li>



<li><a href="https://github.com/redhuntlabs/Octopii">OctoPII</a> (Uniquement la détection, pas la modification. Pour les documents et les systèmes de fichiers, avec <a href="https://github.com/tesseract-ocr/tesseract">Tesseract</a> pour OCR engine)</li>
</ul>
</li>
</ul>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h36_03.png"><img loading="lazy" decoding="async" width="1024" height="401" src="/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png" alt="Gezichts-anonymisering met Meta EgoBlur. " class="wp-image-21260" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-300x117.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-768x300.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03.png 1268w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Anonymisation faciale avec Meta EgoBlur. Source&nbsp;: Nikhil Raina et.al.,&nbsp;<a href="https://arxiv.org/abs/2308.13093">“EgoBlur: Responsible Innovation in Aria”</a>, avec des illustrations du&nbsp;<a href="https://ai.meta.com/datasets/casual-conversations-v2-dataset/">CCV2 dataset</a> public.</figcaption></figure>



<p>De nouvelles recherches sont également en cours dans les universités. Par exemple, <a href="https://github.com/EdyVision/pii-codex">PII-Codex</a> est le résultat d&#8217;un <a href="https://joss.theoj.org/papers/10.21105/joss.05402">projet universitaire</a> qui présente une caractéristique intéressante : il utilise Presidio ou Comprehend, mais ajoute également son propre score de risque, qui devrait être en mesure d&#8217;indiquer dans quelle mesure la non modification des PII reconnues pourrait poser un risque (pour la protection de la vie privée). En outre, la plupart des outils permettent d&#8217;utiliser <a href="https://microsoft.github.io/presidio/analyzer/customizing_nlp_models/">vos propres modèles ou ceux des autres</a>. Vous pouvez éventuellement les <a href="https://huggingface.co/docs/transformers/training">peaufiner</a> vous-même pour la détection personnalisée d&#8217;entités, si vous disposez des données d&#8217;entraînement nécessaires à cet effet.</p>



<p>Si nous nous appuyons sur la NER ou la reconnaissance d&#8217;images pour la détection des PII, il est certain que certaines PII ne seront pas détectées et qu&#8217;à l&#8217;inverse, des éléments non PII pourraient également être classés à tort comme des PII. En effet, aucune de ces technologies ne garantit une précision de 100 %. Le taux de réussite variera également en fonction de la langue et du type d&#8217;entité que l&#8217;on tente de détecter. Il n&#8217;est jamais possible de garantir complètement le remplacement ou la suppression de chaque entité dans un document. Il est donc préférable de vérifier le résultat dans les cas où cela s&#8217;avère crucial.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Les solutions de filtrage de PII peuvent certainement contribuer à la protection de données à caractère personnel dans un contexte européen. Les techniques sont simples à comprendre et faciles à mettre en œuvre. Cependant, il n&#8217;y a jamais de garantie de détection totalement précise de toutes les données à caractère personnel et, dans la plupart des cas, leur utilisation devra donc faire partie d&#8217;un éventail plus large de mesures visant à promouvoir la conformité avec la RGPD et d&#8217;autres législations.</p>



<p>La technologie sous-jacente est &#8220;classique&#8221;, en ce sens que la NER et la reconnaissance d&#8217;images existent depuis longtemps et sont désormais bien développées. Aujourd&#8217;hui, elles bénéficient de l&#8217;attention portée à l&#8217;intelligence artificielle, et <a href="https://paperswithcode.com/task/named-entity-recognition-ner">toutes sortes d&#8217;étalons</a> leur permettent de rester à la pointe du progrès. Dans la pratique, nous constatons que le texte anonymisé qui en résulte peut parfois sembler un peu aliénant, car certains problèmes tout aussi classiques auxquels la NER est généralement confrontée ne sont pas encore totalement écartés.</p>



<p>______________________</p>



<p><em><em><em>Cette contribution a été soumise par Joachim Ganseman, consultant IT chez Smals Research. Elle a été rédigée en son nom propre et ne prend pas position au nom de Smals.</em></em></em></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PII Filtering &#8211; door ******* uit *****</title>
		<link>https://www.smalsresearch.be/pii-filtering/</link>
					<comments>https://www.smalsresearch.be/pii-filtering/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Mon, 28 Oct 2024 15:37:54 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[gdpr]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=21217</guid>

					<description><![CDATA[Hoe beschermen we persoonsgegevens die nietsvermoedend via chat worden meegedeeld? PII filtering kan gedeeltelijk helpen, maar is geen mirakeloplossing.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/pii-filtering-fr">en français</a>.</em></p>



<p>De populariteit van AI-toepassingen met chat-interface, doet een &#8220;oud zeer&#8221; opnieuw bovendrijven: hoe beschermen we persoonsgegevens die, vaak nietsvermoedend, via chat worden meegedeeld aan een geautomatiseerd systeem? Bij uitbreiding stelt zich deze vraag voor elke toepassing waar persoonsgebonden gegevens gedeeld moeten worden met derde partijen. De externe afhankelijkheden van een toepassing kunnen echter een ingewikkeld kluwen zijn. Het is ook niet altijd mogelijk (of economisch haalbaar) om de grote spelers op het vlak van cloud- en AI-diensten te ontwijken &#8211; toch niet als je mee wil zijn met de nieuwste mogelijkheden op een kostenefficiënte manier.</p>



<p>Een mogelijke oplossing staat bekend als <em>PII Filtering</em>. PII is daarbij het Engels acroniem voor <em>Personal(ly) Identifiable/Identifying Information</em>, i.e. de informatie waarmee iemand geïdentificeerd kan worden. Het idee is eenvoudig genoeg: we plaatsen een extra filter voor de applicatie, die de persoonlijke gegevens uit de input filtert, voordat die input aan de applicatie wordt doorgegeven. Als dat goed lukt, dan maakt het in principe niet meer uit wat de applicatie achter de schermen met die gegevens doet.</p>



<h2 class="wp-block-heading">PII vs. Personal Data</h2>



<p>Het is allereerst cruciaal om te begrijpen dat &#8220;PII&#8221; niet gelijkgesteld kan worden aan &#8220;Personal Data&#8221; zoals de GDPR en andere Europese wetgeving die definieert. PII is een concept dat geworteld is in Amerikaanse wetgeving. Het doelt meestal op een eindige set identificatiegegevens die kunnen worden gebruikt om de identiteit van een individu te onderscheiden of te achterhalen, zoals rijksregisternummers, adressen en telefoonnummers. Amerikaanse regelgeving is op dat vlak vaak prescriptief van aard: zo bevat de <a href="https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act">HIPAA</a> (privacywetgeving m.b.t. gezondheidsgegevens) een <a href="https://www.luc.edu/its/aboutus/itspoliciesguidelines/hipaainformation/the18hipaaidentifiers/">lijst met 18 identifiers</a> die als PII worden gedefinieerd. Dat heeft als groot voordeel dat het relatief gemakkelijk te implementeren is: wanneer het lijstje helemaal afgevinkt kan worden, is er ook juridisch weinig discussie meer.</p>



<p>Daarentegen hanteert de Europese <a href="https://eur-lex.europa.eu/eli/reg/2016/679/oj">GDPR (AVG)</a> een principiële benadering: ze definieert een breder concept van <a href="https://gdpr-info.eu/art-4-gdpr/">Personal Data</a> (persoonsgegevens). Dat omvat &#8220;alle informatie met betrekking tot een geïdentificeerde of identificeerbare natuurlijke persoon&#8221;. Dit betekent dat zelfs schijnbaar onschuldige informatie, zoals de kleur &#8220;rood&#8221;, beschouwd kan worden als persoonsgegeven, als deze bijvoorbeeld betrekking heeft tot iemands lievelingskleur. Deze contextafhankelijke definitie van persoonsgegevens, maakt het echter ook nagenoeg onmogelijk om generieke, algemeen inzetbare detectoren of filters ervoor te ontwikkelen. Wat beschouwd wordt als persoonsgegeven of niet, moet geval per geval beoordeeld worden. Niet alleen ontwikkelaars worden daardoor geconfronteerd met meer maatwerk dan hen lief is, ook juristen, DPO&#8217;s en <a href="https://www.gegevensbeschermingsautoriteit.be/">Gegevensbeschermingsautoriteiten</a> hebben met zulke beoordelingen in elk EU-land de handen vol.</p>



<p>Oplossingen voor PII-filtering die voldoen voor gebruik in de VS, lopen dus altijd een risico om in de EU slechts gedeeltelijk tegemoet te komen aan de vereisten. Omdat de term <em>PII </em>echter algemeen ingang gevonden lijkt te hebben in de globale markt, spreken we verder in dit artikel enkel nog over PII. Houd wel permanent in het achterhoofd dat <em>Personal Data</em> altijd het uitgangspunt moet zijn in EU-context.</p>



<h2 class="wp-block-heading">PII Detectie en Filtering</h2>



<p>Om tekstuele input te filteren gebruiken we doorgaans <a href="https://en.wikipedia.org/wiki/Pattern_recognition">patroonherkenningstechnieken</a> en <a href="https://en.wikipedia.org/wiki/Natural_language_processing">Natural Language Processing (NLP)</a>-modellen. Deze modellen scannen ongestructureerde gegevens, op zoek naar patronen zoals e-mailformaten of numerieke reeksen die lijken op rijksregister- of telefoonnummers, om deze nadien te kunnen redigeren of anonimiseren. Daarnaast worden aangepaste <a href="https://en.wikipedia.org/wiki/Regular_expression">regex-patronen</a> vaak toegevoegd om vormen van gevoelige informatie te herkennen die specifiek zijn voor de betrokken toepassing.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2024/10/image.png"><img loading="lazy" decoding="async" width="523" height="217" src="/wp-content/uploads/2024/10/image.png" alt="Een voorbeeld van PII Filtering met NER in het Nederlands. Bron: pii-filter library (c) &quot;HabaneroCake&quot;, MIT license" class="wp-image-21255" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/image.png 523w, https://www.smalsresearch.be/wp-content/uploads/2024/10/image-300x124.png 300w" sizes="auto, (max-width: 523px) 100vw, 523px" /></a><figcaption class="wp-element-caption">PII Filtering op basis van NER in het Nederlands. Bron: <a href="https://github.com/HabaneroCake/pii-filter/">pii-filter library</a> (c) &#8220;HabaneroCake&#8221;, MIT license</figcaption></figure>



<p>Effectieve PII-filtering steunt sterk op <a href="https://en.wikipedia.org/wiki/Named-entity_recognition">Named Entity Recognition (NER)</a>, een NLP-methode die entiteiten zoals namen, data en locaties in een tekst identificeert. We publiceerden daar eerder al over in meer detail &#8211; zie deze artikels over <a href="/facetten-van-natural-language-processing-deel-2/">NLP</a> en <a href="https://itdaily.be/blogs/software/named-entity-recognition-een-praktische-toepassing-van-natural-language-processing/">NER</a>. De opkomst van generatieve AI heeft aan de opzet van NER-technieken nog niet veel veranderd. Ook vandaag gebruiken veel PII filtering tools achterliggend goed ontwikkelde NLP-toolkits zoals <a href="https://www.nltk.org/">NLTK</a>, <a href="https://spacy.io/">SpaCy</a> of <a href="https://flairnlp.github.io/">Flair</a>.</p>



<p>PII kan echter ook in afbeeldingen opduiken: scans van documenten, foto&#8217;s van gezichten of nummerplaten, &#8230; Om dat weg te filteren is een geavanceerdere aanpak vereist, omdat de gevoelige gegevens kunnen verschijnen in uiteenlopende vormen, van handgeschreven notities tot reflecties in foto&#8217;s. <a href="https://en.wikipedia.org/wiki/Optical_character_recognition">Optical Character Recognition (OCR)</a> wordt gebruikt om tekst uit afbeeldingen te extraheren en deze om te zetten in een formaat dat op dezelfde manier kan worden geanalyseerd als tekstuele gegevens. Zodra de tekst is geëxtraheerd, ondergaat deze hetzelfde PII-filterproces met behulp van NLP-technieken. In gevallen waarin de afbeelding zelf gevoelige visuele elementen bevat (zoals gezichten of persoonlijke documenten), worden algoritmen voor <a href="https://en.wikipedia.org/wiki/Object_detection">beeldherkenning</a> gebruikt om dergelijke inhoud te herkennen.</p>



<p>Eenmaal geïdentificeerd, moet je besluiten wat er dient te gebeuren met de gedetecteerde PII. Opties kunnen zijn:</p>



<ul class="wp-block-list">
<li>Vervanging / substitutie door een andere waarde. Deze kan eventueel aangemaakt worden met een <a href="https://faker.readthedocs.io/en/master/">synthetic data tool</a>, zodat het origineel vervangen wordt door een realistisch ogend alternatief.</li>



<li>Masking / obfuscation: vervang door een karakter of balkje. Dit kan eventueel gedeeltelijk, om nuttige algemenere info niet te verliezen: zo zien we nog dat +32********* een Belgisch telefoonnummer is.</li>



<li>Verwijdering</li>



<li><a href="https://en.wikipedia.org/wiki/Cryptographic_hash_function">Hashing</a> (best met <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)">salt</a> ter preventie van brute-force attacks)</li>



<li>Encryptie, eventueel <a href="https://en.wikipedia.org/wiki/Format-preserving_encryption">formaat-behoudend</a></li>



<li>&#8230;</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png"><img loading="lazy" decoding="async" width="722" height="410" data-id="21264" src="/wp-content/uploads/2024/10/2024-10-28_21h51_34.png" alt="" class="wp-image-21264" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34.png 722w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h51_34-300x170.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png"><img loading="lazy" decoding="async" width="736" height="374" data-id="21265" src="/wp-content/uploads/2024/10/2024-10-28_21h52_02.png" alt="" class="wp-image-21265" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02.png 736w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h52_02-300x152.png 300w" sizes="auto, (max-width: 736px) 100vw, 736px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Nederlandstalige tekst (links) geanonymiseerd door maskeren (midden) of substitutie (rechts) met behulp van de <a href="https://language-tools.ec.europa.eu/NLPServices/NLP">EU NLP Service</a>. Merk op dat de geanonymiseerde tekst nog steeds unieke carrière-elementen vermeldt waaruit men de verborgen identiteit kan afleiden. Bron tekst: <a href="https://pers.kortrijk.be/228363-kortrijk-rouwt-om-overlijden-martine-tanghe">Stad Kortrijk, persbericht 23/07/2023</a> </figcaption></figure>



<p>Voor afbeeldingen zijn andere functies mogelijk, waaronder:</p>



<ul class="wp-block-list">
<li>Vervagen (blurring) of andere filters. Hierbij moet men er wel op letten dat sommige filters <a href="https://github.com/Y-Vladimir/SmartDeblur?tab=readme-ov-file">omkeerbaar</a> zijn.</li>



<li>Bedekken of overschrijven, bijvoorbeeld met een zwarte rechthoek.</li>



<li>&#8230;</li>
</ul>



<p>De vervanging door een alternatieve waarde van dezelfde soort kan echter soms ook voor vreemde effecten zorgen, omdat de entiteit niet altijd correct wordt ingeschat of omdat er te weinig of geen rekening gehouden kan worden met de context. Zo kan het zijn dat sommige tools geen acht slaan op het geslacht als een willekeurige naam moet worden gekozen om een echte naam te vervangen, terwijl dat wel nodig kan zijn om grammaticaal of inhoudelijk consistent te blijven. We zien soms ook plaatsnamen zoals Sint-Niklaas geanonymiseerd worden als pakweg Sint-Kevin, omdat Niklaas als naam werd aanzien. De taalmodellen gebruikt voor NER zijn dus zeker niet feilloos.</p>



<p>Het zou in theorie mogelijk moeten zijn om betere resultaten te halen door recente LLMs zoals GPT-4 in te schakelen met slim geconstrueerde prompts. Waarschijnlijk zullen er binnenkort wel stappen in die richting worden gezet, maar vandaag zijn de rekenkrachtvereisten, energieconsumptie en kostprijs daarvan nog te hoog, en de responstijd te traag, om dat ook schaalbaar te maken.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h50_28.png"><img loading="lazy" decoding="async" width="1024" height="536" data-id="21266" src="/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png" alt="" class="wp-image-21266" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-1024x536.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-300x157.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28-768x402.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h50_28.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png"><img loading="lazy" decoding="async" width="793" height="364" data-id="21271" src="/wp-content/uploads/2024/10/2024-10-28_22h24_02.png" alt="" class="wp-image-21271" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02.png 793w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-300x138.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_22h24_02-768x353.png 768w" sizes="auto, (max-width: 793px) 100vw, 793px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Dezelfde Nederlandstalige tekst (links) geanonymiseerd door ChatGPT 4o (rechts). In de prompt werd gevraagd &#8220;vervang alle PII en persoonsgegevens, ook de beroepen, werkgevers, steden, datums en leeftijden.&#8221; Merk op dat de resulterende tekst ook herschreven werd. Om dat tegen te gaan zou verdere uitbreiding en verfijning van de prompt nodig zijn.</figcaption></figure>



<h2 class="wp-block-heading">Tools of the trade</h2>



<p>Wie op zoek gaat naar grootschalige PII Filtering systemen, en volledige databases, netwerken of filesystems wil kunnen scannen, komt terecht bij <a href="https://en.wikipedia.org/wiki/Data_loss_prevention_software">Data Loss Prevention</a> tools. Deze moeten verhinderen dat PII het bedrijf verlaat zonder de nodige toelatingen. Voor een marktoverzicht verwijzen we naar <a href="https://www.gartner.com/reviews/market/data-loss-prevention">Gartner</a>. Ook de internetgiganten bieden daarvoor oplossingen aan, zoals <a href="https://aws.amazon.com/macie/">Amazon Macie</a>, <a href="https://cloud.google.com/security/products/sensitive-data-protection">Google SDP</a>, of <a href="https://www.ibm.com/guardium">IBM Guardium</a>. De daarbij gebruikte technieken zijn enigszins verwant met diegene gebruikt bij forensisch onderzoek &#8211; de zogenaamde eDiscovery, waarover we ook al <a href="/e-discovery/">eerder schreven</a>.</p>



<p>Applicatiebouwers zijn waarschijnlijk eerder geïnteresseerd in tools in de vorm van bibliotheken, SDK&#8217;s of API&#8217;s. Interessante projecten zijn:</p>



<ul class="wp-block-list">
<li>Voor tekst:
<ul class="wp-block-list">
<li><a href="https://microsoft.github.io/presidio/">Microsoft Presidio</a> (<a href="https://huggingface.co/spaces/presidio/presidio_demo">demo</a>) (ook beschikbaar als <a href="https://microsoft.github.io/presidio/samples/docker/">Docker containers</a>), of de <a href="https://learn.microsoft.com/en-us/azure/ai-services/language-service/personally-identifiable-information/quickstart?tabs=windows&amp;pivots=rest-api">PII detection</a> dienst op Azure</li>



<li><a href="https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html">Amazon Comprehend</a> (<a href="https://ai-service-demos.go-aws.com/comprehend">demo</a>)</li>



<li>De <a href="https://language-tools.ec.europa.eu/NLPServices">EU Language Services voor NLP</a> (inloggen vereist): voor anonymisering van documenten in EU-talen, gebaseerd op het <a href="https://gitlab.com/MAPA-EU-Project/mapa_project">MAPA-EU project</a> dat ook via Docker Compose gebruikt kan worden.</li>



<li><a href="https://github.com/tokern/piicatcher">PIICatcher</a> (voor databases en filesystems)</li>
</ul>
</li>



<li>Voor afbeeldingen:
<ul class="wp-block-list">
<li><a href="https://google.github.io/magritte/">Google Magritte</a> (voor gezichten)</li>



<li><a href="https://github.com/facebookresearch/EgoBlur">Meta Research EgoBlur</a> (voor gezichten en nummerplaten)</li>



<li><a href="https://github.com/redhuntlabs/Octopii">OctoPII</a> (enkel detectie en geen redactie. Voor documenten en filesystems, met <a href="https://github.com/tesseract-ocr/tesseract">Tesseract</a> als OCR engine)</li>
</ul>
</li>
</ul>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2024/10/2024-10-28_21h36_03.png"><img loading="lazy" decoding="async" width="1024" height="401" src="/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png" alt="Gezichts-anonymisering met Meta EgoBlur. " class="wp-image-21260" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-1024x401.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-300x117.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03-768x300.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/10/2024-10-28_21h36_03.png 1268w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Gezichts-anonymisering met Meta EgoBlur. Bron: Nikhil Raina et.al., <a href="https://arxiv.org/abs/2308.13093">&#8220;EgoBlur: Responsible Innovation in Aria&#8221;</a>, met foto&#8217;s uit de publieke <a href="https://ai.meta.com/datasets/casual-conversations-v2-dataset/">CCV2 dataset</a>.</figcaption></figure>



<p>Ook in academia wordt er verder onderzoek gedaan. Zo is <a href="https://github.com/EdyVision/pii-codex">PII-Codex</a> het resultaat van een <a href="https://joss.theoj.org/papers/10.21105/joss.05402">universitair project</a>, met een interessante feature: achterliggend maakt het gebruik van Presidio of Comprehend, maar het voegt ook een eigen risico-score toe, die moet kunnen aangeven in welke mate het niet-redigeren van de herkende PII een (privacy-)risico zou kunnen inhouden. Daarnaast laten de meeste tools ook toe om <a href="https://microsoft.github.io/presidio/analyzer/customizing_nlp_models/">andere of eigen modellen</a> in te pluggen. Deze kan je eventueel zelf <a href="https://huggingface.co/docs/transformers/training">gefinetuned</a> hebben voor detectie van custom entiteiten, als je daarvoor de nodige trainingsdata hebt.</p>



<p>Als we vertrouwen op NER of beeldherkenning voor PII-detectie, dan kunnen we er zeker van zijn dat sommige PII niet gedetecteerd zal worden, en dat ook andersom niet-PII foutief als PII aangemerkt kan worden. Geen van deze technologieën garandeert immers 100% accuraatheid. Het succespercentage zal ook variëren afhankelijk van de taal en het entiteitstype dat men probeert te detecteren. Volledige vervanging of verwijdering van elke entiteit in een document kan nooit worden gegarandeerd. Daar waar dat cruciaal is, wordt het resultaat achteraf dus best nog gecontroleerd.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Oplossingen voor PII-filtering kunnen in Europese context zeker bijdragen aan de bescherming van persoonsgegevens. De techniek is eenvoudig te begrijpen en gemakkelijk inzetbaar. Er is echter nooit een garantie op volledige accurate detectie van alle persoonsgegevens, en dus zal hun gebruik in de meeste gevallen een onderdeel moeten zijn van een ruimere waaier aan maatregelen om <em>compliance </em>met GDPR en andere wetgeving te bevorderen.</p>



<p>De achterliggende technologie is &#8220;klassiek&#8221;, in de zin dat NER en beeldherkenning al lang bestaan en ondertussen goed ontwikkeld zijn. Vandaag profiteren ze mee van de aandacht voor artificiële intelligentie, en <a href="https://paperswithcode.com/task/named-entity-recognition-ner">allerlei benchmarks</a> laten toe om de state-of-the-art op te volgen. In de praktijk merken we wel dat de resulterende geanonymiseerde tekst soms wat bevreemdend kan overkomen, omdat enkele al even klassieke problemen waar NER typisch mee kampt, nog altijd niet helemaal van de baan zijn.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/pii-filtering/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>De meilleurs résultats de recherche grâce aux bases de données vectorielles</title>
		<link>https://www.smalsresearch.be/de-meilleurs-resultats-de-recherche-grace-aux-bases-de-donnees-vectorielles/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Thu, 20 Jun 2024 08:47:05 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Information management]]></category>
		<guid isPermaLink="false">/?p=20640</guid>

					<description><![CDATA[Dans le monde de l'IA, les bases de données vectorielles sont devenues un outil important. 
Elles nous permettent de stocker et de fouiller efficacement de grandes quantités de données, fonction essentielle pour de nombreuses applications.]]></description>
										<content:encoded><![CDATA[
<p><a href="/betere-zoekresultaten-met-vector-databases/"><em>Nederlandstalige versie</em></a></p>



<p>Dans le monde de l&#8217;IA, les bases de données vectorielles sont devenues un outil important. <br />Elles nous permettent de stocker et de fouiller efficacement de grandes quantités de données non structurées, fonction essentielle pour de nombreuses applications.</p>



<h2 class="wp-block-heading">Embeddings vectoriels</h2>



<p>Les bases de données vectorielles gèrent essentiellement des données vectorielles, c&#8217;est-à-dire des données représentées sous la forme d&#8217;une série de nombres, ou vecteurs, représentant un point dans un espace à haute dimension. La quantité de nombres dans un vecteur correspond à la quantité de dimensions.</p>
<p>La conversion des données en vecteurs s&#8217;opère sur la base d&#8217;un modèle d&#8217;embedding, où est captée leur signification (sémantique). On parle d&#8217;embeddings vectoriels. Par exemple, le vecteur du mot &#8220;chiot&#8221; sera proche du vecteur du mot &#8220;chien&#8221;, et plus éloigné du vecteur du mot &#8220;pomme&#8221;.</p>
<figure id="attachment_20558" aria-describedby="caption-attachment-20558" style="width: 659px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/vector_embeddings.png"><img loading="lazy" decoding="async" class="wp-image-20558 size-full" src="/wp-content/uploads/2024/06/vector_embeddings.png" alt="Vector embeddings" width="659" height="236" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/vector_embeddings.png 659w, https://www.smalsresearch.be/wp-content/uploads/2024/06/vector_embeddings-300x107.png 300w" sizes="auto, (max-width: 659px) 100vw, 659px" /></a><figcaption id="caption-attachment-20558" class="wp-caption-text">Création d&#8217;embeddings vectoriels</figcaption></figure>
<p>Ces vecteurs sont sauvegardés sous forme indexée dans une base de données vectorielle, de manière à ce que la recherche s&#8217;effectue le plus efficacement possible.</p>



<h2 class="wp-block-heading">Recherche de similarité</h2>



<p>Les bases de données vectorielles se distinguent par le fait qu&#8217;elles peuvent rechercher des données similaires par rapport à une requête d&#8217;entrée (query). On parle de recherche de similarité&nbsp;: au lieu de rechercher des correspondances exactes, les bases de données vectorielles peuvent rechercher les données les plus similaires à une requête donnée.</p>
<p>Cette &#8220;similarité&#8221; est calculée sur la base de la distance entre les vecteurs dans l&#8217;espace de recherche&nbsp;: plus la distance entre deux vecteurs est faible, plus ils sont similaires. Plusieurs fonctions permettent de calculer la distance entre deux vecteurs. Le choix peut dépendre de plusieurs facteurs&nbsp;: les données, le modèle d&#8217;embedding utilisé et le compromis entre précision et vitesse d&#8217;exécution.</p>
<figure id="attachment_20567" aria-describedby="caption-attachment-20567" style="width: 860px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/distance_functions_EN.png"><img loading="lazy" decoding="async" class="wp-image-20567 size-full" src="/wp-content/uploads/2024/06/distance_functions_EN.png" alt="Distance functions" width="860" height="307" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN.png 860w, https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN-300x107.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN-768x274.png 768w" sizes="auto, (max-width: 860px) 100vw, 860px" /></a><figcaption id="caption-attachment-20567" class="wp-caption-text">Fonctions de distance pour le calcul de la similarité entre vecteurs</figcaption></figure>
<p>La méthode la plus évidente pour chercher les vecteurs les plus proches d&#8217;un vecteur de requête consiste à comparer exhaustivement le vecteur de requête à tous les vecteurs présents dans la base de données (k-Nearest-Neighbors ou kNN). Nous avons ainsi la certitude de trouver les k vecteurs les plus proches. Dans ce cas, nous obtenons une précision parfaite. L&#8217;inconvénient de cette méthode est qu&#8217;elle nécessite beaucoup de calculs et qu&#8217;elle n&#8217;est pas extensible.</p>
<figure id="attachment_20561" aria-describedby="caption-attachment-20561" style="width: 482px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/kNN.png"><img loading="lazy" decoding="async" class="size-full wp-image-20561" src="/wp-content/uploads/2024/06/kNN.png" alt="" width="482" height="377" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/kNN.png 482w, https://www.smalsresearch.be/wp-content/uploads/2024/06/kNN-300x235.png 300w" sizes="auto, (max-width: 482px) 100vw, 482px" /></a><figcaption id="caption-attachment-20561" class="wp-caption-text">k-Nearest-Neighbors</figcaption></figure>
<p>Pour effectuer des recherches plus performantes parmi de grandes quantités de données, il existe des méthodes approximatives où il n&#8217;y a pas de comparaison exhaustive entre la requête et les vecteurs de la base de données (Approximative Nearest Neighbors ou ANN). La méthode la plus utilisée est sans doute HNSW (Hierarchical Navigable Small World). Il s&#8217;agit d&#8217;une méthode basée sur un graphe hiérarchique où chaque nœud représente un vecteur et où les liens entre les nœuds indiquent la distance qui les sépare. Lors d&#8217;une recherche, l&#8217;algorithme navigue efficacement dans le graphe, en commençant par les niveaux supérieurs (où la densité des nœuds est moindre) et en descendant progressivement vers les niveaux inférieurs pour trouver les voisins les plus proches.</p>



<h2 class="wp-block-heading">Recherche hybride</h2>



<p>La recherche hybride est une technique de recherche avancée qui combine les atouts de la recherche vectorielle et ceux de la recherche classique par mot-clé. La recherche par mot-clé (recherche lexicale) utilise les correspondances exactes des mots-clés dans le texte. Elle est rapide et simple, mais manque parfois de nuances contextuelles. La recherche vectorielle (recherche sémantique) tient compte du sens. Dans la pratique, une combinaison des deux méthodes débouche sur de meilleurs résultats que chaque méthode individuelle.</p>
<figure id="attachment_20572" aria-describedby="caption-attachment-20572" style="width: 562px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/hybrid_search_EN.png"><img loading="lazy" decoding="async" class="wp-image-20572 size-full" src="/wp-content/uploads/2024/06/hybrid_search_EN.png" alt="Hybrid search" width="562" height="646" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/hybrid_search_EN.png 562w, https://www.smalsresearch.be/wp-content/uploads/2024/06/hybrid_search_EN-261x300.png 261w" sizes="auto, (max-width: 562px) 100vw, 562px" /></a><figcaption id="caption-attachment-20572" class="wp-caption-text">Recherche hybride</figcaption></figure>
<p>Pour améliorer encore la pertinence des résultats de recherche, il est possible d&#8217;appliquer le classement sémantique, qui consiste à utiliser un modèle de machine learning avancé pour réorganiser les résultats de la recherche en fonction de leur pertinence par rapport à la requête. Il s&#8217;agit généralement d&#8217;une fonction payante ou d&#8217;une API facturée sur la base de son utilisation. À titre d&#8217;exemple d&#8217;un tel service, nous pouvons citer <a href="https://cohere.com/rerank">Cohere Rerank</a>.</p>



<h2 class="wp-block-heading">Domaines d&#8217;application</h2>



<p>Les bases de données vectorielles peuvent être utilisées pour un grand nombre d&#8217;applications :</p>
<ul>
<li>Recherche sémantique &#8211; Il est clair à présent que les bases de données vectorielles peuvent grandement contribuer à l&#8217;amélioration des résultats d&#8217;une recherche sur la base de la signification sémantique plutôt que sur la seule base des correspondances exactes.</li>
<li><em>Question answering &amp; RAG</em>&#8211; Depuis peu, les <a href="/un-propre-systeme-de-questions-reponses-base-sur-des-modeles-de-langue/">systèmes génératifs de questions-réponses</a> font l&#8217;objet d&#8217;une grande attention. Dans un tel système, les bases de données vectorielles peuvent servir d&#8217;extracteur. On parle de <a href="/qualite-dun-systeme-generatif-de-questions-reponses/"><em>Retrieval Augmented Generation (RAG)</em></a>. Dans cette approche, un modèle de langage formule des réponses basées sur les informations les plus pertinentes d&#8217;une base de connaissances.</li>
<li>Recommandations &#8211; Les bases de données vectorielles peuvent également être utilisées pour recommander des informations ou des produits aux utilisateurs, en fonction ou non de leur historique ou de leurs préférences.</li>
</ul>
<p>Recherche de similarité multimodale (<em>Multimodal similarity search</em>) &#8211; Certains modèles d&#8217;embedding sont capables de créer des vecteurs pour plusieurs types de données : non seulement du texte, mais aussi des images, de l&#8217;audio ou de la vidéo. Les bases de données vectorielles peuvent ainsi permettre la recherche de contenus similaires, qu&#8217;il s&#8217;agisse de textes, d&#8217;images, d&#8217;audio ou de vidéo.</p>



<h2 class="wp-block-heading">Aperçu du marché</h2>



<p>Les acteurs initiaux du marché des bases de données vectorielles comme <a href="https://www.trychroma.com/">Chroma</a>, <a href="https://milvus.io/">Milvus</a>, <a href="https://www.pinecone.io/">Pinecone</a> et <a href="https://weaviate.io/">Weaviate</a>, proposaient essentiellement des solutions spécifiques. <br />Ce n&#8217;est que plus tard que les acteurs plus établis ont pris le train en marche. Ainsi, <a href="https://www.elastic.co/enterprise-search/vector-search">ElasticSearch</a> et Postgresql (avec l&#8217;extension <a href="https://github.com/pgvector/pgvector">pgvector</a>) prennent également en charge la recherche vectorielle. Bien évidemment, les grands acteurs sont également représentés dans le paysage : Microsoft propose <a href="https://azure.microsoft.com/en-us/products/ai-services/ai-search">Azure AI Search</a>, Google <a href="https://cloud.google.com/vertex-ai/docs/vector-search/overview">Vector AI Vector Search</a> et Amazon <a href="https://aws.amazon.com/kendra/">Kendra</a>.</p>
<p>Presque toutes les solutions s&#8217;intègrent à des solutions d&#8217;orchestration LLM telles que <a href="/publications/document/?docid=279">LangChain</a> et <a href="https://www.llamaindex.ai/">LlamaIndex</a>. De plus en plus, les bases de données vectorielles fournissent également un support intégré pour RAG, où la création d&#8217;embeddings et l&#8217;invocation d&#8217;un modèle de langage n&#8217;ont plus besoin d&#8217;être orchestrées en dehors de la base de données vectorielle.</p>
<p>Il convient également de mentionner <a href="https://neo4j.com/docs/cypher-manual/current/indexes/semantic-indexes/vector-indexes/">Neo4j</a>, qui prend en charge la recherche vectorielle en plus de la recherche dans le graphe, ce qui le rend adapté aux cas de données structurées et non structurées.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Enfin, nous pouvons affirmer que les bases de données vectorielles peuvent fournir des résultats de recherche meilleurs et plus pertinents qu&#8217;une simple recherche par mot-clé. <br>Dans les applications génératives de réponse aux questions, les bases de données vectorielles peuvent aider un modèle de langage à formuler des réponses basées sur les informations les plus pertinentes d&#8217;une base de connaissances. S&#8217;il n&#8217;est pas évident de faire fonctionner de grands modèles de langage sur une infrastructure propriétaire, cela est bien possible avec une base de données vectorielle en guise de composant d&#8217;extraction, ce qui peut être un facteur favorable dans le contexte de la protection des données.</p>
<p>D&#8217;après notre propre expérience, la recherche hybride, à savoir une combinaison de recherche vectorielle et de recherche lexicale, peut être une solution rapide pour améliorer les résultats de la recherche. Le classement sémantique peut en outre renforcer la pertinence des résultats.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em data-rich-text-format-boundary="true">Ce post est une contribution individuelle de Bert Vanhalst, IT consultant chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Betere zoekresultaten met vector databases</title>
		<link>https://www.smalsresearch.be/betere-zoekresultaten-met-vector-databases/</link>
					<comments>https://www.smalsresearch.be/betere-zoekresultaten-met-vector-databases/#comments</comments>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Mon, 10 Jun 2024 08:46:52 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Information management]]></category>
		<guid isPermaLink="false">/?p=20557</guid>

					<description><![CDATA[In de wereld van AI zijn vector databases een belangrijk hulpmiddel geworden. Ze stellen ons in staat om grote hoeveelheden gegevens efficiënt op te slaan en te doorzoeken, wat cruciaal is voor veel toepassingen.]]></description>
										<content:encoded><![CDATA[
<p><a href="/de-meilleurs-resultats-de-recherche-grace-aux-bases-de-donnees-vectorielles/"><em>Version en français</em></a></p>



<p>In de wereld van AI zijn vector databases een belangrijk hulpmiddel geworden. Ze stellen ons in staat om grote hoeveelheden ongestructureerde gegevens efficiënt op te slaan en te doorzoeken, wat cruciaal is voor veel toepassingen.</p>



<h2 class="wp-block-heading">Vector embeddings</h2>



<p>Vector databases beheren in essentie vectorgegevens. Dat zijn gegevens die worden weergegeven als een reeks getallen, of vectoren, die een punt in een hoog-dimensionale ruimte vertegenwoordigen. Het aantal getallen in een vector komt overeen met het aantal dimensies.</p>
<p>Het omzetten van gegevens naar vectoren gebeurt op basis van een embedding model, waarbij de betekenis (semantiek) ervan gecapteerd wordt. We spreken van <em>vector embeddings</em>. Zo zal de vector voor het woord “puppy” bijvoorbeeld dicht bij de vector voor “hond” liggen, en verder weg van “appel”.</p>
<figure id="attachment_20558" aria-describedby="caption-attachment-20558" style="width: 659px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/vector_embeddings.png"><img loading="lazy" decoding="async" class="size-full wp-image-20558" src="/wp-content/uploads/2024/06/vector_embeddings.png" alt="Vector embeddings" width="659" height="236" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/vector_embeddings.png 659w, https://www.smalsresearch.be/wp-content/uploads/2024/06/vector_embeddings-300x107.png 300w" sizes="auto, (max-width: 659px) 100vw, 659px" /></a><figcaption id="caption-attachment-20558" class="wp-caption-text">Het aanmaken van vector embeddings</figcaption></figure>
<p>Die vectoren worden geïndexeerd in een vector database opgeslagen, op zo een manier dat het opzoeken zo efficiënt mogelijk verloopt.</p>



<h2 class="wp-block-heading">Similarity search</h2>



<p>Het unieke aan vector databases is dat ze kunnen zoeken naar gelijkaardige gegevens ten opzichte van een inputvraag (<em>query</em>). We spreken van <em>similarity search</em>: in plaats van te zoeken naar exacte overeenkomsten kunnen vector databases zoeken naar gegevens die het meest vergelijkbaar zijn met een gegeven query.</p>
<p>Dat ‘vergelijkbaar zijn’ wordt berekend op basis van de afstand tussen vectoren in de zoekruimte: hoe kleiner de afstand tussen twee vectoren, hoe vergelijkbaarder ze zijn. Er bestaan verschillende functies om de afstand tussen twee vectoren te berekenen. De keuze kan afhangen van verschillende factoren: de gegevens, het gebruikte embedding model, en de afweging tussen accuraatheid en snelheid van uitvoering.</p>
<figure id="attachment_20567" aria-describedby="caption-attachment-20567" style="width: 860px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/distance_functions_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-20567" src="/wp-content/uploads/2024/06/distance_functions_EN.png" alt="Distance functions" width="860" height="307" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN.png 860w, https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN-300x107.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/06/distance_functions_EN-768x274.png 768w" sizes="auto, (max-width: 860px) 100vw, 860px" /></a><figcaption id="caption-attachment-20567" class="wp-caption-text">Afstandsfuncties voor het berekenen van de gelijkenis tussen vectoren</figcaption></figure>
<p>De meest voor de hand liggende manier om de dichtste vectoren te zoeken ten opzichte van een query vector is om de query vector exhaustief te vergelijken met alle vectoren in de databank (<em>k-Nearest-Neighbors</em> of kNN). Op die manier zijn we zeker dat we de k dichtste vectoren terugvinden. We krijgen  in dit geval perfecte accuraatheid. De keerzijde is echter dat het een rekenintensieve methode is die niet schaalt.</p>
<figure id="attachment_20561" aria-describedby="caption-attachment-20561" style="width: 482px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/kNN.png"><img loading="lazy" decoding="async" class="size-full wp-image-20561" src="/wp-content/uploads/2024/06/kNN.png" alt="" width="482" height="377" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/kNN.png 482w, https://www.smalsresearch.be/wp-content/uploads/2024/06/kNN-300x235.png 300w" sizes="auto, (max-width: 482px) 100vw, 482px" /></a><figcaption id="caption-attachment-20561" class="wp-caption-text">k-Nearest-Neighbors</figcaption></figure>
<p>Om performanter te kunnen zoeken in grote hoeveelheden gegevens zijn er approximatieve methodes waarbij er geen exhaustieve vergelijking is tussen de query en de vectoren in de databank (<em>Approximative Nearest Neighbors</em> of ANN). De meest gebruikte methode hiervoor is wellicht HNSW (<em>Hierarchical Navigable Small World</em>). Dat is een methode op basis van een hiërarchische graaf waarbij elke node een vector vertegenwoordigt en de links tussen de nodes de afstand ertussen aangeeft. Tijdens een zoekopdracht navigeert het algoritme efficiënt door de graaf, beginnend op hogere niveaus (waar de dichtheid van nodes lager is) en geleidelijk afdalend naar lagere niveaus om de dichtste buren te vinden.</p>



<h2 class="wp-block-heading">Hybrid search</h2>



<p><em>Hybrid search</em> is een geavanceerde zoektechniek die de sterktes van vector search combineert met die van een klassieke <em>keyword search</em>. Keyword search (lexicaal zoeken) maakt gebruik van exacte overeenkomsten van trefwoorden in de tekst. Het is snel en eenvoudig, maar mist soms de contextuele nuances. Bij vector search (semantisch zoeken) wordt de betekenis in rekening gebracht. In de praktijk blijkt dat een combinatie van beide methodes betere resultaten oplevert dan elke methode afzonderlijk.</p>
<figure id="attachment_20572" aria-describedby="caption-attachment-20572" style="width: 562px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/06/hybrid_search_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-20572" src="/wp-content/uploads/2024/06/hybrid_search_EN.png" alt="Hybrid search" width="562" height="646" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/06/hybrid_search_EN.png 562w, https://www.smalsresearch.be/wp-content/uploads/2024/06/hybrid_search_EN-261x300.png 261w" sizes="auto, (max-width: 562px) 100vw, 562px" /></a><figcaption id="caption-attachment-20572" class="wp-caption-text">Hybrid search</figcaption></figure>
<p>Om de relevantie van de zoekresultaten nog te verbeteren kan er <em>semantic ranking</em> toegepast worden. Daarbij wordt een geavanceerd machine learning model gebruikt om de zoekresultaten te herschikken op basis van hun relevantie ten opzichte van de zoekopdracht. Dit is typisch een betalende feature of API waarbij je betaalt volgens verbruik. Een voorbeeld van zo’n dienst is <a href="https://cohere.com/rerank">Cohere Rerank</a>.</p>



<h2 class="wp-block-heading">Toepassingsgebieden</h2>



<p>Vector databases kunnen voor een divers aantal toepassingen ingezet worden:</p>
<ul>
<li><em>Semantic search</em> – Het mag ondertussen duidelijk zijn dat vector databases een belangrijke bijdrage kunnen leveren bij het verbeteren van de zoekresultaten op basis van semantische betekenis in plaats van enkel exacte matches.</li>
<li><em>Question answering &amp; RAG</em> – Recent is er veel aandacht voor <a href="/een-eigen-vraag-en-antwoordsysteem-op-basis-van-taalmodellen/">generatieve vraag-antwoordsystemen</a>. Vector databases kunnen ingezet worden als retriever component in zo’n systeem. Men spreekt over <em><a href="/kwaliteit-van-een-generatief-vraag-antwoordsysteem/">Retrieval Augmented Generation (RAG)</a></em>. Dit is een aanpak waarbij een taalmodel antwoorden formuleert op basis van de meest relevante informatie uit een kennisbank.</li>
<li><em>Aanbevelingen (recommender systemen)</em> – Vector databases kunnen ook ingezet worden om informatie of producten aan te bevelen aan gebruikers, al dan niet op basis van hun historiek of voorkeuren.</li>
<li><em>Multimodal similarity search</em> – Bepaalde embedding modellen zijn in staat om vectoren aan te maken voor meerdere types van gegevens: niet enkel tekst, maar ook afbeeldingen, audio of video. Vector databases kunnen op die manier zoeken mogelijk maken naar gelijkaardige content, ongeacht of het gaat over tekst, afbeeldingen, audio of video.</li>
</ul>



<h2 class="wp-block-heading">Marktoverzicht</h2>



<p>De initiële spelers op de markt voor vector databases, zoals <a href="https://www.trychroma.com/">Chroma</a>, <a href="https://milvus.io/">Milvus</a>, <a href="https://www.pinecone.io/">Pinecone</a> en <a href="https://weaviate.io/">Weaviate</a>, boden voornamelijk purpose-built oplossingen aan. Pas later sprongen de meer gevestigde spelers op de kar. Zo bieden <a href="https://www.elastic.co/enterprise-search/vector-search">ElasticSearch</a> en Postgresql (met de <a href="https://github.com/pgvector/pgvector">pgvector</a> extensie) ook ondersteuning voor vector search. Uiteraard zijn ook de grote spelers vertegenwoordigd in het landschap: Microsoft biedt <a href="https://azure.microsoft.com/en-us/products/ai-services/ai-search">Azure AI Search</a>, Google <a href="https://cloud.google.com/vertex-ai/docs/vector-search/overview">Vector AI Vector Search</a> en Amazon <a href="https://aws.amazon.com/kendra/">Kendra</a>.</p>
<p>Zo goed als alle oplossingen integreren met LLM orchestratie oplossingen zoals <a href="/publications/document/?docid=279">LangChain</a> en <a href="https://www.llamaindex.ai/">LlamaIndex</a>. Meer en meer bieden vector databases ook ingebouwde ondersteuning voor RAG, waarbij het aanmaken van embeddings en aanroepen van een taalmodel niet meer extern aan de vector database moet georchestreerd worden.</p>
<p>Ook vermeldenswaardig is <a href="https://neo4j.com/docs/cypher-manual/current/indexes/semantic-indexes/vector-indexes/">Neo4j</a>, dat naast graph search ook vector search ondersteunt en daarmee geschikt is voor cases met zowel gestructureerde als ongestructureerde gegevens.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Tot slot kunnen we stellen dat vector databases kunnen zorgen voor betere, relevantere zoekresultaten ten opzichte van een eenvoudige keyword search. Bij generative question answering toepassingen kunnen vector databases helpen een taalmodel antwoorden te laten formuleren op basis van de meest relevante informatie uit een kennisbank. Terwijl het niet evident is om grote taalmodellen op eigen infrastructuur te draaien, is dat bij vector database als retrieval component wel mogelijk, wat een gunstige factor kan zijn in het kader van gegevensbescherming.</p>
<p>Uit eigen ervaring merken we dat hybride search, een combinatie van vector search en lexical search, een quick win kan zijn om de zoekresultaten te verbeteren. Semantic ranking kan daarbovenop nog een extra boost geven aan de relevantie van de resultaten.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em data-rich-text-format-boundary="true">Dit is een ingezonden bijdrage van Bert Vanhalst, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/betere-zoekresultaten-met-vector-databases/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Évaluation d&#8217;un système génératif de questions-réponses</title>
		<link>https://www.smalsresearch.be/evaluation-dun-systeme-generatif-de-questions-reponses/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Fri, 19 Apr 2024 14:12:45 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=20428</guid>

					<description><![CDATA[Les frameworks d'évaluation des applications RAG permettent une évaluation systématique de la qualité des systèmes génératifs de questions-réponses. Ils permettent de mesurer différents aspects, tels que la capacité à récupérer des informations pertinentes (retrieval) et la qualité des réponses générées. Ces métriques sont essentielles pour comprendre les faiblesses d'un système RAG et apporter les ajustements nécessaires.]]></description>
										<content:encoded><![CDATA[
<p><a href="/evalueren-van-een-generatief-vraag-antwoordsysteem/"><em>Nederlandstalige versie</em></a></p>
<p>Dans un <a href="/qualite-dun-systeme-generatif-de-questions-reponses/">précédent article de blog</a>, nous avons décrit quelques techniques permettant d&#8217;améliorer la qualité des réponses dans un <a href="/un-propre-systeme-de-questions-reponses-base-sur-des-modeles-de-langue/">système génératif de questions-réponses</a>.</p>
<p>Pour rappel, RAG (<em>Retrieval Augmented Generation</em>) est l&#8217;architecture appropriée pour éviter les <a href="https://fr.wikipedia.org/wiki/Hallucination_(intelligence_artificielle)">hallucinations</a> en fournissant aux modèles de langage un contexte. Avant que le modèle de langage ne génère une réponse, il récupère d&#8217;abord les informations les plus pertinentes pour la question (<em>retrieval</em>). Ces informations sont ensuite fournies en tant que contexte au modèle de langage, qui a pour mission de générer une réponse sur la base de ce contexte (<em>generation</em>). Des erreurs peuvent se produire à la fois lors de l&#8217;étape dite du <em>retrieval</em> et lors de l&#8217;étape dite de la <em>generation</em>. Il est donc nécessaire de surveiller la qualité.</p>
<figure id="attachment_19945" aria-describedby="caption-attachment-19945" style="width: 1270px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-19945" src="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png" alt="Uitvoeringsfase van een RAG pipeline" width="1270" height="530" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png 1270w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-768x321.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-1024x427.png 1024w" sizes="auto, (max-width: 1270px) 100vw, 1270px" /></a><figcaption id="caption-attachment-19945" class="wp-caption-text">Illustration 1&nbsp;: Phase d&#8217;exécution d&#8217;un pipeline RAG</figcaption></figure>
<p>Dans cet article, nous examinons l&#8217;importance de mesurer la qualité d&#8217;un système RAG, les défis à relever, les mesures que nous pouvons appliquer et les outils et cadres qui peuvent nous aider à le faire.</p>



<h2 class="wp-block-heading">L&#8217;importance de l’évaluation</h2>



<p>Avant de décrire comment évaluer un système génératif de réponse aux questions, prenons le temps de réfléchir aux raisons de cette évaluation.</p>
<p>Un système génératif de réponse aux questions est intrinsèquement sujet à des erreurs (hallucinations, imprécisions). Il est donc important de connaître la qualité des résultats afin d&#8217;identifier les points de friction et d&#8217;être en mesure d&#8217;améliorer la qualité de manière ciblée.</p>
<p>Les évaluations permettent d&#8217;établir un benchmark d&#8217;une première version du système de questions-réponses. La qualité des nouvelles versions du système peut ensuite être comparée à ce baseline ou aux versions précédentes. Ainsi, l&#8217;impact des changements peut être mesuré, comme l&#8217;amélioration de la composante de retrieval, le déploiement d&#8217;un modèle de langage différent ou la modification du prompt.</p>
<p>Les évaluations peuvent aider à décider si le système doit être mis en production ou non. Elles peuvent renforcer la confiance dans le système en démontrant qu&#8217;il est précis et fiable.</p>



<h2 class="wp-block-heading">Les défis de l&#8217;évaluation</h2>



<p><em>Métriques </em>&#8211; Contrairement aux logiciels traditionnels, l&#8217;output des applications LLM n&#8217;est pas déterministe&nbsp;: une entrée spécifique peut conduire à de multiples outputs corrects (ou erronés). L&#8217;output peut être subjectif. Par conséquent, nous ne pouvons pas simplement utiliser &#8220;vrai ou faux&#8221; comme critère d&#8217;évaluation, nous devons recourir à d&#8217;autres critères. Comparons cela à l&#8217;évaluation d&#8217;une dissertation (non déterministe) par rapport à l&#8217;évaluation de réponses à des questions à choix multiples (déterministe).</p>
<p><em>Scalabilité </em>&#8211; Pour avoir une première impression rapide de la qualité d&#8217;un système génératif de questions-réponses, vous pouvez effectuer des tests manuellement, par exemple en posant une vingtaine de questions et en évaluant manuellement la qualité des réponses générées. Mais cette méthode est difficile à maintenir si vous souhaitez effectuer une évaluation à plus grande échelle, avec un set de test plus important ou lorsque toutes les réponses sont évaluées alors que le système fonctionne en production. Dans ce cas, il est intéressant d&#8217;effectuer des évaluations automatiques. Cela implique l&#8217;utilisation d&#8217;un modèle de langage pour évaluer un aspect particulier. On parle alors de &#8220;<em>LLM-as-judge</em>&#8220;.</p>
<p><em>Qualité </em>&#8211; L&#8217;utilisation de modèles de langage pour évaluer les résultats des modèles de langage est quelque peu surprenante. De telles évaluations automatiques peuvent elles-mêmes contenir des erreurs ; nous devons être vigilants quant à leur qualité.</p>
<p><em>Rentabilité</em> &#8211; L&#8217;exécution d&#8217;évaluations automatiques basées sur des modèles de langage implique des coûts pour l&#8217;utilisation de ces LLM typiquement offerts comme un service API dans le cloud. Si nous ne faisons pas attention, le coût de ces évaluations peut augmenter considérablement et même dépasser le coût de traitement des requêtes des utilisateurs finaux.</p>
<p><em>Confidentialité </em>&#8211; La réalisation d&#8217;évaluations basées sur les LLM peut exposer des informations confidentielles aux fournisseurs de services LLM basés sur le cloud.</p>
<p><em>Granularité </em>&#8211; Vous voulez non seulement connaître le degré de précision de la réponse générée, mais aussi découvrir la cause de toute erreur ou inexactitude. Pour ce faire, vous devez conserver des<em> log traces</em> détaillés.</p>
<p>Il est évidemment important d&#8217;interpréter ce qui a été mesuré par une métrique particulière. Ci-dessous, nous essayons d&#8217;expliquer clairement les métriques les plus couramment utilisées.</p>



<h2 class="wp-block-heading">Métriques d&#8217;évaluation</h2>



<p>Bien qu&#8217;il n&#8217;y ait pas encore de normalisation des métriques, des initiatives émergent qui peuvent fournir des orientations importantes. Par exemple, la <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">RAG triad</a> de TruEra décrit trois métriques liées à la requête de l&#8217;utilisateur final (<em>query</em>), au contexte récupéré par le <em>retrieval system</em> (<em>context</em>) et à la réponse éventuellement générée par le modèle de langage (<em>response</em>).</p>
<figure id="attachment_20387" aria-describedby="caption-attachment-20387" style="width: 1024px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/04/RAG_triad.png"><img loading="lazy" decoding="async" class="size-full wp-image-20387" src="/wp-content/uploads/2024/04/RAG_triad.png" alt="RAG triad" width="1024" height="634" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad-300x186.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad-768x476.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption id="caption-attachment-20387" class="wp-caption-text">Illustration 2&nbsp;: RAG triad (source : <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/</a>)</figcaption></figure>
<ul>
<li><strong><em>Context relevance</em></strong> indique le degré de pertinence du contexte par rapport à la question posée. Le contexte récupéré lors de l&#8217;étape <em>retrieval</em> est basé sur une recherche sémantique (<em>similarity search</em>), ce qui ne signifie pas nécessairement que ce contexte est pertinent par rapport à la question posée. Cette métrique permet d&#8217;identifier les problèmes éventuels lors de l&#8217;étape de<em> retrieval</em>.</li>
<li><strong><em>Groundedness</em></strong> indique dans quelle mesure la réponse est étayée par le contexte. Même si tout le contexte pertinent est fourni au modèle de langage, ce dernier peut toujours inventer (une partie de) la réponse. Cette métrique vérifie si (les différentes parties de) la réponse peuvent être retracées jusqu&#8217;aux <em>statements</em> du contexte. En d&#8217;autres termes, peut-on trouver des preuves de la réponse dans le contexte fourni ? Si le score <em>groundedness</em> n&#8217;est pas assez élevé, la réponse générée peut ne pas être transmise à l&#8217;utilisateur, mais plutôt indiquer qu&#8217;il n&#8217;y a pas assez d&#8217;informations disponibles pour répondre à la question.</li>
<li><strong><em>Answer relevance</em></strong> indique dans quelle mesure la réponse est effectivement une réponse à la question posée. La réponse peut être correcte sur le plan factuel et étayée par le contexte, sans pour autant constituer une réponse à la question posée. Cette métrique ne tient pas compte de l&#8217;exactitude factuelle de la réponse, mais pénalise les réponses incomplètes ou redondantes</li>
</ul>
<p>Outre ces trois métriques, la réponse peut également être comparée à une réponse de référence (<em>ground truth</em> ou réponse d&#8217;un expert considérée comme correcte), comme les métriques du <a href="https://docs.ragas.io/en/stable/concepts/metrics/index.html">framework Ragas</a> :</p>
<ul>
<li><strong><em>Answer semantic similarity</em></strong> donne une évaluation de la similarité sémantique entre la réponse générée et la réponse de référence.</li>
<li><strong><em>Answer correctness</em></strong>: il s&#8217;agit d&#8217;une combinaison de l<em>&#8216;answer semantic similarity</em> et de l&#8217;<em>answer factual similarity</em>. L&#8217;idée de la<em> factual similarity</em> est de mesurer la pertinence des énoncés de la réponse générée par rapport à ceux de la réponse de référence.</li>
</ul>
<p>En outre, il existe également des métriques permettant d&#8217;évaluer la <a href="https://www.rungalileo.io/blog/mastering-rag-advanced-chunking-techniques-for-llm-applications">stratégie de chunking</a>, telles que celle proposée par <a href="https://www.rungalileo.io/blog/mastering-rag-advanced-chunking-techniques-for-llm-applications">Galileo</a> :</p>
<ul>
<li><strong><em>Chunk attribution</em></strong> indique combien de chunks et quels chunks ont été utilisés pour générer la réponse. L&#8217;extraction d&#8217;un trop grand nombre de chunks qui ne contribuent pas à la réponse diminue la qualité du système et entraîne des coûts plus élevés parce que de nombreux tokens sont envoyés inutilement au modèle de langage.</li>
<li><strong><em>Chunk utilization</em></strong> mesure, pour un chunk donné, la part de celui-ci qui a été effectivement utilisée pour générer la réponse. Un score faible signifie qu&#8217;une grande partie du chunk n&#8217;est pas pertinente pour répondre à la question. Un ajustement de la taille des chunks peut permettre d&#8217;optimiser le système.</li>
</ul>
<p>Ces deux métriques peuvent être utilisées pour optimiser la stratégie de chunking. Des valeurs optimales pour ces métriques signifient que moins d&#8217;informations non pertinentes sont fournies au modèle de langage, ce qui réduit les coûts et aide le modèle à rester concentré.</p>
<p>Pour toutes les métriques susmentionnées, l&#8217;accent est mis sur la qualité des réponses ou sur les éléments qui y contribuent. En outre, les métriques peuvent également être évaluées pour vérifier si les réponses sont nuisibles (contenu nuisible ou inapproprié, jailbreaks, etc.), ou si elles ont la bonne forme (cohérentes, concises, le bon ton, etc.). Les aspects non fonctionnels peuvent également être pris en compte, tels que la latence et le coût.</p>
<p>Enfin, il est important de mentionner que les métriques basées sur le LLM ne sont pas définies à l&#8217;aide de formules mathématiques. Des erreurs sont possibles et le résultat de la mesure doit être considéré comme une indication approximative. Par conséquent, l&#8217;évaluation par des experts business reste indispensable.</p>
<p>Dans ce contexte, on parle d&#8217;alignement&nbsp;: il s&#8217;agit de s&#8217;assurer que l&#8217;application d&#8217;IA générative répond aux attentes du business.</p>



<h2 class="wp-block-heading">Quand évaluer&nbsp;?</h2>



<p>Les évaluations peuvent en principe être effectuées à chaque étape du cycle de vie d&#8217;une application : à chaque correction de bogue ou mise à jour de fonctionnalité, à chaque déploiement et une fois que l&#8217;application est opérationnelle.</p>
<p>Il existe des moyens d&#8217;intégrer des évaluations automatiques dans le pipeline CI, par exemple pre-commit ou pre-release. Des outils comme <a href="https://circleci.com/ai-llm/">CircleCI</a> misent sur ce type de support.</p>
<p>Afin de mesurer l&#8217;évolution de la qualité entre les différentes itérations du système, il est important de mettre en place un set de test fixe avec un certain nombre de questions et les réponses de référence correspondantes. Les questions doivent être aussi représentatives que possible du type de questions qui seront effectivement posées par les utilisateurs finaux.</p>
<p>Les métriques utilisées pour améliorer le système avant sa mise en production peuvent également être utilisées pendant la phase de production pour vérifier si les réponses aux questions réelles des utilisateurs finaux sont suffisamment précises. Comme indiqué précédemment, le coût de l&#8217;utilisation de modèles de langage en tant qu&#8217;évaluateur doit être pris en compte afin de ne pas faire dérailler les coûts.</p>



<h2 class="wp-block-heading">Outils et frameworks</h2>



<p>Sans vouloir être exhaustifs, voici quelques outils et cadres qui peuvent fortement appuyer la conduite des évaluations :</p>
<ul>
<li><a href="https://www.rungalileo.io/"><strong>Galileo</strong></a> est une plateforme d’évaluation et de suivi des applications d’IA générative. Elle fournit des métriques spécifiques pour l&#8217;optimisation de la stratégie de chunking (<em>chunk attribution</em> et <em>chunk utilisation</em>, voir ci-dessus). Il est également possible d&#8217;appliquer des guardrails en temps réel : la réponse peut être ajustée, par exemple en cas d&#8217;hallucinations ou de contenu nuisible. Les résultats des évaluations peuvent être inspectés visuellement dans une console qui est basée sur le cloud par défaut, mais qui peut également être hébergée sur une infrastructure interne. Enfin, pour réduire le coût des évaluations et préserver la confidentialité des données, Galileo travaille sur une solution basée sur des modèles plus légers qui peuvent être exécutés localement.</li>
<li><a href="https://ragas.io/"><strong>Ragas</strong></a> est un framework open source pour évaluer les applications basées sur RAG. Il fournit un ensemble complet de métriques qui évaluent l&#8217;ensemble du système. Il s&#8217;agit notamment de mesures qui comparent la réponse générée à une réponse de référence (<em>answer semantic similarity</em> et <em>answer correctness</em>).</li>
<li><a href="https://www.trulens.org/"><strong>TruLens</strong></a> est un projet communautaire open source sous l&#8217;égide de <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">TruEra</a>. TruEra a inventé le terme &#8220;RAG triad&#8221; qui combine 3 métriques pour évaluer les hallucinations dans les applications basées sur le LLM.</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Les frameworks d&#8217;évaluation des applications RAG permettent un suivi et une évaluation systématiques de la qualité des systèmes génératifs de questions-réponses. Ils permettent de mesurer différents aspects, tels que la capacité à récupérer des informations pertinentes (<em>retrieval</em>) et la qualité des réponses générées. Ces métriques sont essentielles pour comprendre les faiblesses d&#8217;un système RAG et apporter les ajustements nécessaires.</p>
<p>L&#8217;utilisation d&#8217;un LLM peut automatiser l&#8217;exécution des évaluations et rendre les tests évolutifs. Cependant, il faut faire attention aux coûts que cela peut engendrer. Un modèle de langage en tant qu&#8217;évaluateur n&#8217;est pas exempt d&#8217;erreurs, mais il peut fournir un aperçu suffisant des domaines d&#8217;amélioration possibles d&#8217;un système génératif de questions-réponses. Toutefois, les résultats des mesures doivent être considérés comme une indication approximative ; nous ne pouvons pas nous y fier aveuglément. Par conséquent, l&#8217;évaluation par des experts business reste indispensable.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em>Ce post est une contribution individuelle de Bert Vanhalst, IT consultant chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Evalueren van een generatief vraag-antwoordsysteem</title>
		<link>https://www.smalsresearch.be/evalueren-van-een-generatief-vraag-antwoordsysteem/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Fri, 12 Apr 2024 17:05:02 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=20385</guid>

					<description><![CDATA[Frameworks voor het evalueren van RAG toepassingen laten toe om de kwaliteit van generatieve vraag-antwoordsystemen systematisch te beoordelen. Ze voorzien een manier om verschillende aspecten te meten, zoals het vermogen om relevante informatie op te halen (retrieval) en de kwaliteit van de gegenereerde antwoorden. Dergelijke metrieken zijn cruciaal om inzicht te krijgen in de eventuele zwakke punten van een RAG systeem en waar nodig te kunnen bijsturen.]]></description>
										<content:encoded><![CDATA[
<p><a href="/evaluation-dun-systeme-generatif-de-questions-reponses/"><em>Version en français</em></a></p>
<p>In een <a href="/kwaliteit-van-een-generatief-vraag-antwoordsysteem/">vorige blogpost</a> hebben we een aantal technieken beschreven voor het verbeteren van de kwaliteit van de antwoorden in een <a href="/een-eigen-vraag-en-antwoordsysteem-op-basis-van-taalmodellen/">generatief vraag-antwoordsysteem</a>.</p>
<p>Ter herinnering, RAG (<em>Retrieval Augmented Generation</em>) is de aangewezen architectuur om <a href="https://nl.wikipedia.org/wiki/Hallucinatie_(kunstmatige_intelligentie)">hallucinaties</a> te vermijden door taalmodellen van context te voorzien. Vooraleer het taalmodel een antwoord genereert, wordt eerst de meest relevante informatie voor de vraag opgezocht (<em>retrieval</em>). Die informatie wordt dan als context meegegeven aan het taalmodel met als opdracht om een antwoord te genereren op basis van die meegeleverde context (<em>generation</em>). Zowel bij de retrieval-stap als bij de generatie-stap kunnen er fouten optreden. Daarom is het nodig om de vinger aan de pols te houden om de kwaliteit te bewaken.</p>
<figure id="attachment_19945" aria-describedby="caption-attachment-19945" style="width: 1270px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png"><img loading="lazy" decoding="async" class="size-full wp-image-19945" src="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png" alt="Uitvoeringsfase van een RAG pipeline" width="1270" height="530" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png 1270w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-768x321.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-1024x427.png 1024w" sizes="auto, (max-width: 1270px) 100vw, 1270px" /></a><figcaption id="caption-attachment-19945" class="wp-caption-text">Figuur 1: Uitvoeringsfase van een RAG pipeline</figcaption></figure>
<p>In dit artikel bespreken we het belang van het meten van de kwaliteit van een RAG systeem, de uitdagingen die zich stellen, de metrieken die we kunnen toepassen en de tools en frameworks die ons daarbij kunnen ondersteunen.</p>



<h2 class="wp-block-heading">Het belang van evalueren</h2>



<p>Vooraleer we aangeven hoé we een generatief vraag-antwoordsysteem kunnen evalueren, staan we toch even stil bij het waarom.</p>
<p>Een generatief vraag-antwoordsysteem is inherent onderhevig aan fouten (hallucinaties, onnauwkeurigheden). Het is daarom belangrijk om de kwaliteit te kennen van de output om pijnpunten bloot te leggen en de kwaliteit gericht te kunnen verbeteren.</p>
<p>Evaluaties laten toe om een benchmark op te stellen van een eerste versie van het vraag-antwoordsysteem. De kwaliteit van nieuwere versies van het systeem kan dan vergeleken worden met deze baseline of vorige versies. Zo kan de impact van veranderingen gemeten worden, zoals het verbeteren van de retrieval component, het inzetten van een ander taalmodel of een aanpassing van de prompt.</p>
<p>Evaluaties kunnen helpen bij het nemen van de beslissing om het systeem al dan niet in productie te nemen. Ze kunnen het vertrouwen in het systeem vergroten door aan te tonen dat het nauwkeurig en betrouwbaar is.</p>



<h2 class="wp-block-heading">De uitdagingen bij evalueren</h2>



<p><em>Metrieken </em>&#8211; In tegenstelling tot traditionele software, is de output van LLM-gebaseerde toepassingen niet deterministisch: een specifieke input kan leiden tot meerdere correcte (of foutieve) outputs. De output kan subjectief zijn. Daarom kunnen we als evaluatiecriterium niet eenvoudig &#8220;juist of fout&#8221; gebruiken en moeten we onze toevlucht nemen tot andere criteria. Vergelijk het met het evalueren van een opstel (niet deterministisch) versus het evalueren van antwoorden op meerkeuzevragen (wel deterministisch).</p>
<p><em>Schaalbaarheid </em>– Om snel een eerste indruk te krijgen van de kwaliteit van een generatief vraag-antwoordsysteem kan je manueel enkele testen uitvoeren, bijvoorbeeld een 20-tal vragen stellen en de kwaliteit van de gegenereerde antwoorden manueel evalueren. Maar dit is moeilijk vol te houden als je op grotere schaal wil evalueren, bij een grotere testset of bij het evalueren van alle antwoorden als het systeem in productie draait. In dat geval loont het de moeite om automatische evaluaties uit te voeren. Daarbij wordt een taalmodel ingezet om een bepaald aspect te beoordelen. Er wordt gesproken van “<em>LLM-as-judge</em>”.</p>
<p><em>Kwaliteit </em>– Het gebruik van taalmodellen voor het evalueren van de output van … taalmodellen is enigszins verrassend. Dergelijke automatische evaluaties kunnen op zich ook fouten bevatten; we moeten waakzaam zijn over de kwaliteit ervan.</p>
<p><em>Kostenefficiëntie </em>–Het uitvoeren van automatische evaluaties op basis van taalmodellen brengt kosten met zich mee voor het gebruik van die LLM’s die typisch als API service in de cloud aangeboden worden. Als we niet opletten kan de kost voor die evaluaties fors oplopen en de kost van het afhandelen van de vragen van eindgebruikers zelfs overstijgen.</p>
<p><em>Vertrouwelijkheid </em>– Bij het uitvoeren van evaluaties op basis van LLM’s kan vertrouwelijke informatie blootgesteld worden aan de leveranciers van cloudgebaseerde LLM diensten.</p>
<p><em>Granulariteit </em>– Je wil niet alleen weten hoe nauwkeurig het gegenereerde antwoord is, maar je wil ook de oorzaak achterhalen van eventuele fouten of onnauwkeurigheden. Daarvoor is het nodig om gedetailleerde log traces bij te houden.</p>
<p>Het interpreteren van wat nu precies gemeten werd met een bepaalde metriek is uiteraard belangrijk. Hierna trachten we de meestgebruikte metrieken duidelijk toe te lichten.</p>



<h2 class="wp-block-heading">Evaluatiemetrieken</h2>



<p>Alhoewel er nog geen standaardisatie is van metrieken, duiken er toch initiatieven op die een belangrijk houvast kunnen bieden. Zo beschrijft de <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">RAG triad</a> van TruEra 3 metrieken die verband houden met de vraag van de eindgebruiker (<em>query</em>), de context opgehaald door het retrieval systeem (<em>context</em>) en het antwoord dat uiteindelijk gegenereerd wordt door het taalmodel (<em>response</em>).</p>
<figure id="attachment_20387" aria-describedby="caption-attachment-20387" style="width: 1024px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/04/RAG_triad.png"><img loading="lazy" decoding="async" class="size-full wp-image-20387" src="/wp-content/uploads/2024/04/RAG_triad.png" alt="RAG triad" width="1024" height="634" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad-300x186.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/04/RAG_triad-768x476.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption id="caption-attachment-20387" class="wp-caption-text">Figuur 2: De RAG triad (bron: <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/</a>)</figcaption></figure>
<ul>
<li><strong>Context relevance</strong> geeft aan hoe relevant de context is voor de gestelde vraag. De context die opgehaald wordt in de retrieval stap is gebaseerd op een semantische zoekopdracht (similarity search), wat niet noodzakelijk betekent dat die context relevant is voor de gestelde vraag. Deze metriek helpt om eventuele problemen te identificeren in de retrieval stap.</li>
<li><strong>Groundedness</strong> geeft aan in hoeverre het antwoord ondersteund wordt door de context. Zelfs indien alle relevante context aangeleverd wordt aan het taalmodel, kan het taalmodel nog altijd een (deel van het) antwoord verzinnen. Deze metriek checkt of (de verschillende delen van) het antwoord teruggeleid kunnen worden tot statements in de context. Met andere woorden: is er voor het antwoord bewijs terug te vinden in de aangeleverde context? Indien de <em>groundedness</em> score niet hoog genoeg is kan ervoor gekozen worden om het gegenereerde antwoord niet door te geven aan de gebruiker, maar eerder aan te geven dat er niet genoeg informatie beschikbaar is om de vraag te beantwoorden.</li>
<li><strong>Answer relevance</strong> geeft aan in hoeverre het antwoord effectief een antwoord is op de gestelde vraag. Het antwoord kan feitelijk correct zijn en ondersteund zijn door de context, maar toch geen antwoord zijn op de gestelde vraag. Deze metriek houdt geen rekening met de feitelijke correctheid van het antwoord, maar straft wel onvolledige of redundante antwoorden af.</li>
</ul>
<p>Naast deze 3 metrieken kan het antwoord ook vergeleken worden met een referentie-antwoord (<em>ground truth</em>, of expert-antwoord dat als correct beschouwd wordt), zoals deze metrieken uit het <a href="https://docs.ragas.io/en/stable/concepts/metrics/index.html">Ragas framework</a>:</p>
<ul>
<li><strong>Answer semantic similarity</strong> geeft een beoordeling van de semantische overeenkomst tussen het gegenereerde antwoord en het referentie-antwoord.</li>
<li><strong>Answer correctness</strong>: dit is een combinatie van <em>semantic similarity</em> en <em>factual similarity</em>. Het idee van <em>factual similarity</em> is om te meten in hoeverre de beweringen in het gegenereerde antwoord overeenkomen met die in het referentie-antwoord.</li>
</ul>
<p>Verder zijn er ook metrieken om de <a href="https://www.rungalileo.io/blog/mastering-rag-advanced-chunking-techniques-for-llm-applications">chunking strategie te evalueren</a>, zoals deze van <a href="https://www.rungalileo.io/blog/mastering-rag-advanced-chunking-techniques-for-llm-applications">Galileo</a>:</p>
<ul>
<li><strong>Chunk attribution</strong> geeft aan hoeveel chunks en welke chunks gebruikt werden voor het genereren van het antwoord. Teveel chunks ophalen die niet bijdragen tot het antwoord verlaagt de kwaliteit van het systeem en leidt tot hogere kosten omdat er onnodig veel tokens naar het taalmodel worden gestuurd.</li>
<li><strong>Chunk utilization</strong> meet voor een bepaalde chunk hoeveel ervan effectief gebruikt werd voor het genereren van het antwoord. Een lage score betekent dat een groot deel van de chunk niet relevant is voor het beantwoorden van de vraag. Een bijsturing van de grootte van de chunks kan het systeem optimaliseren.</li>
</ul>
<p>Deze beide metrieken kunnen gebruikt worden om de chunking strategie te optimaliseren. Optimale waarden voor deze metrieken betekent dat er minder irrelevante informatie aangeleverd wordt aan het taalmodel, wat de kosten beperkt en het model helpt om de focus te behouden.</p>
<p>Bij alle bovenvermelde metrieken ligt de focus op de kwaliteit van de antwoorden of zaken die daartoe bijdragen. Daarnaast kunnen ook metrieken geëvalueerd worden om na te gaan of de antwoorden schadelijk zijn (schadelijke of ongepaste inhoud, jailbreaks, etc), of de juiste vorm hebben (coherent, beknopt, de juiste toon, etc). Ook non-functionals kunnen meegenomen worden zoals latency en kost.</p>
<p>Tot slot is het belangrijk om te vermelden dat LLM-gebaseerde metrieken niet met behulp van wiskundige formules gedefinieerd zijn. Fouten zijn mogelijk en het meetresultaat moet gezien worden als een approximatieve indicatie. Daarom blijft een evaluatie door business experten onmisbaar.</p>
<p>Men spreekt in deze context over <em>alignment</em>: ervoor zorgen dat de generatieve AI toepassing antwoordt volgens de verwachtingen van de business.</p>



<h2 class="wp-block-heading">Wanneer evalueren?</h2>



<p>Evaluaties kunnen in principe uitgevoerd worden bij elke fase van de levenscyclus van een toepassing: bij elke bugfix of feature update, bij elke deployment, en eens de toepassing operationeel is.</p>
<p>Er zijn mogelijkheden om automatische evaluaties te integreren in de CI pipeline, bijvoorbeeld pre-commit of pre-release. Tools als <a href="https://circleci.com/ai-llm/">CircleCI</a> zetten in op dergelijke ondersteuning.</p>
<p>Om de verandering van de kwaliteit te kunnen meten over verschillende iteraties van het systeem heen is het belangrijk om een vaste testset op te stellen met een aantal vragen en overeenkomstige referentie-antwoorden. De vragen zijn best zo representatief mogelijk voor het soort vragen die effectief zullen gesteld worden door eindgebruikers.</p>
<p>De metrieken die gebruikt worden om het systeem te verbeteren vóór de inproductiestelling kunnen ook gebruikt worden tijdens de productiefase om na te gaan of échte vragen van eindgebruikers nauwkeurig genoeg beantwoord worden. Zoals eerder vermeld moet hier zeker de kost in overweging genomen worden voor het gebruik van taalmodellen als evaluator zodat de kosten niet ontsporen.</p>



<h2 class="wp-block-heading">Tools en frameworks</h2>



<p>Zonder exhaustief te willen zijn, zijn hieronder enkele tools en frameworks aangegeven die het uitvoeren van evaluaties sterk kunnen ondersteunen:</p>
<ul>
<li><a href="https://www.rungalileo.io/"><strong>Galileo</strong></a> is een platform voor het evalueren en monitoren van generatieve AI toepassingen. Het biedt specifieke metrieken voor het optimaliseren van de chunking strategie (<em>chunk attribution</em> en <em>chunk utilization</em>, zie hierboven). Er is ook de mogelijkheid om in realtime guardrails toe te passen: het antwoord kan bijgestuurd worden, bijvoorbeeld in het geval van hallucinaties of schadelijk content. De resultaten van de evaluaties zijn visueel te inspecteren in een console die standaard cloudgebaseerd is, maar ook op eigen infrastructuur kan gehost worden. Om de kost van evaluaties te drukken en gegevens vertrouwelijk te houden werkt Galileo tenslotte aan een oplossing op basis van lichtere modellen die lokaal kunnen draaien.</li>
<li><a href="https://ragas.io/"><strong>Ragas</strong></a> is een open source framework voor het evalueren van RAG-gebaseerde toepassingen. Het biedt een uitgebreide set aan metrieken die het gehele systeem evalueren. Zo zijn er ook metrieken die het gegenereerde antwoord vergelijken met een referentie-antwoord (<em>answer semantic similarity</em> en <em>answer correctness</em>).</li>
<li><a href="https://www.trulens.org/"><strong>TruLens</strong></a> is een open source community project onder de vleugels van <a href="https://truera.com/ai-quality-education/generative-ai-rags/what-is-the-rag-triad/">TruEra</a>. TruEra bedacht de term “RAG triad” die 3 metrieken combineert voor het evalueren van hallucinaties in LLM-gebaseerde toepassingen.</li>
</ul>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Frameworks voor het evalueren van RAG toepassingen laten toe om de kwaliteit van generatieve vraag-antwoordsystemen systematisch te beoordelen en op te volgen. Ze voorzien een manier om verschillende aspecten te meten, zoals het vermogen om relevante informatie op te halen (<em>retrieval</em>) en de kwaliteit van de gegenereerde antwoorden. Dergelijke metrieken zijn cruciaal om inzicht te krijgen in de eventuele zwakke punten van een RAG systeem en waar nodig te kunnen bijsturen.</p>
<p>Het gebruik van een LLM kan het uitvoeren van evaluaties automatiseren en het uitvoeren van testen schaalbaar maken. Het is wel opletten met de kosten die dit teweeg kan brengen. Een taalmodel als evaluator is bovendien niet vrij van fouten, maar ze kunnen voldoende inzicht bieden in de mogelijke verbeterpunten van een generatief vraag-antwoordsysteem. De meetresultaten moeten echter gezien worden als een approximatieve indicatie, we kunnen er niet blind op vertrouwen. Daarom blijft een evaluatie door business experten onmisbaar.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em data-rich-text-format-boundary="true">Dit is een ingezonden bijdrage van Bert Vanhalst, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Webinar &#8211; An introduction to confidential computing</title>
		<link>https://www.smalsresearch.be/webinar-an-introduction-to-confidential-computing/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 26 Mar 2024 14:36:49 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/webinar-an-introduction-to-confidential-computing/</guid>

					<description><![CDATA[(FR) Le terme d’informatique confidentielle (confidential computing) revient souvent dans les conversations sur la protection des données et sur les infrastructures en «&#160;nuage.&#160;» Mais qu’est-ce que c’est&#160;? Quelles sont les principales techniques existantes&#160;? Que permettent-elles de faire&#160;? Quel est leur principe de fonctionnement&#160;? Quelles sont leurs limites&#160;? Cette présentation tente de répondre le plus simplement [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>(FR)</strong> Le terme d’informatique confidentielle (<em>confidential computing</em>) revient souvent dans les conversations sur la protection des données et sur les infrastructures en «&nbsp;nuage.&nbsp;» Mais qu’est-ce que c’est&nbsp;? Quelles sont les principales techniques existantes&nbsp;? Que permettent-elles de faire&nbsp;? Quel est leur principe de fonctionnement&nbsp;? Quelles sont leurs limites&nbsp;? Cette présentation tente de répondre le plus simplement possible à ces questions.&nbsp; Elle donne des exemples de produits mis à disposition par les industriels du secteur et conclut avec quelques recommandations et mises en garde.
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>(NL)</strong> De term &#8220;confidential computing&#8221; duikt vaak op in gesprekken over gegevensbescherming en cloudinfrastructuren. Maar wat is <em>vertrouwelijke gegevensverwerking</em>? Wat zijn de belangrijkste bestaande technieken? Wat kunnen ze? Hoe werken ze? Wat zijn hun beperkingen? Deze presentatie probeert deze vragen zo eenvoudig mogelijk te beantwoorden. Er worden voorbeelden gegeven van producten die beschikbaar zijn gesteld door fabrikanten in de sector en er wordt afgesloten met enkele aanbevelingen en waarschuwingen.</p>



<h1 class="wp-block-heading">Recording</h1>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="An introduction to Confidential Computing" width="500" height="281" src="https://www.youtube.com/embed/ezh7oTvGWGI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h1 class="wp-block-heading">Presentation</h1>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="/wp-content/uploads/2024/03/Webinar-An-introduction-to-confidential-computing.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of Webinar-An-introduction-to-confidential-computing."></object><a id="wp-block-file--media-6947e6ab-7039-49d3-a646-a90fae2af6a5" href="https://www.smalsresearch.be/wp-content/uploads/2024/03/Webinar-An-introduction-to-confidential-computing.pdf">Webinar-An-introduction-to-confidential-computing</a><a href="/wp-content/uploads/2024/03/Webinar-An-introduction-to-confidential-computing.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-6947e6ab-7039-49d3-a646-a90fae2af6a5">Download</a></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Qualité d&#8217;un système génératif de questions-réponses</title>
		<link>https://www.smalsresearch.be/qualite-dun-systeme-generatif-de-questions-reponses/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Wed, 21 Feb 2024 09:50:17 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=20112</guid>

					<description><![CDATA[Dans le contexte de l'IA générative, les applications "chat with your data" qui permettent de poser des questions sur des informations propriétaires suscitent un vif intérêt. Dans cet article, nous décrirons quelques techniques qui contribuent à l'optimisation de ces systèmes génératifs de questions-réponses.]]></description>
										<content:encoded><![CDATA[
<p><a href="/kwaliteit-van-een-generatief-vraag-antwoordsysteem/"><em>Nederlandstalige versie</em></a></p>



<h1 class="wp-block-heading">Retrieval Augmented Generation (RAG)</h1>



<p>Dans le contexte de l&#8217;IA générative, les applications &#8220;<em>chat with your data</em>&#8221; qui permettent de poser des questions sur des informations propriétaires suscitent un vif intérêt. Les grands modèles de langage (LLM &#8211; Large Language Models) tels que GPT-4 sont capables de générer des textes linguistiquement corrects. Par défaut, ils opèrent sur la base des données sur lesquelles ils sont entraînés. Ces connaissances sont toutefois limitées dans le temps. En effet, le modèle de langage n&#8217;a pas connaissance d&#8217;événements et informations plus récents. On parle de <em>knowledge cut-off</em> à une certaine date. De même, un modèle de langage n&#8217;a pas accès à des informations propriétaires. Pour obtenir des réponses concernant des données plus récentes ou des données propriétaires, celles-ci doivent être transmises au modèle de langage d&#8217;une manière ou d&#8217;une autre. C&#8217;est là qu&#8217;intervient l&#8217;architecture <em>Retrieval Augmented Generation</em> (RAG). Il s&#8217;agit d&#8217;une approche dans laquelle le <em>prompt</em>, c&#8217;est-à-dire l&#8217;entrée communiquée au modèle de langage, est enrichi des éléments de texte les plus pertinents en provenance d&#8217;une source d&#8217;information. De cette manière, le modèle de langage est bel et bien en mesure de&nbsp;<a href="/un-propre-systeme-de-questions-reponses-base-sur-des-modeles-de-langue/">formuler des réponses sur la base de sources d&#8217;information propres</a>.</p>
<figure id="attachment_19945" aria-describedby="caption-attachment-19945" style="width: 1270px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png"><img loading="lazy" decoding="async" class="wp-image-19945 size-full" src="/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png" alt="" width="1270" height="530" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN.png 1270w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-768x321.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_uitvoeringsfase_EN-1024x427.png 1024w" sizes="auto, (max-width: 1270px) 100vw, 1270px" /></a><figcaption id="caption-attachment-19945" class="wp-caption-text">Illustration 1&nbsp;: Phase d&#8217;exécution d&#8217;un pipeline RAG</figcaption></figure>
<p>Si une version de base d&#8217;une telle application générative de questions-réponses peut être mise sur pied rapidement, le véritable défi consiste à livrer des réponses de qualité.</p>
<p>Nous présenterons ci-dessous diverses techniques qui peuvent aider à améliorer la qualité. Cette liste n&#8217;est pas exhaustive, mais offre un aperçu succinct des améliorations possibles.</p>



<h1 class="wp-block-heading">Phase d&#8217;ingestion</h1>



<p>La phase dite <em>Ingestion</em> est la phase préparatoire au cours de laquelle les sources de données originales (base de connaissances) sont converties et stockées dans une base de données vectorielle (<em>vector store)</em>. <br>Dans la phase d&#8217;exécution, les fragments de texte les plus pertinents peuvent ensuite être extraits (<em>retrieval</em>) de ce <em>vector store</em> pour être livrés à titre de contexte au modèle de langage en vue de la génération de la réponse.</p>
<figure id="attachment_19947" aria-describedby="caption-attachment-19947" style="width: 1380px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2024/02/RAG_ingestion_EN.png"><img loading="lazy" decoding="async" class="wp-image-19947 size-full" src="/wp-content/uploads/2024/02/RAG_ingestion_EN.png" alt="" width="1380" height="479" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_ingestion_EN.png 1380w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_ingestion_EN-300x104.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_ingestion_EN-768x267.png 768w, https://www.smalsresearch.be/wp-content/uploads/2024/02/RAG_ingestion_EN-1024x355.png 1024w" sizes="auto, (max-width: 1380px) 100vw, 1380px" /></a><figcaption id="caption-attachment-19947" class="wp-caption-text">Illustration 2&nbsp;: Phase d’ingestion d&#8217;un pipeline RAG</figcaption></figure>



<h2 class="wp-block-heading">Base de connaissances et extraction de données</h2>



<p>La première étape du pipeline Ingestion consiste à extraire le texte de la base de connaissances. La qualité des données qui atterriront dans l&#8217;index détermine largement la qualité de la réponse finale. Aussi convient-il d&#8217;écarter les informations non pertinentes et éventuellement d&#8217;enrichir la base de connaissances avec des sources complémentaires qui, quant à elles, contiennent bel et bien des informations pertinentes.</p>



<h2 class="wp-block-heading">Chunking</h2>



<p>L&#8217;étape suivante consiste à scinder le texte original en fragments plus petits (<em>chunks</em>). Cela permet de cibler des fragments de textes cohérents et en lien avec la question d’entrée pouvant servir de contexte au modèle de langage.</p>
<p>Cette scission (<em>chunking</em>) peut s&#8217;effectuer de plusieurs manières. La technique la plus simple vise à scinder le texte sur la base d&#8217;un nombre fixe de caractères. Un environnement de test comme l&#8217;<a href="https://github.com/langchain-ai/text-split-explorer">open source LangChain Text Splitter Playground</a>&nbsp;permet d&#8217;expérimenter la taille (<em>chunk size</em>) et l&#8217;éventuel chevauchement de fragments de texte (<em>chunk overlap).</em> Les <em>chunks</em> trop grands peuvent contenir des informations superflues, tandis que les <em>chunks</em> trop petits sont susceptibles de contenir trop peu d&#8217;informations.</p>
<p>Mieux encore que de scinder le texte sur la base d&#8217;un nombre fixe de caractères, il est possible de scinder le texte sur la base de sa structure. Il s&#8217;agit ici à tout le moins de conserver les phrases ou les paragraphes dans leur ensemble. Cette opération peut être réalisée par exemple avec le&nbsp;<a href="https://python.langchain.com/docs/modules/data_connection/document_transformers/recursive_text_splitter">RecursiveCharacterTextSplitter</a> de&nbsp;<a href="/download/review/quick_review/QR-LangChain.pdf">LangChain</a>. Il est en outre possible de tenir compte de la structure des documents. Citons par exemple l&#8217;outil&nbsp;<a href="https://python.langchain.com/docs/modules/data_connection/document_transformers/HTML_header_metadata">HTMLHeaderTextSplitter</a>,&nbsp;qui permet de scinder un document HTML sur la base de certains éléments d&#8217;en-tête (h1, h2, etc.). De cette manière, les <em>chunks</em> forment un ensemble plus cohérent</p>



<h2 class="wp-block-heading">Affinement du modèle <em>d&#8217;embedding</em></h2>



<p>La dernière étape avant la création de l&#8217;index est la création d&#8217;<a href="https://huggingface.co/blog/getting-started-with-embeddings">embeddings</a>&nbsp;vectoriels basés sur les <em>chunks</em>.&nbsp;Un modèle d&#8217;embedding convertit en embeddings les <em>chunks</em> et la question d&#8217;entrée. Il s&#8217;agit de vecteurs multidimensionnels qui saisissent la sémantique du texte. Cela permet de rechercher les fragments de texte les plus liés sémantiquement à la question d&#8217;entrée.</p>
<p>Il est clair que le modèle d&#8217;embedding peut largement contribuer à la qualité du système de questions-réponses. Le choix du modèle d&#8217;embedding doit être aligné sur les besoins du projet, tels que la prise en charge d&#8217;un contenu multilingue. Le cas échéant, le modèle d&#8217;embedding peut être affiné pour mieux saisir les termes spécifiques à un domaine. Cela requiert toutefois un certain effort.</p>



<h1 class="wp-block-heading">Phase d&#8217;exécution</h1>



<p>La phase d&#8217;exécution est la phase au cours de laquelle la question d&#8217;entrée de l&#8217;utilisateur est traitée pour au final aboutir à la génération d&#8217;une réponse via les étapes d&#8217;extraction (<em>retrieval</em>) et de génération (<em>generation)</em>. C&#8217;est aussi et surtout lors de cette phase que diverses techniques peuvent influencer favorablement la qualité du résultat final.</p>



<h2 class="wp-block-heading">Recherche hybride</h2>



<p>Une fois le contenu préparé et l&#8217;index construit, la question est de savoir comment trouver les fragments de texte qui répondent à la question d&#8217;entrée. La technique la plus simple est la recherche sémantique&nbsp;: pour la question d&#8217;entrée, il s&#8217;agit de rechercher les fragments de texte les plus &#8220;proches&#8221; et les plus sémantiquement liés dans l&#8217;espace vectoriel.</p>
<p>La recherche hybride combine une recherche textuelle (recherche lexicale ou recherche par mots-clés) et une recherche sémantique sur la base d&#8217;un index contenant à la fois du texte brut et des embeddings vectoriels.</p>
<p>L&#8217;avantage de la recherche vectorielle est qu&#8217;elle permet de trouver des informations sémantiquement corrélées à la question d&#8217;entrée, même en l&#8217;absence d&#8217;une correspondance de mots-clés. Par exemple, la question &#8220;<em>Quel âge dois-je avoir pour un job d&#8217;étudiant&nbsp;?</em>&#8221; peut bel et bien être liée à un fragment tel que &#8220;à partir<em>&nbsp;de 16 ans</em>&#8220;. L&#8217;avantage de la recherche lexicale réside dans la précision apportée par la correspondance exacte des mots.</p>
<p>Les deux recherches &#8211; lexicale et sémantique &#8211; sont exécutées en parallèle et les résultats de ces deux recherches sont combinés en une seule liste de résultats. Ces résultats sont ensuite reclassés (<em>re-ranking</em>) en fonction de leur pertinence par rapport à la question d&#8217;entrée. <br>Cette étape importante garantit que les résultats les plus pertinents sont restitués, qu&#8217;ils soient le fruit d&#8217;une recherche sémantique ou d&#8217;une recherche lexicale. Cette étape de reclassement est particulièrement utile dans les techniques d&#8217;extraction qui restituent une liste étendue ou diversifiée de documents, comme la <em>query expansion </em>(voir ci-dessous).</p>



<h2 class="wp-block-heading">Techniques concernant la question d&#8217;entrée</h2>



<p>Un certain nombre de techniques ont pour but d&#8217;élargir l&#8217;entrée pour l&#8217;extracteur (<em>query expansion</em>) afin d&#8217;améliorer les résultats de l&#8217;extraction. En effet, l&#8217;extraction peut produire des résultats différents en raison de changements subtils dans la question d&#8217;entrée ou si les embeddings ne saisissent pas correctement la sémantique des données.</p>
<p><em>Multi-query retriever</em>&nbsp;–&nbsp;<a href="https://python.langchain.com/docs/modules/data_connection/retrievers/MultiQueryRetriever">Cette première technique</a> utilise un LLM pour générer des questions supplémentaires basées sur la question d&#8217;entrée originale, comme variantes de la question d&#8217;entrée originale. Pour chacune de ces questions (y compris la question originale), une extraction des documents est exécutée. Enfin, la combinaison de tous les résultats est restituée. Le but est ainsi d&#8217;obtenir un ensemble de résultats plus riche et plus diversifié lors de l&#8217;extraction.</p>
<p><em>HyDE (</em><a href="https://arxiv.org/abs/2212.10496"><em>Hypothetical Document Embeddings</em></a><em>)</em>&nbsp;est une méthode qui consiste à générer une réponse hypothétique pour la question d&#8217;entrée au moyen d&#8217;un appel supplémentaire au LLM. Cette réponse hypothétique et la question d&#8217;entrée originale servent alors d&#8217;entrée pour l&#8217;extraction. L&#8217;idée sous-jacente est que la réponse hypothétique peut être plus proche des documents pertinents dans l&#8217;espace d&#8217;embedding, en comparaison de la question d&#8217;entrée.</p>
<p><em>Sub-queries</em>&nbsp;&#8211; Une question d&#8217;entrée complexe ou composée peut être divisée en plusieurs questions plus simples (<em>sub-queries</em>). Cela permet d&#8217;obtenir des réponses plus pertinentes, car chaque sous-question peut être traitée séparément.</p>
<p><em>Query re-writing</em>&nbsp;– Enfin, les longues questions peuvent être résumées à l&#8217;essentiel (<em>re-writing</em>) par un LLM, ce qui peut profiter à la qualité de l&#8217;extraction.</p>
<p>Notons que les techniques ci-dessus recourent à un LLM et peuvent dès lors avoir un coût global plus élevé. La réponse finale peut aussi prendre plus de temps à parvenir en raison de l&#8217;exécution des appels supplémentaires au LLM.</p>



<h2 class="wp-block-heading">Enrichissement du contexte</h2>



<p>L&#8217;idée des techniques ci-dessous est d&#8217;apporter plus de contexte au modèle de langage (voir l&#8217;étape de génération du LLM dans l&#8217;illustration 1) que les seuls petits <em>chunks</em> obtenus lors de l&#8217;extraction.</p>
<p><em>Sentence window retriever</em>&nbsp;&#8211; Cette technique consiste à initialement extraire une phrase (<em>sentence</em>) spécifique qui est la plus pertinente pour la question d&#8217;entrée. Cette phrase est ensuite élargie avec une fenêtre plus large de phrases avant et après la phrase en question. Ainsi, le modèle de langage peut bénéficier d&#8217;un contexte plus large pour générer une réponse, ce qui peut aboutir à une meilleure réponse.</p>
<p><a href="https://docs.llamaindex.ai/en/latest/examples/retrievers/auto_merging_retriever.html"><em>Auto-merging retriever</em></a><em>&nbsp;(ou&nbsp;</em><a href="https://python.langchain.com/docs/modules/data_connection/retrievers/parent_document_retriever"><em>Parent document retriever</em></a><em>)&nbsp;</em>– Ici, chaque <em>chunk</em> est initialement divisé selon une structure hiérarchique composée d&#8217;un <em>parent node</em> et de <em>leaf nodes</em>. Lors de l&#8217;extraction, les <em>leaf nodes</em> les plus pertinents sont recherchés. Si un certain nombre de <em>leaf nodes</em> d&#8217;un <em>parent node</em> correspondent à la question d&#8217;entrée, les <em>leaf nodes</em> plus petits sont fusionnés dans le <em>parent node</em> plus grand et l&#8217;intégralité du <em>parent node</em> est transmise à titre de contexte au modèle de langage.</p>



<h2 class="wp-block-heading">Post-traitement</h2>



<p>Après l&#8217;étape d&#8217;extraction, mais avant l&#8217;appel au modèle de langage pour générer la réponse, la liste des documents extraits peut encore être actualisée pour optimiser la qualité de la réponse.</p>
<p><em>Re-ranking</em> &#8211; Il peut être utile de reclasser les documents extraits en fonction de leur pertinence, à l&#8217;aide d&#8217;un modèle. Cette étape est particulièrement utile dans les techniques d&#8217;extraction qui restituent une liste étendue ou diversifiée de documents, comme le <em>multi-query retrieval</em>.</p>
<p><em>Compression</em> &#8211; Le simple fait de fournir plus de contexte dans l&#8217;idée que &#8220;la réponse se trouve quelque part&#8221; n&#8217;améliore pas la qualité de la réponse. Le modèle de langage a en effet plus de mal à trouver les informations réellement pertinentes dans le contexte. Il peut dès lors être utile d&#8217;éliminer les informations redondantes et superflues des documents récupérés.</p>



<h2 class="wp-block-heading">Prompt engineering et affinement du modèle de langage</h2>



<p>Si les techniques susmentionnées visent à optimiser la fourniture d&#8217;un contexte optimal au modèle de langage, il existe également des techniques axées sur la manière dont le modèle doit procéder. Le <em>prompt engineering</em> désigne l&#8217;art de communiquer les bonnes instructions au modèle de langage.&nbsp;Le <em>few-shot prompting</em> est une technique qui consiste à donner un ou plusieurs exemples de l&#8217;entrée et de la sortie attendues du modèle de langage.</p>
<p>Le modèle de langage proprement dit peut être affiné de manière à mieux suivre certaines instructions ou mieux gérer la terminologie spécifique. Cela demande toutefois un gros effortet n&#8217;est clairement pas évident à réaliser.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>De nombreuses techniques peuvent contribuer à améliorer la qualité des réponses dans un système génératif de questions-réponses. Dans cet article, nous n&#8217;en avons abordé que quelques-unes. D&#8217;après notre expérience, une recherche hybride permet déjà d&#8217;améliorer considérablement la précision des réponses. D&#8217;autres techniques peuvent certainement s&#8217;avérer utiles, en fonction des besoins spécifiques du projet ; il n&#8217;existe pas de solution universelle.</p>
<p>Même si nous parvenons finalement à une qualité élevée, des erreurs demeurent possibles et celles-ci doivent être prises en compte, tant sur le plan de la gestion des attentes des utilisateurs que sur le plan juridique. Une notification indiquant que la réponse est le produit de l&#8217;intelligence artificielle est donc indispensable et l&#8217;utilisateur final doit en être conscient. Le retour d&#8217;information des utilisateurs finaux est un bon moyen d&#8217;évaluer la qualité du système et de procéder à des ajustements constants si nécessaire.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em>Ce post est une contribution individuelle de Bert Vanhalst, IT consultant chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
