Recherche
La recherche identifie les fragments pertinents pour une requête utilisateur donnée. Le Search Toolkit prend en charge les stratégies de recherche vectorielle (sémantique), par mot-clé (BM25), et hybride. Elles peuvent être combinées pour de meilleurs résultats.
Un préprocesseur de requête (optionnel) transforme la requête brute avant la recherche — il peut la réécrire pour plus de clarté ou la décliner en plusieurs variantes.
Un ou plusieurs Retrievers exécutent la recherche sur l'index. Ils peuvent fonctionner en parallèle et leurs résultats sont fusionnés.
Un Reranker optionnel réévalue les résultats fusionnés avec une méthode de scoring plus précise — LLM, cross-encoder ou fusion de rangs entre plusieurs ensembles de résultats.
Moteur de requête
QueryEngine orchestre le pipeline de recherche. Il accepte un ou plusieurs retrievers, un prétraitement de requête optionnel et des rerankers optionnels :
from mistralai.search.toolkit.retrieval import QueryEngine
from mistralai.search.toolkit.retrieval.retrievers import VectorRetriever
from mistralai.search.toolkit.retrieval.rerankers import LLMReRanker
from mistralai.search.toolkit.retrieval.pre_processors import LLMQueryRewriter
query_engine = QueryEngine(
retriever=vector_retriever, # Accepte aussi une liste de retrievers
query_rewriter=query_rewriter, # Optionnel
rerankers=[llm_reranker], # Optionnel, prend en charge ReRanker et GroupedRanker
)
result = await query_engine.search(
query="What is RAG?",
top_k=10,
include_metadata=True,
include_content=True,
)
print(f"Original query: {result.original_query}")
print(f"Results: {len(result.results)}")Composants
Chaque composant du pipeline de recherche est documenté en détail avec exemples et bonnes pratiques :
- Retrievers — VectorRetriever, KeywordRetriever et patterns hybrides
- Rerankers — LLMReRanker, CrossEncoderReRanker, fusion RRF et rerankers personnalisés
- Prétraitement des requêtes — Réécriture et expansion des requêtes pour améliorer la qualité de la recherche
- Cache sémantique — Mise en cache des résultats par similarité de requête pour réduire la latence