Search Toolkit

Search Toolkit est un framework Python pour construire des systèmes de recherche d’information (RI). Il fournit des composants pour l’ingestion, la récupération et l’évaluation. Il fonctionne avec plusieurs backends et chaque composant est remplaçable.

Les LLM ne sont pas entraîné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 fournit les briques de ce pipeline.

Caractéristiques clés

Caractéristiques clés

Ingestion

Ingestion

Ingestion comprend :

  • Extraction multi-format : PDF, DOCX et PPTX via Mistral OCR, HTML, classeurs, e-mails, texte brut
  • Chargement de fichiers : chargez depuis le système de fichiers local, S3, Google Cloud Storage ou Azure Blob Storage, ou implémentez des loaders personnalisés pour toute source
  • Découpage flexible : découpage par caractères, par tokens, adapté au Markdown ou basé 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 un LLM
  • Indexation : indexez vos documents dans un Mistral Search Index
Récupération

Récupération

Récupération comprend :

  • Recherche : recherche vectorielle ou hybride sur l'index en un seul appel
  • Accès Personnalisé aux données : avec retrieve, combinez les méthodes de recherche vectorielle et par mots-clés, recherchez dans des champs personnalisés et pondérez la fusion des résultats
  • Filtres : restreignez les résultats de retrieve par catégorie, date, source ou tout champ personnalisé avant le classement
Architecture

Architecture

L'ingestion transforme des documents bruts en fragments exploitables pour la recherche. Un FileLoader lit des octets bruts depuis une source, un DocumentExtractor les convertit en document structuré, un TextSplitter le découpe en fragments, des étapes DocumentProcessor optionnelles (comme un ChunkEnricher ou un SummaryEnricher) ajoutent des métadonnées, et un Embedder produit des vecteurs pour l'indexation dans un Mistral Search Index.

La recherche trouve les fragments pertinents pour une requête donnée. L'index de recherche exécute la requête avec l'une des deux méthodes suivantes : search pour une recherche vectorielle ou En environnement hybride, ou retrieve pour une requête de recherche que vous composez vous-même, avec des filtres.

Pipeline orchestre l'ingestion. Vous pouvez remplacer chaque composant d'ingestion : utilisez les implémentations intégrées ou vos propres implémentations.

Composants

Composants

ComposantOptions intégrées
Loaders de fichiersFilesystemFileLoader, S3FileLoader, GCSFileLoader, AzureBlobFileLoader, loaders personnalisés
ExtracteursMistralOCRExtractor, SmartPDFExtractor, PlainTextExtractor, PyMuPDFExtractor, HTMLExtractor, SpreadsheetExtractor, EmailExtractor, EmailWithAttachmentsExtractor, NumbersExtractor, LegacyOfficeExtractor, MistralAudioTranscriptionExtractor
Découpeurs de texteCharacterTextSplitter, TokenTextSplitter, MarkdownTextSplitter, ParagraphTokenTextSplitter, MarkdownTokenTextSplitter, SeparatorTextSplitter
EnrichisseursSummaryEnricher, ChunkEnricher personnalisé
EmbeddersMistralEmbedder, Embedder personnalisé
StockageMistral Search Index, Vespa, Postgres (pgvector), Qdrant ou base vectorielle personnalisée
Récupérationsearch et retrieve sur l'index, avec des filtres sur retrieve
Installation et extras

Installation et extras

Installez le package principal :

uv add mistralai-search-toolkit

Le paquet principal comprend le backend Mistral Search Index, le stockage par défaut des pipelines du Search Toolkit. Les backends auto-hébergés tels que Vespa et Postgres sont livrés sous forme d'extras.

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

ExtraDescription
vespaPlugin Vespa pour le stockage vectoriel et la recherche sémantique
postgresBackend PostgreSQL avec pgvector et pg_textsearch
extractor-pymupdfExtraction PDF avancée avec PyMuPDF Pro
extractor-spreadsheetAnalyse de classeurs (Excel, CSV, Apple Numbers)
extractor-emailAnalyse de fichiers e-mail (formats EML, MSG)
html-converter-markdownifyConvertit le HTML en Markdown
text-splitter-langchainStratégies supplémentaires de découpage de texte via LangChain
storage-gcsIntégration Google Cloud Storage
storage-azureIntégration Azure Blob Storage
storage-s3Intégration Amazon S3

Installez les extras avec le package principal :

uv add "mistralai-search-toolkit[extractor-pymupdf]"
uv add "mistralai-search-toolkit[extractor-pymupdf,storage-s3]"

Tous les packages sont disponibles sur PyPI.

i
Information

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

Conventions

Conventions

  • Tout est asynchrone. Attendez chaque appel d'index, de service, de pipeline et de moteur de requêtes, et exécutez-les dans une fonction async ou avec asyncio.run.
  • Les modèles sont immuables. Document, DocumentChunk, leurs métadonnées et SearchResult sont des modèles Pydantic figés. Pour en modifier un, créez une copie avec model_copy(update={...}).
  • Transmettez le contexte de la requête dans un objet de contexte. Chaque appel d'ingestion et de recherche accepte un objet IngestContext ou RetrievalContext facultatif. Pour transmettre des identifiants de tenants, des spans de traçage ou des en-têtes de l'API Mistral propres à chaque requête à travers la pile sans ajouter d'arguments, créez des sous-classes de ces classes de contexte.
Vérifiez votre configuration

Vérifiez votre configuration

Avant de construire sur un nouvel index, vérifiez-le de bout en bout :

  1. Vérifiez que (await service.get_index_info(name)).status vaut ready.
  2. Ingérez un document.
  3. Vérifiez qu'un appel à search ou retrieve portant sur une phrase de ce document renvoie le document.

Le Guide de démarrage reprend ces trois étapes.

Étapes suivantes

Étapes suivantes