Changelog

Toutes les modifications notables apportées à Search Toolkit sont documentées ici.

0.0.13

0.0.13

Modifications incompatibles

Modèle d’embedding du schéma

  • create_schema() et create_default_schema() acceptent désormais embedding_model (EmbeddingModel ou MistralEmbeddingPreset) à la place de embedding_dimensions: int. embedding_dimensions est déprécié. Fournir les deux paramètres lève une erreur ValueError.
  • VespaSchemaDefinition.embedding_dimensions est remplacé par embedding_model: EmbeddingModel, qui transmet le nom, les dimensions, le type de données et la métrique de distance à la couche de schéma. VespaSearchIndex expose désormais une propriété embedding_model.

Améliorations

  • Ajout d’un backend de recherche Postgres (mistralai-search-toolkit-plugins-postgres) en complément de Vespa. Il prend en charge la recherche dense et hybride, la navigation et les mises à jour partielles. Les extensions vector et pg_textsearch doivent être provisionnées dans la base de données cible.
  • Ajout de l’abstraction EmbeddingModel comme source de vérité pour la configuration vectorielle. Elle comprend MistralEmbeddingModel, CustomEmbeddingModel, les presets MistralEmbeddingPreset, VectorDType, DistanceMetric et le protocole VectorConfig.
  • SmartPDFExtractor et LegacyOfficeExtractor acceptent tout DocumentExtractor comme délégué OCR. Un déploiement sans accès à l’API Mistral peut ainsi fournir son propre moteur.
  • Ajout d’une extraction PDF orientée texte, activée avec pdf_min_chars_per_page. Elle est désactivée par défaut.
  • Propagation de exclude_ids dans la couche de récupération. CachedQueryEngine.search transmet ce paramètre et ignore le cache lorsque des exclusions sont définies.
  • SharePoint : ajout des URL de documents externes aux résultats de recherche et du filtrage par chemin ou identifiant externe avec document_url, document_path et document_external_id.

Corrections de bugs

  • Mise à jour de markdownify vers >=1.0.0,<2 et adaptation du convertisseur personnalisé à l’API 1.x.
0.0.12

0.0.12

Modifications incompatibles

Sérialisation des checkpoints

  • Un nouveau module document/serialization.py introduit un DocumentTypeRegistry et des identifiants de type stables, afin que les classes de documents puissent faire un aller-retour via un service externe en toute sécurité.

Autres

  • Mise à jour de mistralai vers >=2.9.1,<2.10.

Améliorations

  • Ajout de MistralClientConfig et de build_mistral_client() pour centraliser la création des clients du SDK Mistral pour des pipelines complets.
  • Ajout de SmartPDFExtractor, qui choisit automatiquement entre PyMuPDF et Mistral OCR pour les PDF qui disposent déjà d’une couche de texte.
  • Ajout de EmailWithAttachmentsExtractor, qui intègre le texte des pièces jointes dans le Markdown de l’e-mail parent sous une section ## Attachments.
  • Amélioration du signalement des erreurs liées aux problèmes d’ingestion.

Corrections de bugs

  • Les échecs d’ingestion déterministes sont désormais détectés plus rapidement.

Maintenance

  • Mise à jour de dynaconf, de >=3.2.11 à >=3.3.4.
  • Renommage du module mistralai.search.toolkit.embedders en mistralai.search.toolkit.embedding. Une couche de compatibilité embedders, rétrocompatible, réexporte les symboles publics et émet un DeprecationWarning.
0.0.11

0.0.11

Améliorations

  • Pour l’ingestion, les checkpoints d’extraction (enregistrement d’instantanés entre les étapes pour accélérer les nouvelles tentatives) sont désormais une capacité indépendante du backend. Pipeline(checkpoint_store=...) accepte n’importe quel backend ObjectStorage et enregistre des checkpoints entre les étapes d’ingestion.
  • Introduction d’un protocole DocumentProcessor pour l’ingestion, qui unifie TextSplitter, Embedder et ChunkEnricher.
  • Ajout de la synthèse map-reduce pour les documents longs : SummarizeRequestConfig avec overflow_strategy: OverflowStrategy.MAP_REDUCE peut découper un document, synthétiser ses différentes parties et les fusionner dans une synthèse finale.
  • Ajout de fonctionnalités OCR v4 : intégration directe des tableaux Markdown dans les fragments de page, scores de confiance par fragment et prise en charge de base des bounding boxes.

