{"id":10620,"date":"2024-12-03T08:22:34","date_gmt":"2024-12-03T07:22:34","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=10620"},"modified":"2024-12-03T08:26:20","modified_gmt":"2024-12-03T07:26:20","slug":"pg_vector-lia-et-postgresql","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/","title":{"rendered":"pg_vector : l&#8217;IA et PostgreSQL"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620&#038;title=pg_vector%20%3A%20l%E2%80%99IA%20et%20PostgreSQL\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=pg_vector%20%3A%20l%E2%80%99IA%20et%20PostgreSQL&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><h2>1. Introduction : L&#8217;intelligence artificielle et le r\u00f4le des bases de donn\u00e9es<\/h2>\n<p>L&#8217;intelligence artificielle (IA) conna\u00eet une popularit\u00e9 croissante, des assistants virtuels aux voitures autonomes, en passant par les recommandations de films et de produits. Mais pour que ces technologies fonctionnent, elles ont besoin de donn\u00e9es, souvent en grande quantit\u00e9. C\u2019est l\u00e0 qu\u2019interviennent les bases de donn\u00e9es : elles stockent, g\u00e8rent et permettent d&#8217;acc\u00e9der \u00e0 ces donn\u00e9es de mani\u00e8re efficace.<\/p>\n<p>Les bases de donn\u00e9es, comme PostgreSQL, ont donc un r\u00f4le cl\u00e9 dans l\u2019IA. Mais l&#8217;IA ne traite pas toujours des informations simples comme des noms ou des chiffres ; souvent, elle doit manipuler des informations complexes, comme des repr\u00e9sentations num\u00e9riques d&#8217;images, de sons, ou de textes. Pour g\u00e9rer ces donn\u00e9es sp\u00e9cifiques, il faut des outils adapt\u00e9s, et c&#8217;est l\u00e0 que l&#8217;extension pg_vector de PostgreSQL entre en jeu.<\/p>\n<h2>2. Les vecteurs en informatique et dans pg_vector<\/h2>\n<p>Dans le cadre de l\u2019informatique, un vecteur est simplement une liste de nombres. Ces nombres peuvent repr\u00e9senter n\u2019importe quoi : les caract\u00e9ristiques d\u2019un produit, les mots d\u2019un texte ou m\u00eame une image. Par exemple, pour un document texte, chaque mot peut \u00eatre transform\u00e9 en une s\u00e9rie de nombres qui capture son sens dans un certain contexte.<\/p>\n<p>L\u2019extension pg_vector permet \u00e0 PostgreSQL de stocker et de manipuler ces vecteurs. Elle offre un moyen simple de les utiliser directement dans une base de donn\u00e9es. Imaginons que nous avons des centaines de documents et que nous souhaitions rechercher les plus similaires \u00e0 un texte donn\u00e9 : en stockant les repr\u00e9sentations num\u00e9riques (ou embeddings) de ces documents sous forme de vecteurs, nous pouvons facilement comparer leur similarit\u00e9 gr\u00e2ce \u00e0 pg_vector.<\/p>\n<h2>3. Le lien entre l&#8217;IA et les vecteurs<\/h2>\n<p>L&#8217;intelligence artificielle repose sur la capacit\u00e9 \u00e0 comprendre et traiter des informations complexes. Par exemple, quand une IA doit reconna\u00eetre une image, elle ne &#8220;voit&#8221; pas comme nous. Au lieu de cela, l&#8217;image est transform\u00e9e en une s\u00e9rie de nombres, un vecteur, qui repr\u00e9sente ses caract\u00e9ristiques (couleurs, formes, etc.).<\/p>\n<p>Le m\u00eame principe s\u2019applique au texte. Les mod\u00e8les de traitement du langage, comme ceux utilis\u00e9s par les moteurs de recherche ou les chatbots, transforment chaque mot ou phrase en vecteur. Ces vecteurs capturent le sens des mots et permettent \u00e0 l&#8217;IA de manipuler des informations complexes sans &#8220;comprendre&#8221; le langage humain.<\/p>\n<p>C&#8217;est ici que les embeddings entrent en jeu. Un embedding est un vecteur qui repr\u00e9sente des donn\u00e9es sous une forme que l\u2019IA peut utiliser. Par exemple, dans un syst\u00e8me de recommandation, chaque produit est converti en un embedding, et les produits les plus proches de celui que nous venons de consulter (en termes de vecteur) nous seront recommand\u00e9s. Gr\u00e2ce \u00e0 pg_vector, ces embeddings peuvent \u00eatre stock\u00e9s et compar\u00e9s directement dans une base de donn\u00e9es.<\/p>\n<h2>4. Pourquoi est-ce utile ?<\/h2>\n<p>L&#8217;extension pg_vector est tr\u00e8s utile pour des applications qui n\u00e9cessitent la recherche par similarit\u00e9. Par exemple, dans un moteur de recherche, si nous voulons trouver les documents les plus proches d&#8217;un texte donn\u00e9, pg_vector permet de comparer les vecteurs (ou embeddings) de chaque document pour voir lesquels sont les plus similaires.<\/p>\n<p>Autre exemple, dans une plateforme de streaming musical, chaque chanson peut \u00eatre convertie en vecteur qui repr\u00e9sente ses caract\u00e9ristiques (comme le tempo, la tonalit\u00e9, etc.). Gr\u00e2ce \u00e0 pg_vector, on peut facilement recommander des chansons similaires \u00e0 celles que nous \u00e9coutons.<\/p>\n<p>L\u2019avantage de pg_vector, c\u2019est qu\u2019il permet de g\u00e9rer ces vecteurs directement dans la base de donn\u00e9es, ce qui \u00e9vite de passer par des syst\u00e8mes externes plus complexes. Cela simplifie le d\u00e9veloppement et am\u00e9liore la performance, car tout est g\u00e9r\u00e9 au m\u00eame endroit.<\/p>\n<h2>5. Le test<\/h2>\n<p>Pour d\u00e9montrer le fonctionnement de l&#8217;extension, rien de tel qu&#8217;un petit test pour \u00e9prouver les fonctionnalit\u00e9s qu&#8217;elle propose. Le test sera plut\u00f4t simple et succinct pour \u00eatre accessible. Le pr\u00e9requi est d&#8217;avoir une version PostgreSQL 14 ou plus r\u00e9cente d&#8217;install\u00e9e.<\/p>\n<h3>Etape 1 :<\/h3>\n<p>On commence par installer l&#8217;extension pg_vector. Pour cela, nous allons avoir besoin d&#8217;un certain nombre d&#8217;outils pour le faire fonctionner. Une partie de ces outils sont disponible dans la distribution dev de PostgreSQL<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ip-192-1-1-201:~# sudo apt install postgresql-server-dev-14\r\n<\/pre>\n<p>Nous aurons \u00e9galement besoin de gcc et make :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ip-192-1-1-201:~# apt install make\r\nroot@ip-192-1-1-201:~# apt-get install gcc\r\n<\/pre>\n<p>On effectue ensuite un git clone du projet :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ip-192-1-1-201:~# git clone https:\/\/github.com\/pgvector\/pgvector.git\r\n<\/pre>\n<p>Et une fois que c&#8217;est fait, on l&#8217;installe avec make :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ip-192-1-1-201:~# cd pgvector\r\nroot@ip-192-1-1-201:~# make &amp;amp;&amp;amp; sudo make install\r\n<\/pre>\n<h3>Etape 2 :<\/h3>\n<p>On se connecte \u00e0 PostgreSQL pour cr\u00e9er l&#8217;extension. Au passage, on cr\u00e9\u00e9 aussi une base de donn\u00e9es pour faire nos test.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ip-192-1-1-201:~# su - postgres\r\npostgres@ip-192-1-1-201:~$ psql\r\npsql (14.13 (Ubuntu 14.13-0ubuntu0.22.04.1))\r\nType &quot;help&quot; for help.\r\n<\/pre>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\npostgres=# create database test_vector;\r\nCREATE DATABASE\r\npostgres=# \\c test_vector\r\nYou are now connected to database &quot;test_vector&quot; as user &quot;postgres&quot;.\r\ntest_vector=# CREATE EXTENSION vector;\r\nCREATE EXTENSION\r\n<\/pre>\n<p>Et dans la foul\u00e9e, on cr\u00e9e une table qui contient les vecteurs sur lesquels nous allons faire les test<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\ntest_vector=# CREATE TABLE documents (\r\nid SERIAL PRIMARY KEY,\r\ntitle TEXT,\r\nembedding vector(3) -- vecteur de dimension 3 pour cet exemple\r\n);\r\nCREATE TABLE\r\n<\/pre>\n<p>Insertion des donn\u00e9es d&#8217;exemple :<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\ntest_vector=# INSERT INTO documents (title, embedding) VALUES\r\n('Document 1', '[0.1, 0.2, 0.3]'),\r\n('Document 2', '[0.4, 0.5, 0.6]'),\r\n('Document 3', '[0.9, 0.8, 0.7]');\r\nINSERT 0 3\r\n<\/pre>\n<h3>Etape 3 :<\/h3>\n<p>Nous avons deux types de choses \u00e0 tester pour montrer l&#8217;efficacit\u00e9 de notre extension. En effet, pour rechercher un vecteur, deux modes s&#8217;offrent \u00e0 nous :<\/p>\n<ol>\n<li>\n<h4>La distance cosinus<\/h4>\n<\/li>\n<\/ol>\n<p>La distance cosinus mesure non pas combien deux vecteurs sont \u00e9loign\u00e9s, mais l&#8217;angle entre eux. C\u2019est un peu comme comparer la direction dans laquelle pointent deux vecteurs plut\u00f4t que la distance r\u00e9elle entre eux.<\/p>\n<p>Imaginons que nous sommes en train de lancer deux fl\u00e8ches. La distance cosinus nous dira si les deux fl\u00e8ches pointent dans la m\u00eame direction (sont similaires) ou si elles pointent dans des directions tr\u00e8s diff\u00e9rentes (sont moins similaires).<\/p>\n<p>Dans le cadre de l\u2019IA, cette mesure est souvent utilis\u00e9e pour comparer des embeddings (repr\u00e9sentations num\u00e9riques complexes), car elle se concentre sur la relation entre les \u00e9l\u00e9ments, ind\u00e9pendamment de leur taille exacte.<\/p>\n<p>Exemple simple :<\/p>\n<p>Prenons les deux films :<\/p>\n<ul>\n<li>Film A : <code>[1, 5, 50, 120]<\/code><\/li>\n<li>Film B : <code>[2, 4, 45, 110]<\/code><\/li>\n<\/ul>\n<p>La distance cosinus ne va pas se soucier de la diff\u00e9rence de valeur entre chaque composant, mais va regarder si les deux films ont des proportions similaires. Autrement dit, est-ce que leur &#8220;profil&#8221; g\u00e9n\u00e9ral est proche ou \u00e9loign\u00e9 ?<\/p>\n<p>Pour tester cette distance, dans notre pg vector, on utilise la m\u00e9thode suivante :<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\ntest_vector=# SELECT title, embedding, embedding &amp;lt;=&amp;gt; '[0.2, 0.1, 0.3]' AS distance\r\nFROM documents\r\nORDER BY embedding &amp;lt;=&amp;gt; '[0.2, 0.1, 0.3]' ASC\r\nLIMIT 3;\r\ntitle | embedding | distance\r\n------------+---------------+---------------------\r\nDocument 2 | [0.4,0.5,0.6] | 0.05582537807240784\r\nDocument 1 | [0.1,0.2,0.3] | 0.07142855242198809\r\nDocument 3 | [0.9,0.8,0.7] | 0.09815280896106982\r\n(3 rows)\r\n<\/pre>\n<p>Le symbole &lt;=&gt; repr\u00e9sente une distance cosinus.<\/p>\n<h4>2. La distance Euclidienne<\/h4>\n<p>Imaginons que nous sommes sur une carte avec deux points : le point A et le point B. La distance euclidienne, c&#8217;est la fa\u00e7on la plus intuitive de mesurer la distance entre ces deux points, comme si nous tracions une ligne droite entre eux. Pour parler en terme simple, c\u2019est la &#8220;distance \u00e0 vol d&#8217;oiseau&#8221;.<\/p>\n<p>Dans le cadre des vecteurs, la distance euclidienne mesure la diff\u00e9rence entre deux vecteurs, un peu comme si chaque vecteur \u00e9tait un point sur une carte en plusieurs dimensions. Plus cette distance est petite, plus les deux vecteurs (et donc les objets qu\u2019ils repr\u00e9sentent) sont similaires.<\/p>\n<p>Exemple simple :<\/p>\n<p>Imaginons deux films repr\u00e9sent\u00e9s par les vecteurs suivants :<\/p>\n<ul>\n<li><strong>Film A<\/strong> : <code>[1, 5, 50, 120]<\/code><\/li>\n<li><strong>Film B<\/strong> : <code>[2, 4, 45, 110]<\/code><\/li>\n<\/ul>\n<p>La distance euclidienne va calculer la diff\u00e9rence entre chaque nombre des deux vecteurs et d\u00e9terminer \u00e0 quel point ces films sont proches en termes de caract\u00e9ristiques (genre, nombre d\u2019acteurs, budget, etc.).<\/p>\n<p>Dans pg_vector on peut le tester ainsi :<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\r\ntest_vector=# SELECT title, embedding, embedding &amp;lt;-&amp;gt; '[0.2, 0.1, 0.3]' AS distance\r\nFROM documents\r\nORDER BY embedding &amp;lt;-&amp;gt; '[0.2, 0.1, 0.3]' ASC\r\nLIMIT 3;\r\ntitle | embedding | distance\r\n------------+---------------+--------------------\r\nDocument 1 | [0.1,0.2,0.3] | 0.1414213612422477\r\nDocument 2 | [0.4,0.5,0.6] | 0.5385165006363984\r\nDocument 3 | [0.9,0.8,0.7] | 1.0677078185041473\r\n(3 rows)\r\n<\/pre>\n<p>Elle est repr\u00e9sent\u00e9e par le cigle &lt;-&gt; dans pg_vector.<\/p>\n<h4>3. Quand choisir l&#8217;une ou l&#8217;autre des distances ?<\/h4>\n<ul>\n<li>La distance euclidienne est utile quand tu veux mesurer la diff\u00e9rence globale entre deux objets. Elle est facile \u00e0 comprendre et \u00e0 utiliser pour des comparaisons directes.<\/li>\n<li>La distance cosinus est utile quand tu veux savoir si deux objets sont globalement similaires dans leur profil, ind\u00e9pendamment de leur taille ou de leur \u00e9chelle. Elle est souvent utilis\u00e9e pour comparer des documents textuels ou des donn\u00e9es complexes en IA<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>L&#8217;extension pg_vector apporte une fonctionnalit\u00e9 puissante \u00e0 PostgreSQL, permettant de manipuler des donn\u00e9es complexes sous forme de vecteurs. Que ce soit pour des syst\u00e8mes de recommandation, des moteurs de recherche ou toute autre application li\u00e9e \u00e0 l\u2019intelligence artificielle, elle offre un moyen simple et efficace d&#8217;int\u00e9grer l&#8217;IA dans les bases de donn\u00e9es. Et tout cela, sans avoir besoin de comprendre des math\u00e9matiques avanc\u00e9es : il suffit de savoir que ces vecteurs permettent de traiter des informations complexes de mani\u00e8re tr\u00e8s efficace.<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620&#038;title=pg_vector%20%3A%20l%E2%80%99IA%20et%20PostgreSQL\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=pg_vector%20%3A%20l%E2%80%99IA%20et%20PostgreSQL&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F10620\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>1. Introduction : L&#8217;intelligence artificielle et le r\u00f4le des bases de donn\u00e9es L&#8217;intelligence artificielle (IA) conna\u00eet une popularit\u00e9 croissante, des assistants virtuels aux voitures autonomes, en passant par les recommandations de films et de produits. Mais pour que ces technologies&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":41,"featured_media":10637,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[266],"tags":[484,483,485],"class_list":["post-10620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postgresql","tag-ia","tag-rag","tag-vectordb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>pg_vector : l&#039;IA et PostgreSQL - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"pg_vector : l&#039;IA et PostgreSQL - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"1. Introduction : L&#8217;intelligence artificielle et le r\u00f4le des bases de donn\u00e9es L&#8217;intelligence artificielle (IA) conna\u00eet une popularit\u00e9 croissante, des assistants virtuels aux voitures autonomes, en passant par les recommandations de films et de produits. Mais pour que ces technologies&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-03T07:22:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-03T07:26:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2024\/12\/assistant.png\" \/>\n\t<meta property=\"og:image:width\" content=\"603\" \/>\n\t<meta property=\"og:image:height\" content=\"615\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sarah FAVEERE\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sarah FAVEERE\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\"},\"author\":{\"name\":\"Sarah FAVEERE\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/686f2452f7ec79115d31e41c230a9da2\"},\"headline\":\"pg_vector : l&#8217;IA et PostgreSQL\",\"datePublished\":\"2024-12-03T07:22:34+00:00\",\"dateModified\":\"2024-12-03T07:26:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\"},\"wordCount\":1629,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"ia\",\"rag\",\"vectorDB\"],\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\",\"name\":\"pg_vector : l'IA et PostgreSQL - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2024-12-03T07:22:34+00:00\",\"dateModified\":\"2024-12-03T07:26:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"pg_vector : l&#8217;IA et PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/686f2452f7ec79115d31e41c230a9da2\",\"name\":\"Sarah FAVEERE\",\"sameAs\":[\"http:\/\/blog.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/sfaveere\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"pg_vector : l'IA et PostgreSQL - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/","og_locale":"fr_FR","og_type":"article","og_title":"pg_vector : l'IA et PostgreSQL - Capdata TECH BLOG","og_description":"1. Introduction : L&#8217;intelligence artificielle et le r\u00f4le des bases de donn\u00e9es L&#8217;intelligence artificielle (IA) conna\u00eet une popularit\u00e9 croissante, des assistants virtuels aux voitures autonomes, en passant par les recommandations de films et de produits. Mais pour que ces technologies&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2024-12-03T07:22:34+00:00","article_modified_time":"2024-12-03T07:26:20+00:00","og_image":[{"width":603,"height":615,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2024\/12\/assistant.png","type":"image\/png"}],"author":"Sarah FAVEERE","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Sarah FAVEERE","Dur\u00e9e de lecture estim\u00e9e":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/"},"author":{"name":"Sarah FAVEERE","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/686f2452f7ec79115d31e41c230a9da2"},"headline":"pg_vector : l&#8217;IA et PostgreSQL","datePublished":"2024-12-03T07:22:34+00:00","dateModified":"2024-12-03T07:26:20+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/"},"wordCount":1629,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["ia","rag","vectorDB"],"articleSection":["PostgreSQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/","url":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/","name":"pg_vector : l'IA et PostgreSQL - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2024-12-03T07:22:34+00:00","dateModified":"2024-12-03T07:26:20+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/pg_vector-lia-et-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"pg_vector : l&#8217;IA et PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/686f2452f7ec79115d31e41c230a9da2","name":"Sarah FAVEERE","sameAs":["http:\/\/blog.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/sfaveere\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/10620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=10620"}],"version-history":[{"count":10,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/10620\/revisions"}],"predecessor-version":[{"id":10630,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/10620\/revisions\/10630"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/10637"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=10620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=10620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=10620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}