IA et agents
Rebase fournit quatre éléments distincts pour les assistants IA, et ils répondent à des problèmes différents. Il est utile de savoir lequel vous utilisez :
| Ce que c’est | Qui le consomme | |
|---|---|---|
| Serveur MCP | Un serveur Model Context Protocol stdio doté de 42 outils couvrant votre schéma, vos données, vos utilisateurs, votre stockage, vos crons et votre serveur de développement | Un assistant, au moment de l’exécution |
| Compétences d’agent | 21 fichiers de compétences Markdown écrits dans votre dépôt par rebase skills install |
Un assistant, comme documentation de référence |
| Fichiers d’instructions | ai-instructions.md ainsi que des fichiers de pointeurs spécifiques à chaque assistant, générés par rebase init |
Un assistant, comme règles permanentes |
| Clés d’API | Identifiants machine qui détiennent des portées, par collection et par opération | Tout ce qui appelle l’API HTTP |
Les trois premiers visent à fournir à un assistant des connaissances et des outils. Le quatrième est le seul qui détermine ce qu’il est réellement autorisé à faire.
Ce qui compte vraiment : ce à quoi un agent peut toucher
Section intitulée « Ce qui compte vraiment : ce à quoi un agent peut toucher »Un agent disposant d’outils sur votre base de données est un appelant d’API ordinaire qui se trouve décider de sa propre requête suivante. Rebase n’essaie pas de le contraindre avec des instructions — un prompt n’est pas un mécanisme de contrôle d’accès, et un agent qui lit vos lignes lit du texte que quelqu’un d’autre a pu écrire. La contrainte doit résider en dessous de l’agent, dans les identifiants qu’il transporte.
Rebase attribue à cet identifiant deux barrières indépendantes :
- Les portées de la clé. Déclarées par opération et, si vous le souhaitez, par
collection :
data:read:articles,data:write:articles.data:deleteest séparée dedata:write; c’est généralement celle que vous souhaitez refuser à un agent par ailleurs autorisé à modifier. - La sécurité au niveau des lignes (RLS). Les clés d’API ne contournent pas la RLS. Une
clé se connecte sous le rôle Postgres
rebase_usercomme n’importe quel autre appelant, de sorte que vos politiques déterminent toujours quelles lignes sont renvoyées.
Les deux doivent autoriser une requête. L’une ne remplace pas l’autre, et la seconde
est la raison pour laquelle une clé qui détient data:read sur toutes les collections peut
toujours renvoyer un ensemble de résultats vide.
Un piège classique : access: "public" sur une collection élargit les lignes qu’un appelant
peut voir, et non qui peut appeler. C’est une déclaration sur la visibilité des lignes,
pas sur l’authentification. L’accorder ne donne aucune portée à une clé,
et le refuser n’en bloque aucune.
Le fonctionnement détaillé — création de clés, choix des portées, rotation, expiration, limites de débit — est couvert dans Clés d’API. Ne sautez pas Règles de sécurité (RLS) au passage ; la deuxième barrière n’est efficace que si les politiques que vous avez écrites le sont.
Recherche vectorielle
Section intitulée « Recherche vectorielle »Rebase intègre un type de propriété natif vector sur Postgres et une
méthode de requête .vectorSearch() prenant en charge les distances cosine, l2 et inner_product.
Cela est déjà documenté, à deux endroits différents :
- Interroger les données → Recherche vectorielle — la méthode
du SDK, le champ
_distancequ’elle ajoute à chaque ligne et les points d’attention - API REST → Recherche vectorielle — les
paramètres de requête
vector_search,vector,vector_distanceetvector_threshold
Trois choses à savoir avant de concevoir votre application autour de cette fonctionnalité. Rebase stocke et cherche des
embeddings ; il ne les calcule pas — il n’y a aucun fournisseur d’embeddings,
paramètre de modèle ou clé d’API au sein de Rebase, la génération des vecteurs est donc de votre ressort.
pgvector est un prérequis, et son installation est facultative.
database({ extensions: ["vector"] }) dans config/resources.ts permet à rebase db push et à la vérification du schéma au démarrage d’exécuter CREATE EXTENSION IF NOT EXISTS vector pour
vous ; sans cela, ils créent la colonne et vous laissent gérer l’extension. Dans les deux cas,
le serveur nécessite une image contenant la bibliothèque et un rôle autorisé à l’installer.
Et chaque colonne vectorielle reçoit un index HNSW pour la distance cosinus,
car le cosinus est ce que vectorSearch mesure sauf si vous spécifiez distance — un index ne dessert
qu’un seul opérateur. Ajustez-le, ou désactivez-le, au niveau de la propriété : voir L’index.
Il n’est pas non plus possible de s’abonner aux requêtes vectorielles ; .vectorSearch(...).listen()
est refusé avec l’erreur VECTOR_SEARCH_NOT_LIVE.
Pour la recherche lexicale — recherche en texte intégral classée sur les champs que vous spécifiez, y compris le contenu JSONB et les tableaux — consultez Recherche. Il s’agit d’un mécanisme distinct et les deux n’interagissent pas.
Où aller ensuite
Section intitulée « Où aller ensuite »- Serveur MCP — connecter Claude Code, Cursor ou n’importe quel client MCP
- Compétences d’agent —
rebase skills installet les 21 compétences - Fichiers d’instructions pour l’IA — le modèle de règles échafaudées