Ismail Ben Alla

Juridia

RAG juridique multilingue

RAG · juil. 2024 · Terminé

Questions-réponses et recherche rapides sur plus de 100 000 documents juridiques en arabe et en français.

Construit avecFastAPIPostgreSQLQdrantLlamaIndexReactBM25 + cross-encoder

Juridia — vue d’ensemble

Présentation

Les documents juridiques rédigés à la fois en arabe et en français sont difficiles à bien rechercher : la recherche par mots-clés seule passe à côté de textes pertinents, et les embeddings seuls ne sont pas assez précis pour des questions juridiques.

Chez Juridia, j’ai conçu et déployé un système de génération augmentée par récupération (RAG) en production sur plus de 100 000 documents juridiques, construit avec FastAPI, LlamaIndex, PostgreSQL et Qdrant, avec une interface de recherche proposant la recherche par mots-clés, sémantique et par métadonnées.

Combiner BM25 avec une recherche dense et des embeddings multilingues, puis reclasser avec un cross-encoder, a amélioré la précision de la recherche de 18 à 22 % tout en maintenant la latence moyenne des requêtes sous les 350 ms. La leçon principale : la qualité de la recherche dépend de l’ensemble du pipeline de classement, pas seulement des embeddings. L’implémentation client est privée ; seul ce résumé technique est donc partagé.

La question

Comment une recherche multilingue peut-elle rester rapide et précise sur un vaste corpus juridique spécialisé ?

Fonctionnalités clés

Comment ça marche

  1. Indexer

    Les documents sont indexés à la fois pour la recherche par mots-clés et pour la recherche sémantique multilingue, avec PostgreSQL et la base de données vectorielle Qdrant.

  2. Recherche hybride

    Une requête est appariée à la fois par recherche BM25 par mots-clés et par recherche sémantique dense, avec des filtres de métadonnées disponibles.

  3. Reclasser

    Un cross-encoder réordonne les candidats afin que les passages les plus pertinents arrivent en premier.

  4. Répondre et servir

    Les réponses augmentées par récupération sont servies par un service FastAPI construit avec LlamaIndex, derrière l’interface de recherche React.

Stack technique

Ce que j’ai appris

Limites