IA native sur Postgres : NL2SQL, RAG & Agents
NL2SQL et RAG intégrés directement au backend Aurabase — pas des connecteurs ajoutés après coup. Nommer précisément ce que « natif » veut dire, capacité par capacité.
Aurabase intègre le NL2SQL (texte vers SQL, validé et borné) et le RAG (recherche vectorielle pgvector, embeddings HNSW) directement dans le backend, avec 3 fournisseurs LLM natifs (OpenAI, Anthropic/Claude, Gemini). Mistral, Scaleway AI et Ollama restent accessibles via un endpoint compatible OpenAI, pas via un client natif dédié.
NL2SQL — une question en langage naturel, un SQL sûr
Le moteur NL2SQL d’Aurabase valide chaque requête générée avant de l’exécuter : parsing AST via sqlparser, allowlist stricte de fonctions SQL, et un LIMIT borné toujours présent dans le SQL rendu. Ce n’est pas un simple appel LLM sans garde-fou — c’est un validateur qui refuse tout ce qui n’est pas un SELECT simple.
Le validateur rejette explicitement les CTE/WITH, les sous-requêtes, les UNION, les fonctions hors liste blanche (count, sum, avg, min, max, lower, upper, coalesce, date_trunc, now), et tout accès au catalogue système. Le plafond de lignes par défaut est configurable côté serveur, et peut être resserré par requête — jamais élargi au-delà du plafond serveur.
RAG natif et pgvector — sans brique tierce
pgvector 0.8.6 est déjà présent dans l’image Postgres de chaque projet Aurabase, avec un pipeline d’ingestion incluant retry réseau et une recherche vectorielle HNSW sur 3 classes de dimensions (768, 1536 et 3072) — largement sous la limite de 16 000 dimensions que supporte pgvector.
Pas d’étape séparée pour « ajouter » pgvector : l’extension fait partie de l’image tenant standard. Le pipeline d’ingestion, lui, est une capacité applicative Aurabase construite au-dessus. Voir le guide RAG pas-à-pas pour la mise en œuvre complète.
Le stockage est organisé par namespace : chaque document ingéré (POST /v1/ai/{project_id}/rag/ingest) est chunké, embeddé, puis rangé dans la colonne vectorielle correspondant à sa dimension. La recherche (POST /v1/ai/{project_id}/rag/query) combine récupération et génération ; un endpoint séparé (GET /v1/ai/{project_id}/search) expose la recherche vectorielle seule, sans appel LLM. Changer de modèle d’embedding ne casse pas l’historique : un namespace peut être ré-indexé (POST /v1/ai/{project_id}/rag/{namespace}/reindex) sous un nouveau modèle sans tout ré-ingérer.
Nuance technique rarement documentée ailleurs : au-delà de 2 000 dimensions, HNSW n’indexe pas le type vector standard de pgvector. Pour la classe 3072, Aurabase bascule automatiquement sur halfvec(3072) (précision réduite, indexable) plutôt que de silencieusement dégrader la recherche en scan séquentiel. Par défaut, la récupération renvoie 5 passages (top_k) au-dessus d’un seuil de similarité de 0.3 — les deux réglages sont surchargeables par requête.
3 fournisseurs natifs, et ce que « natif » exclut
OpenAI, Anthropic (Claude) et Google Gemini ont un client natif dédié dans le code d’Aurabase. Mistral, Scaleway AI et Ollama restent accessibles, mais via un endpoint compatible OpenAI — une nuance qui compte si votre choix de fournisseur dépend de ce détail d’intégration.
| Fournisseur | Intégration | Ce que ça change |
|---|---|---|
| OpenAI | Client natif dédié | Configuration directe par clé API du projet |
| Anthropic (Claude) | Client natif dédié | Configuration directe par clé API du projet |
| Google Gemini | Client natif dédié | Configuration directe par clé API du projet |
| Mistral | Endpoint compatible OpenAI | Fonctionne, sans client dédié optimisé |
| Scaleway AI | Endpoint compatible OpenAI | Fonctionne, sans client dédié optimisé |
| Ollama (auto-hébergé) | Endpoint compatible OpenAI | Utile pour un LLM local ou on-prem |
Pourquoi Supabase mise sur des connecteurs plutôt que sur du NL2SQL natif
Supabase a lancé un connecteur Claude officiel en février 2026, puis une app ChatGPT officielle au printemps 2026. Les deux permettent d’interroger une base Supabase depuis une interface conversationnelle tierce — une approche d’orchestration externe, différente d’un moteur NL2SQL intégré au backend lui-même. Voir aussi notre comparaison complète Aurabase vs Supabase.
Ce qui empêche un LLM d’exécuter n’importe quelle requête
Trois garde-fous s’appliquent avant toute exécution : validation syntaxique stricte (SELECT seul, allowlist de fonctions), bornage de résultat par LIMIT, et isolation du schéma interrogé au seul projet appelant. Le schéma introspecté n’est jamais fourni par le client — il vient de la base du projet, seule source qui fasse autorité.
SELECT. Toute tentative d’INSERT, UPDATE, DELETE, DROP, CREATE ou ALTER générée par le modèle est rejetée au niveau de l’arbre syntaxique — avant exécution, pas seulement par une instruction dans le prompt.Au-delà du SELECT-only, le validateur rejette aussi les CTE/WITH, les sous-requêtes, les UNION/INTERSECT/EXCEPT, les fonctions-tables (generate_series, pg_sleep…), les fonctions-fenêtre, le dollar-quoting et les clauses de verrouillage (FOR UPDATE). Une passe de sécurité exhaustive parcourt ensuite l’intégralité de l’arbre syntaxique — DISTINCT ON, OFFSET, FETCH, clauses intra-agrégat inclus — pour empêcher qu’une fonction interdite se glisse dans un recoin de la requête que le premier parcours n’aurait pas visité.
Agents IA sur Postgres — function calling, pas de SQL libre
Un agent construit avec un framework comme LangChain ou LlamaIndex peut appeler les endpoints REST d’Aurabase — NL2SQL, RAG, base de données — comme des outils invocables depuis sa propre boucle de function calling. Le NL2SQL joue alors un rôle précis : transformer la sous-question de l’agent en SQL validé, plutôt que de laisser l’agent générer et exécuter du SQL sans contrôle.
Concrètement, l’outil exposé à l’agent enveloppe un simple appel HTTP vers l’endpoint NL2SQL — c’est le SDK, pas un connecteur dédié au framework, qui fait le travail :