Corrections de bugs

  • Nettoyage des points de code Unicode non valides (substituts isolés) dans le contenu extrait

Maintenance

  • Mise à jour de la contrainte mistralai, de <2.7 à <2.9.
  • Mise à jour de pypdf, de 6.13.3 à 6.14.2.
0.0.10

0.0.10

Améliorations

  • Ajout de la prise en charge de l’API batch d’embeddings pour l’ingestion : MistralEmbedder.run_batch_embedding_job() peut être utilisé pour réduire les coûts d’embedding sur les tâches d’ingestion volumineuses.
  • Ajout du découpage en fragments tenant compte des en-têtes pour l’ingestion : nouveaux splitters ParagraphTokenTextSplitter et MarkdownTokenTextSplitter.

Corrections de bugs

  • Correction de TokenTextSplitter, qui signalait des offsets incorrects pour le contenu répété.

Maintenance

  • Assouplissement de la contrainte mistralai du toolkit à >=2.5.0,<2.7.
0.0.9

0.0.9

Modifications incompatibles

modèle de document

Search Toolkit utilise désormais un modèle de document unifié construit autour de Document et DocumentChunk, avec une identité déterministe dérivée d’un source_id et d’un locator. Consultez la page Modèle de document pour plus de détails.

  • Les extracteurs produisent désormais des objets DocumentChunk directement ; la représentation séparée de page a été supprimée.
  • Les identifiants Document.id et DocumentChunk.id sont désormais calculés de manière déterministe à partir de source_id (et de locator pour les fragments), ce qui rend l’indexation idempotente. Le champ id explicite sur File et document_id sur DocumentChunk ont été supprimés.
  • Ajout de source_id, locator, parent_ref et chunk_type en tant que champs de première classe, ainsi que des modèles de métadonnées typés et extensibles. Le même contrat d’identité est reproduit sur SearchResultChunk.

modèle d’indexation Vespa

Vespa indexe désormais un fragment par document via le nouveau mode d’indexation DOCUMENT_PER_CHUNK, qui devient le modèle recommandé. L’ancien modèle à document unique est obsolète.

  • Ajout du mode d’indexation DOCUMENT_PER_CHUNK, y compris les champs par défaut, les profils de classement et les chemins complets d’écriture, de suppression et de recherche.
  • Ajout d’un IndexingMode à la définition du schéma, avec des mécanismes d’obsolescence pour migrer les schémas existants.
  • L’API d’indexation est divisée en une base VespaSearchIndex et un SingleDocumentSearchIndex dédié ; le modèle à document unique est obsolète au profit de DOCUMENT_PER_CHUNK.
  • Le champ id_field du schéma est obsolète et n’est plus autorisé pour les index DOCUMENT_PER_CHUNK.

Autre

  • Le module indices a été renommé en search. Mettez à jour les imports en conséquence.

Améliorations

  • Ajout des implémentations FileLoader de stockage blob pour S3, Azure et GCS, ainsi qu’un extra storage-s3.
  • Ajout d’un plugin language-detection-fasttext.
  • Ajout des littéraux et constantes de modèle OCR.
  • Vespa : extraction d’un VespaClient dédié avec une meilleure gestion des erreurs.
  • Vespa : ajout d’une définition de services indépendante du backend, de la topologie v2 et d’un traducteur, avec génération automatique de topologie v2 pour les déploiements Docker à nœud unique.
  • Vespa : ajout des workflows de copie Vespa-à-Vespa et de migration index-vers-streaming.
  • Vespa : émission d’un consommateur de métriques dans services.xml.
  • Vespa : avertissement lorsqu’un classement de type rank2 est configuré sans rank1, et lorsque les poids de classement sont par défaut à 0.

Sécurité

  • Mise à jour de langchain-core vers ~=1.4.

Corrections de bugs

  • Vespa : classement par similarité cosinus au lieu de distance euclidienne.
  • Vespa : correction de la récupération du compte de documents.
  • Vespa : propagation de distribute_across_groups dans load_topology_file.
  • CLI Vespa : importation différée des modèles SDK d’enregistrement d’index.
  • Traitement des réponses LLM tronquées comme réessayables et enrichissement de LLMException et SummaryGenerationError pour le journalisation structurée.
  • Extracteur OCR : utilisation des métadonnées de type MIME pour la détection du type de fichier.
  • Ajout des types MIME text/x-file et text/x-script.python au registre.
0.0.8

0.0.8

Première version de Search Toolkit en tant qu’aperçu technique.