{"id":2239,"date":"2026-04-11T12:07:12","date_gmt":"2026-04-11T10:07:12","guid":{"rendered":"https:\/\/askem.eu\/?p=2239"},"modified":"2026-04-11T12:07:18","modified_gmt":"2026-04-11T10:07:18","slug":"pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire","status":"publish","type":"post","link":"https:\/\/askem.eu\/en\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/","title":{"rendered":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire"},"content":{"rendered":"<h2 class=\"wp-block-heading\">pgvector&nbsp;: la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire<\/h2>\n\n\n\n<p>Quand on construit un pipeline RAG (Retrieval-Augmented Generation), la question du stockage des embeddings se pose rapidement. On a vu dans un pr\u00e9c\u00e9dent article comment d\u00e9ployer Qdrant, une base vectorielle d\u00e9di\u00e9e. Mais si votre infrastructure repose d\u00e9j\u00e0 sur PostgreSQL, ce qui est le cas pour CKAN, Keycloak, Nextcloud, Gitea, Drupal et tant d&rsquo;autres applications, il existe une alternative \u00e9l\u00e9gante&nbsp;: <strong>pgvector<\/strong>, une extension open source qui ajoute nativement le support des vecteurs et de la recherche par similarit\u00e9 directement dans PostgreSQL. Pas de service suppl\u00e9mentaire \u00e0 d\u00e9ployer, pas de synchronisation \u00e0 maintenir, pas de port r\u00e9seau \u00e0 ouvrir.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pourquoi pgvector plut\u00f4t qu&rsquo;une base vectorielle d\u00e9di\u00e9e<\/h3>\n\n\n\n<p>Les bases vectorielles sp\u00e9cialis\u00e9es (Qdrant, Milvus, Weaviate, Pinecone) offrent des performances remarquables sur de tr\u00e8s grands volumes&nbsp;: des centaines de millions de vecteurs. Mais la majorit\u00e9 des cas d&rsquo;usage en production ne n\u00e9cessitent pas cette \u00e9chelle. Pour un portail open data avec quelques dizaines de milliers de documents, un assistant interne sur une base documentaire de 50 000 pages, ou un moteur de recherche s\u00e9mantique sur les m\u00e9tadonn\u00e9es CKAN, pgvector suffit largement et pr\u00e9sente des avantages d\u00e9cisifs.<\/p>\n\n\n\n<p>Premier avantage&nbsp;: la <strong>simplicit\u00e9 op\u00e9rationnelle<\/strong>. pgvector vit dans votre <a href=\"https:\/\/askem.eu\/en\/2026\/03\/22\/optimiser-postgresql-pour-une-stack-open-source-tuning-maintenance-et-haute-disponibilite\/\" type=\"post\" id=\"2116\">PostgreSQL<\/a> existant. Pas de conteneur suppl\u00e9mentaire, pas de backup s\u00e9par\u00e9, pas de monitoring d\u00e9di\u00e9. Vos proc\u00e9dures de sauvegarde (<a href=\"https:\/\/askem.eu\/en\/2026\/03\/19\/sauvegardes-automatisees-avec-borgbackup-proteger-une-infrastructure-auto-hebergee\/\" type=\"post\" id=\"2100\">BorgBackup<\/a>), de tuning et de haute disponibilit\u00e9 (r\u00e9plication, patroni) couvrent automatiquement les donn\u00e9es vectorielles. Deuxi\u00e8me avantage&nbsp;: la <strong>coh\u00e9rence transactionnelle<\/strong>. Vos embeddings et vos m\u00e9tadonn\u00e9es structur\u00e9es vivent dans la m\u00eame base, la m\u00eame transaction. Pas de risque de d\u00e9synchronisation entre un document mis \u00e0 jour dans PostgreSQL et son embedding encore pr\u00e9sent dans une base vectorielle externe. <br>Troisi\u00e8me avantage&nbsp;: la possibilit\u00e9 de combiner recherche vectorielle et filtres SQL classiques dans une seule requ\u00eate, par exemple, chercher les documents les plus proches s\u00e9mantiquement parmi ceux publi\u00e9s apr\u00e8s une certaine date et appartenant \u00e0 une organisation donn\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation et configuration<\/h3>\n\n\n\n<p>pgvector s&rsquo;installe comme n&rsquo;importe quelle extension PostgreSQL. Sur une instance Docker, il suffit d&rsquo;utiliser l&rsquo;image officielle <code>pgvector\/pgvector:pg16<\/code> (ou pg15, pg17 selon votre version). Si vous g\u00e9rez PostgreSQL directement sur le serveur, l&rsquo;extension se compile depuis les sources en quelques commandes, ou s&rsquo;installe via le gestionnaire de paquets sur les distributions courantes.<\/p>\n\n\n\n<p>Une fois l&rsquo;extension charg\u00e9e, la configuration se fait en quelques lignes SQL&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Activer l'extension\nCREATE EXTENSION IF NOT EXISTS vector;\n\n-- Cr\u00e9er une table avec une colonne vectorielle\nCREATE TABLE documents (\n    id SERIAL PRIMARY KEY,\n    title TEXT NOT NULL,\n    content TEXT,\n    source_url TEXT,\n    organization TEXT,\n    created_at TIMESTAMP DEFAULT NOW(),\n    embedding vector(1536)  -- dimension selon le mod\u00e8le d'embedding\n);\n\n-- Cr\u00e9er un index HNSW pour la recherche rapide\nCREATE INDEX ON documents\nUSING hnsw (embedding vector_cosine_ops)\nWITH (m = 16, ef_construction = 200);<\/code><\/pre>\n\n\n\n<p>Le type <code>vector(1536)<\/code> stocke des vecteurs de dimension 1536 -, la dimension standard des embeddings d&rsquo;OpenAI text-embedding-3-small ou de mod\u00e8les open source comme <code>nomic-embed-text<\/code> servi par Ollama. pgvector supporte des dimensions allant jusqu&rsquo;\u00e0 2000 (et au-del\u00e0 avec le type <code>halfvec<\/code> en demi-pr\u00e9cision).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Types d&rsquo;index&nbsp;: HNSW vs IVFFlat<\/h3>\n\n\n\n<p>pgvector propose deux algorithmes d&rsquo;indexation. <strong>HNSW<\/strong> (Hierarchical Navigable Small World) est le choix par d\u00e9faut recommand\u00e9&nbsp;: il offre les meilleures performances en lecture avec un temps de construction raisonnable. Le param\u00e8tre <code>m<\/code> contr\u00f4le le nombre de connexions par n\u0153ud (16 est un bon d\u00e9faut), et <code>ef_construction<\/code> la qualit\u00e9 de construction de l&rsquo;index (200 offre un bon compromis). <strong>IVFFlat<\/strong> est plus rapide \u00e0 construire et consomme moins de m\u00e9moire, mais n\u00e9cessite un entra\u00eenement pr\u00e9alable sur les donn\u00e9es existantes, il convient mieux aux jeux de donn\u00e9es statiques de grande taille.<\/p>\n\n\n\n<p>Pour la plupart des cas d&rsquo;usage, HNSW avec les param\u00e8tres par d\u00e9faut offre un excellent rappel (&gt;95&nbsp;%) avec des temps de requ\u00eate inf\u00e9rieurs \u00e0 10 ms sur des collections de quelques centaines de milliers de vecteurs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Int\u00e9gration dans un pipeline RAG avec Ollama<\/h3>\n\n\n\n<p>L&rsquo;int\u00e9gration de pgvector dans un pipeline RAG existant est directe. Voici le flux typique avec une stack enti\u00e8rement open source&nbsp;:<\/p>\n\n\n\n<p><strong>Phase d&rsquo;ingestion&nbsp;:<\/strong> un script Python (ou un workflow n8n) r\u00e9cup\u00e8re les documents depuis CKAN, Nextcloud ou un r\u00e9pertoire local. Chaque document est d\u00e9coup\u00e9 en chunks (paragraphes ou sections), puis chaque chunk est envoy\u00e9 \u00e0 Ollama pour g\u00e9n\u00e9rer son embedding via un mod\u00e8le comme <code>nomic-embed-text<\/code> ou <code>mxbai-embed-large<\/code>. Le chunk et son embedding sont ins\u00e9r\u00e9s dans la table pgvector.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import ollama\nimport psycopg2\n\n# G\u00e9n\u00e9rer l'embedding via Ollama\nresponse = ollama.embeddings(\n    model=\"nomic-embed-text\",\n    prompt=chunk_text\n)\nembedding = response&#91;\"embedding\"]\n\n# Ins\u00e9rer dans PostgreSQL\/pgvector\ncur.execute(\"\"\"\n    INSERT INTO documents (title, content, source_url, organization, embedding)\n    VALUES (%s,&nbsp;%s,&nbsp;%s,&nbsp;%s,&nbsp;%s::vector)\n\"\"\", (title, chunk_text, url, org, str(embedding)))<\/code><\/pre>\n\n\n\n<p><strong>Phase de requ\u00eate&nbsp;:<\/strong> quand un utilisateur pose une question, son texte est transform\u00e9 en embedding par le m\u00eame mod\u00e8le, puis pgvector cherche les chunks les plus proches par distance cosinus. Les r\u00e9sultats sont inject\u00e9s comme contexte dans le prompt envoy\u00e9 au LLM (Ollama, vLLM).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Recherche des 5 documents les plus proches\n-- avec filtre SQL classique sur l'organisation\nSELECT title, content, source_url,\n       1 - (embedding &lt;=&gt; query_embedding::vector) AS similarity\nFROM documents\nWHERE organization = 'ville-de-rennes'\nORDER BY embedding &lt;=&gt; query_embedding::vector\nLIMIT 5;<\/code><\/pre>\n\n\n\n<p>L&rsquo;op\u00e9rateur <code>&lt;=&gt;<\/code> calcule la distance cosinus. pgvector supporte \u00e9galement la distance euclidienne (<code>&lt;-&gt;<\/code>) et le produit scalaire (<code>&lt;#&gt;<\/code>). La combinaison avec des clauses <code>WHERE<\/code> SQL classiques est le point fort de cette approche&nbsp;: pas besoin de pr\u00e9-filtrer c\u00f4t\u00e9 applicatif.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Performances et limites<\/h3>\n\n\n\n<p>pgvector g\u00e8re confortablement des collections de quelques centaines de milliers \u00e0 quelques millions de vecteurs sur un serveur modeste (16 Go de RAM, SSD). Au-del\u00e0 de 5 \u00e0 10 millions de vecteurs en dimension 1536, les performances commencent \u00e0 se d\u00e9grader et une base vectorielle d\u00e9di\u00e9e comme Qdrant devient pertinente. Les param\u00e8tres cl\u00e9s \u00e0 surveiller sont le <code>maintenance_work_mem<\/code> (augmenter pour acc\u00e9l\u00e9rer la construction des index HNSW), le <code>shared_buffers<\/code> (pour garder l&rsquo;index en m\u00e9moire), et le <code>ef_search<\/code> (ajustable par session pour arbitrer entre vitesse et rappel).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Augmenter la qualit\u00e9 de recherche pour une requ\u00eate pr\u00e9cise\nSET hnsw.ef_search = 200;\n\n-- Revenir au d\u00e9faut pour les requ\u00eates courantes\nSET hnsw.ef_search = 40;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Quand choisir pgvector, quand choisir Qdrant<\/h3>\n\n\n\n<p>Le choix entre pgvector et une base vectorielle d\u00e9di\u00e9e se r\u00e9sume souvent \u00e0 une question de volume et de complexit\u00e9 op\u00e9rationnelle. pgvector est le bon choix quand vous avez d\u00e9j\u00e0 PostgreSQL dans votre stack, que votre collection ne d\u00e9passe pas quelques millions de vecteurs, et que vous valorisez la simplicit\u00e9 de maintenance et la coh\u00e9rence transactionnelle. Qdrant (ou Milvus, Weaviate) devient pertinent quand vous g\u00e9rez des dizaines de millions de vecteurs, que vous avez besoin de fonctionnalit\u00e9s avanc\u00e9es comme le multi-tenancy natif, le filtrage par payload optimis\u00e9, ou la r\u00e9plication distribu\u00e9e.<\/p>\n\n\n\n<p>En pratique, pgvector est souvent le bon point de d\u00e9part. Il est plus simple \u00e0 d\u00e9ployer, \u00e0 sauvegarder et \u00e0 monitorer. Et si les besoins \u00e9voluent, la migration vers une base d\u00e9di\u00e9e reste possible \u2014 les embeddings sont les m\u00eames, seul le stockage change.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Docker Compose&nbsp;: ajouter pgvector \u00e0 sa stack existante<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># docker-compose.yml \u2014 extrait\nservices:\n  postgres:\n    image: pgvector\/pgvector:pg16\n    environment:\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}\n      POSTGRES_DB: app\n    volumes:\n      - pgdata:\/var\/lib\/postgresql\/data\n    ports:\n      - \"5432:5432\"\n    deploy:\n      resources:\n        limits:\n          memory: 4G\n\nvolumes:\n  pgdata:<\/code><\/pre>\n\n\n\n<p>Il suffit de remplacer l&rsquo;image PostgreSQL standard par <code>pgvector\/pgvector:pg16<\/code>. L&rsquo;image est bas\u00e9e sur l&rsquo;image officielle PostgreSQL avec l&rsquo;extension pr\u00e9-compil\u00e9e. Aucune autre modification n&rsquo;est n\u00e9cessaire, vos bases, utilisateurs et donn\u00e9es existants restent intacts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>pgvector transforme PostgreSQL en base vectorielle sans ajouter de complexit\u00e9 \u00e0 votre infrastructure. Pour la majorit\u00e9 des projets RAG auto-h\u00e9berg\u00e9s&nbsp;: assistant sur donn\u00e9es ouvertes, moteur de recherche s\u00e9mantique interne, indexation documentaire, c&rsquo;est le chemin le plus court entre vos documents et un LLM capable de les exploiter. Combin\u00e9 avec <a href=\"https:\/\/askem.eu\/en\/2026\/03\/29\/ollama-executer-des-llm-en-local\/\" type=\"post\" id=\"2141\">Ollama<\/a> pour les embeddings et l&rsquo;inf\u00e9rence, <a href=\"https:\/\/askem.eu\/en\/2026\/03\/30\/n8n-automatiser-ses-workflows\/\" type=\"post\" id=\"2144\">n8n<\/a> pour l&rsquo;orchestration et <a href=\"https:\/\/askem.eu\/en\/2026\/04\/02\/langfuse-observer-et-evaluer-ses-pipelines-llm-open-source-en-production\/\" type=\"post\" id=\"2162\">Langfuse<\/a> pour l&rsquo;observabilit\u00e9, il compl\u00e8te une stack RAG 100&nbsp;% open source qui tient dans un seul <code>docker-compose.yml<\/code>.<\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>pgvector&nbsp;: la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire Quand on construit un pipeline RAG (Retrieval-Augmented Generation), la question du stockage des embeddings se pose rapidement. On a vu dans un pr\u00e9c\u00e9dent article comment d\u00e9ployer Qdrant, une base vectorielle d\u00e9di\u00e9e. Mais si votre infrastructure repose d\u00e9j\u00e0 sur PostgreSQL, ce qui est le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2240,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[16,18],"tags":[],"class_list":["post-2239","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-devops","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem<\/title>\n<meta name=\"description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/askem.eu\/en\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem\" \/>\n<meta property=\"og:description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/askem.eu\/en\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/\" \/>\n<meta property=\"og:site_name\" content=\"askem\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/fb.me\/askem.eu\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-11T10:07:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-11T10:07:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"askemadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"askemadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/\"},\"author\":{\"name\":\"askemadmin\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\"},\"headline\":\"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire\",\"datePublished\":\"2026-04-11T10:07:12+00:00\",\"dateModified\":\"2026-04-11T10:07:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/\"},\"wordCount\":1181,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-11.png\",\"articleSection\":[\"AI\",\"devops\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/\",\"url\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/\",\"name\":\"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-11.png\",\"datePublished\":\"2026-04-11T10:07:12+00:00\",\"dateModified\":\"2026-04-11T10:07:18+00:00\",\"description\":\"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#primaryimage\",\"url\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-11.png\",\"contentUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-11.png\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/11\\\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/askem.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"name\":\"askem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/askem.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\",\"name\":\"Askem\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"contentUrl\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"width\":760,\"height\":480,\"caption\":\"Askem\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/fb.me\\\/askem.eu\",\"https:\\\/\\\/linkedin.com\\\/company\\\/askem-eu\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\",\"name\":\"askemadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"caption\":\"askemadmin\"},\"sameAs\":[\"https:\\\/\\\/askem.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","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:\/\/askem.eu\/en\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/","og_locale":"en_US","og_type":"article","og_title":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem","og_description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","og_url":"https:\/\/askem.eu\/en\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/","og_site_name":"askem","article_publisher":"https:\/\/fb.me\/askem.eu","article_published_time":"2026-04-11T10:07:12+00:00","article_modified_time":"2026-04-11T10:07:18+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png","type":"image\/png"}],"author":"askemadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"askemadmin","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#article","isPartOf":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/"},"author":{"name":"askemadmin","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9"},"headline":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire","datePublished":"2026-04-11T10:07:12+00:00","dateModified":"2026-04-11T10:07:18+00:00","mainEntityOfPage":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/"},"wordCount":1181,"commentCount":0,"publisher":{"@id":"https:\/\/askem.eu\/#organization"},"image":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png","articleSection":["AI","devops"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/","url":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/","name":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire - askem","isPartOf":{"@id":"https:\/\/askem.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#primaryimage"},"image":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png","datePublished":"2026-04-11T10:07:12+00:00","dateModified":"2026-04-11T10:07:18+00:00","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","breadcrumb":{"@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#primaryimage","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-11.png","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/askem.eu\/2026\/04\/11\/pgvector-la-recherche-vectorielle-dans-postgresql-pour-un-rag-sans-brique-supplementaire\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/askem.eu\/"},{"@type":"ListItem","position":2,"name":"pgvector : la recherche vectorielle dans PostgreSQL pour un RAG sans brique suppl\u00e9mentaire"}]},{"@type":"WebSite","@id":"https:\/\/askem.eu\/#website","url":"https:\/\/askem.eu\/","name":"askem","description":"","publisher":{"@id":"https:\/\/askem.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/askem.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/askem.eu\/#organization","name":"Askem","url":"https:\/\/askem.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","width":760,"height":480,"caption":"Askem"},"image":{"@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/fb.me\/askem.eu","https:\/\/linkedin.com\/company\/askem-eu"]},{"@type":"Person","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9","name":"askemadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","caption":"askemadmin"},"sameAs":["https:\/\/askem.eu"]}]}},"_links":{"self":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/comments?post=2239"}],"version-history":[{"count":1,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2239\/revisions"}],"predecessor-version":[{"id":2241,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2239\/revisions\/2241"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media\/2240"}],"wp:attachment":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media?parent=2239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/categories?post=2239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/tags?post=2239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}