FEATURE Recherche sémantique · 158 k articles vectorisés en local

De la recherche de mots
à la recherche de sens.

Tapez une question concrète, en langage naturel. DILA trouve les articles pertinents, même venant d'autres codes, même sans aucun mot exact partagé. Pas d'OpenAI, pas d'Anthropic — tout tourne sur le VPS, en local.

1024dimensions par article ~400 mspar recherche 0 €API externe 100 %local · souverain
Le problème

FTS5 cherche des mots. Vos utilisateurs cherchent des concepts.

Le moteur full-text actuel ne ramène que les articles contenant exactement les termes tapés. Or les juristes formulent leurs questions avec leurs propres mots — pas avec le vocabulaire officiel du Code.

⌕ FTS5 (aujourd'hui)

Recherche par mots-clés

match exact · tokenisation BM25
« puis-je licencier un salarié qui m'a injurié sur Facebook ? »
Résultats
Aucun article trouvé. Les mots puis-je, licencier, injurié, Facebook ne forment pas une expression légale officielle.
L'utilisateur doit connaître les bons termes (faute lourde, devoir de loyauté…) pour trouver quoi que ce soit.
⊕ Sémantique (roadmap)

Recherche par sens

embeddings · cosine similarity · 1024 dim
« puis-je licencier un salarié qui m'a injurié sur Facebook ? »
Résultats
L1234-1 Code du travail 0.87
Faute grave et procédure disciplinaire…
L1331-1 Code du travail 0.84
Devoir de loyauté du salarié…
Art. 9 Code civil 0.79
Vie privée & expression publique…
Aucun mot-clé n'a été partagé entre la question et les articles. Le sens est trouvé, pas la syntaxe.
Comment ça marche

Chaque article devient un point dans un espace à 1024 dimensions.

Le modèle multilingual-e5-large (open source) transforme chaque article en un vecteur de 1024 nombres qui encode son sens, pas ses mots. Les articles qui parlent du même sujet se retrouvent proches dans l'espace, même s'ils viennent de codes différents.

Articles voisins = articles qui parlent de la même chose

Sur la carte de droite, chaque point est un article réel. Les couleurs représentent des thèmes, pas des codes : les articles sur la vie privée forment un cluster, ceux sur les obligations contractuelles un autre, etc.

Surveille l'article 9 du Code civil (le gros point violet entouré) : ses voisins les plus proches viennent du Code du travail (surveillance des salariés) et du Code pénal (atteinte à la vie privée). FTS5 ne ferait jamais ce lien — ces articles ne partagent aucun mot.

Pour répondre à une question utilisateur, le moteur encode la question en un vecteur, puis cherche les articles dont le vecteur est le plus proche (cosine similarity). Une recherche prend ~400 ms, indexée dans sqlite-vec à côté de la base FTS5 existante.

Art. 9 — Code civil L1121-1 (travail) 226-1 (pénal) Vie privée & surveillance Obligations contractuelles Fiscalité & impôts Urbanisme & environnement projection 2D de l'espace à 1024 dimensions (PCA)
Vie privée Obligations Fiscalité Urbanisme
Ce que ça débloque

Quatre fonctions concrètes derrière une même brique.

Une fois la base d'embeddings construite, plusieurs usages s'enchaînent : navigation par similarité, recherche en langage naturel, outils MCP pour Claude.ai, panneau « articles similaires » dans la fiche.

01

Articles similaires (cross-codes)

Sur un article ouvert, propose automatiquement les 10 articles les plus proches — y compris venant d'autres codes que celui consulté.

Sur Art. 9 Code civil (vie privée) remonte L1121-1 Code travail (surveillance des salariés) et 226-1 Code pénal (atteinte vie privée).
02

Recherche en langage naturel

L'utilisateur tape sa question avec ses propres mots, pas avec le vocabulaire officiel. Le moteur trouve les articles pertinents sans qu'aucun terme exact ne soit partagé.

« Mon voisin a coupé l'arbre sur ma propriété » articles sur la propriété, les empiètements, les troubles anormaux du voisinage.
03

Outils MCP pour Claude.ai

Expose dila_get_similar_articles et la recherche sémantique comme outils MCP. Claude.ai peut directement requêter DILA en sémantique depuis n'importe quelle conversation.

Dans Claude : « trouve-moi 10 articles similaires à L1234-5 » Claude appelle DILA, intègre les résultats.
04

Navigation par proximité

Un onglet « Articles similaires » dans la fiche article transforme DILA en système de recommandation juridique : on navigue de proche en proche, comme sur Netflix mais pour le droit.

L'utilisateur découvre des codes auxquels il n'aurait pas pensé — argument fort contre l'oubli d'un texte applicable.
Coût d'infra

Tout tourne en local. Zéro facture API.

L'encodage initial des 158 k articles, la base vectorielle finale et chaque recherche utilisateur : tout est calculé sur le VPS. Pas de quota, pas de dépendance critique à OpenAI ou Anthropic.

Poste
Coût
Encodage initial des 158 585 articles CPU local, batch de nuit · une seule fois
0 €
Stockage vectors.db 158 585 vecteurs × 1024 dim × 4 octets · disque OVH
~3 Go
Encodage des nouveaux articles DILA Quelques minutes par nuit, intégré au cron existant
0 €
Encodage d'une requête utilisateur ~300-500 ms par requête, calcul à la volée
0 €
Modèle multilingual-e5-large Open source · BAAI · auto-hébergeable · pas de licence
0 €
À ne pas confondre avec la feature Résumés IA d'alertes (Story 1.3), qui elle appelle Claude API et coûte environ 3 €/mois pour 100 alertes/jour. La recherche sémantique, elle, est 100 % gratuite à l'usage.
Pourquoi c'est différenciant

L'argument qui justifie le Pro à 99 €/mois.

Vos utilisateurs cibles (notaires, avocats, fiscalistes) savent déjà chercher par mots-clés. Ce qui les ferait payer, c'est gagner du temps et ne plus oublier un texte applicable.

Légifrance
FTS5 basique
Recherche par mots-clés stricts. Pas de notion de sens, pas de proximité entre articles d'autres codes.
Lexis 360 IA
Sémantique propriétaire
Très bon mais facturé 300-800 €/mois. Modèle fermé, données envoyées sur leurs serveurs.
Roadmap · Epic 3 · Q3 2026

La même différence qu'entre
Google d'avant 2015 et Google d'aujourd'hui.

Pour un SaaS juridique payant face à Légifrance gratuit, c'est la feature qui justifie le mieux l'abonnement. En cours d'intégration.

Ouvrir DILA