Recherche
La recherche identifie les fragments pertinents pour une requête utilisateur donnée. Search Toolkit prend en charge les stratégies de recherche vectorielle (sémantique), par mots-clés (BM25) et hybrides, que vous pouvez combiner.
Une réécriture de requêtes optionnelle transforme la requête brute avant la recherche. Une extension de requêtes optionnelle génère des sous-requêtes et les renvoie avec le résultat ; elle ne les recherche pas.
Un ou plusieurs Récupérateurs exécutent la recherche dans l’index. Ils peuvent s’exécuter en parallèle et leurs résultats sont fusionnés par un merge.
Un Reclasseur optionnel recalcule les scores des résultats fusionnés à l’aide d’une stratégie de notation plus précise : un LLM, un cross-encoder ou une fusion de classements sur plusieurs ensembles de résultats.
Moteur de requête
QueryEngine orchestre le pipeline de recherche. Il accepte un ou plusieurs récupérateurs, un prétraitement de requête optionnel et des reclasseurs 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, # Also accepts a list of retrievers
query_rewriter=query_rewriter, # Optional
rerankers=[llm_reranker], # Optional, supports ReRanker and 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)}")