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

Fonctionnalités principales

Ingestion

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

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

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

Composants

ComposantOptions intégrées
Chargeurs de fichiersFilesystemFileLoader, chargeurs personnalisés
ExtracteursMistralOCRExtractor, PlainTextExtractor, HTMLExtractor, SpreadsheetExtractor, EmailExtractor, NumbersExtractor, LegacyOfficeExtractor
Séparateurs de texteCharacterTextSplitter, TokenTextSplitter, MarkdownTextSplitter, SeparatorTextSplitter
EnrichisseursSummaryEnricher, ChunkEnricher personnalisé
EmbeddersMistralEmbedder, Embedder personnalisé
StockageVespa ou base vectorielle personnalisée
RécupérateursVectorRetriever
ReclasseursLLMReRanker, CrossEncoderReRanker, RRFRanker
PrétraitementLLMQueryRewriter, LLMQueryExtension
Mise en cacheSemanticCache avec InMemoryCacheBackend
Installation et extras

Installation et extras

Installez le package principal :

uv add mistralai-search-toolkit

Les extras optionnels ajoutent des fonctionnalités spécialisées :

ExtraDescription
vespaPlugin Vespa pour le stockage vectoriel et la recherche sémantique
extractor-pymupdfExtraction PDF avancée avec PyMuPDF Pro
extractor-spreadsheetAnalyse de tableurs (Excel, CSV, format Calamine)
extractor-emailAnalyse de fichiers e-mail (formats EML, MSG)
html-converter-markdownifyConversion de HTML en Markdown
text-splitter-langchainStratégies supplémentaires de séparation de texte via LangChain
storage-gcsIntégration avec Google Cloud Storage
storage-azureIntégration avec Azure Blob Storage
allTous 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 extras

Tous les packages sont disponibles sur PyPI.

i
Information

Nécessite Python 3.12+. Nous recommandons d’utiliser uv pour la gestion des dépendances.

Prochaines étapes

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, DocumentChunk et 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.