Search Toolkit
Search Toolkit est un framework Python conçu pour créer des systèmes de recherche d'informations (IR) prêts pour la production. Il propose des composants pour l'ingestion, la récupération et l'évaluation. Il est compatible avec divers backends, et chaque composant peut être remplacé.
Les LLM ne sont pas formés sur vos données privées. Pour ancrer leurs réponses dans vos documents, vous avez besoin d’un pipeline de récupération qui ingère, indexe et recherche votre contenu. Search Toolkit vous fournit tous les éléments nécessaires pour assemblé ce pipeline.
Fonctionnalités principales
Ingestion
Ingestion inclut :
- Extraction multi-formats : PDF/DOCX/PPTX via Mistral OCR, HTML, tableurs, e-mails, texte brut
- Chargement de fichiers : chargement depuis le système de fichiers local ou implémentation de chargeurs personnalisés pour toute source
- Découpage flexible : séparation par caractères, tokens, en respectant le Markdown ou basée sur des séparateurs
- Enrichissement : enrichissez les documents et les fragments avec des métadonnées personnalisées ou des résumés générés par LLM
- Indexation : indexation dans des bases vectorielles pour la recherche sémantique
Récupération
Récupération inclut :
- Stratégies multiples : recherche vectorielle (sémantique) avec reclassement optionnel
- Prétraitement des requêtes : améliorez les requêtes des utilisateurs avec reformulation par LLM ou extension de requête
- Reclassement : reclassement par LLM, reclassement par encodeur croisé ou reclassement personnalisé
- Mise en cache sémantique : mise en cache des résultats par similarité de requête pour éviter les récupérations redondantes
Architecture
L’ingestion transforme les documents bruts en fragments recherchés. Un FileLoader lit les octets bruts depuis une source, un DocumentExtractor les convertit en document structuré, un TextSplitter les divise en fragments, un ChunkEnricher optionnel ajoute des métadonnées, et un Embedder produit des vecteurs pour indexation dans une base vectorielle.
La récupération trouve les fragments pertinents pour une requête donnée. Un prétraitement de requête optionnel reformule ou étend la requête, un Retriever recherche dans l’index vectoriel, et un Reranker optionnel réévalue les résultats avant de les retourner.
Les deux workflows sont orchestrés par des classes de haut niveau (Pipeline pour l’ingestion, QueryEngine pour la récupération) qui gèrent le câblage et l’exécution des composants. Chaque composant peut être remplacé : utilisez les implémentations intégrées ou apportez les vôtres.
Composants
| Composant | Options intégrées |
|---|---|
| Chargeurs de fichiers | FilesystemFileLoader, chargeurs personnalisés |
| Extracteurs | MistralOCRExtractor, PlainTextExtractor, HTMLExtractor, SpreadsheetExtractor, EmailExtractor, NumbersExtractor, LegacyOfficeExtractor |
| Séparateurs de texte | CharacterTextSplitter, TokenTextSplitter, MarkdownTextSplitter, SeparatorTextSplitter |
| Enrichisseurs | SummaryEnricher, ChunkEnricher personnalisé |
| Embedders | MistralEmbedder, Embedder personnalisé |
| Stockage | Vespa ou base vectorielle personnalisée |
| Récupérateurs | VectorRetriever |
| Reclasseurs | LLMReRanker, CrossEncoderReRanker, RRFRanker |
| Prétraitement | LLMQueryRewriter, LLMQueryExtension |
| Mise en cache | SemanticCache avec InMemoryCacheBackend |
Installation et extras
Installez le package principal :
uv add mistralai-search-toolkitLes extras optionnels ajoutent des fonctionnalités spécialisées :
| Extra | Description |
|---|---|
vespa | Plugin Vespa pour le stockage vectoriel et la recherche sémantique |
extractor-pymupdf | Extraction PDF avancée avec PyMuPDF Pro |
extractor-spreadsheet | Analyse de tableurs (Excel, CSV, format Calamine) |
extractor-email | Analyse de fichiers e-mail (formats EML, MSG) |
html-converter-markdownify | Conversion de HTML en Markdown |
text-splitter-langchain | Stratégies supplémentaires de séparation de texte via LangChain |
storage-gcs | Intégration avec Google Cloud Storage |
storage-azure | Intégration avec Azure Blob Storage |
all | Tous les extras optionnels |
Installez les extras avec le package principal :
uv add "mistralai-search-toolkit[vespa]"
uv add "mistralai-search-toolkit[vespa,extractor-pymupdf]"
uv add "mistralai-search-toolkit[all]" # Install all extrasTous les packages sont disponibles sur PyPI.
Nécessite Python 3.12+. Nous recommandons d’utiliser uv pour la gestion des dépendances.
Prochaines étapes
- Guide de démarrage : créez votre premier pipeline d’ingestion et de récupération de bout en bout.
- Modèle de document : comprenez
Document,DocumentChunket l’identifiant qui les relie. - Index de recherche : configurez votre base vectorielle.
- Ingestion : chargez, extrayez, découpez en fragments, enrichissez et indexez vos documents.
- Récupération : configurez la recherche vectorielle avec reclassement optionnel.