Reference BQL
La surface de grammaire BQL, une reference rapide de la syntaxe et des fonctions de table de recherche.
BQL est le langage de requete de Barrel, un dialecte PartiQL sur les documents, les vecteurs et la recherche par mot-cle. Ceci est la reference de syntaxe. Pour des exemples concrets et la semantique, lisez le guide des requetes.
Forme d’une instruction
SELECT <projection>
FROM <source>
WHERE <predicate>
ORDER BY <one key> [ASC|DESC]
LIMIT <n> OFFSET <n>
[SUBSCRIBE]
FROM db balaie la base de donnees courante. Vous pouvez aussi selectionner
depuis une fonction de table de recherche (ci-dessous). ORDER BY prend une seule
cle.
Chemins
Referencez les champs de document par chemin : d.title, d.author.name,
d.tags[0]. Mettez entre guillemets les cles qui ne sont pas des identifiants :
d."full name". Un WHERE id = '...' devient un balayage de cle primaire.
Operateurs
=, !=, <, <=, >, >=, IN, LIKE, BETWEEN, IS NULL,
IS NOT NULL, IS MISSING, CONTAINS(), combines avec AND, OR, NOT.
Parametres
Liez des valeurs avec $name et passez-les a query/3 :
barrel:query(Db, <<"SELECT id FROM db WHERE kind = $k">>, #{params => #{k => <<"note">>}}).
UNNEST
Etendez un tableau en lignes :
SELECT t FROM db UNNEST(d.tags) AS t
Fonctions de table de recherche
Utilisez une fonction de recherche comme source FROM. Chacune prend une chaine de
requete et k, et expose une colonne _score :
SELECT id, _score FROM vector_top_k('edge sync', k => 5) AS v
SELECT id, _score FROM bm25_top_k('edge sync', k => 5) AS b
SELECT id, _score FROM hybrid_top_k('edge sync', k => 5) AS h
vector_top_k et hybrid_top_k necessitent un embedder configure ; bm25_top_k
necessite un backend BM25 active a l’ouverture.
Requetes en direct
Ajoutez SUBSCRIBE pour diffuser les correspondances a mesure qu’elles changent
(Server-Sent Events via HTTP). Portee v1 : pas de jointures, pas de GROUP BY, pas
de jokers [*] ; les fonctions de table, UNNEST, ORDER BY, et OFFSET ne se
combinent pas avec SUBSCRIBE.