Mistral AI and Zilliz Cloud Integration
Mistral AI and Zilliz Cloud integrate to build multi-agent RAG systems with metadata filtering, combining Mistral AI's frontier LLMs and embedding models with advanced function calling capabilities alongside Zilliz Cloud's high-performance vector database for scalable similarity search and intelligent data retrieval.
Utilisez cette intégration gratuitementQu’est-ce que Mistral AI
Mistral AI est un laboratoire de recherche qui développe des LLM open source et de pointe ainsi que des modèles d’embedding de premier plan. Leurs modèles incluent Mistral Nemo, doté d’une grande fenêtre de contexte allant jusqu’à 128k tokens, Mistral Large, avec des capacités avancées de raisonnement et d’appel de fonctions, ainsi que le modèle d’embedding
mistral-embed, entraîné en pensant à la recherche d’information. Les modèles de Mistral AI se sont révélés particulièrement performants dans le RAG et l’appel de fonctions, ce qui les rend bien adaptés à la création de systèmes d’IA intelligents et agentiques.En s’intégrant à Zilliz Cloud (Milvus entièrement géré), les LLM et modèles d’embedding de Mistral AI sont associés à une base de données vectorielle évolutive, permettant aux développeurs de créer des systèmes RAG avancés avec filtrage par métadonnées, orchestration multi-agents et recherche automatisée de données — en exploitant les capacités d’appel de fonctions de Mistral pour coordonner une recherche intelligente depuis le vector store de Zilliz Cloud.
Avantages de l’intégration de Mistral AI + Zilliz Cloud
- Appel de fonction avancé pour le RAG : Les capacités natives d’appel de fonction de Mistral AI permettent aux agents de décider intelligemment quand et comment interroger le magasin vectoriel de Zilliz Cloud, permettant une récupération de données automatisée et contextuelle.
- Orchestration multi-agents : Mistral Large orchestre plusieurs services d’agents qui récupèrent et traitent les informations depuis Zilliz Cloud, permettant des requêtes complexes en plusieurs étapes sur différentes sources de données et collections de documents.
- Filtrage des métadonnées pour une récupération précise : L’intégration prend en charge le filtrage des métadonnées Milvus, permettant aux agents de générer et d’appliquer automatiquement des filtres (nom de l’entreprise, année, nom du fichier) afin de restreindre les résultats de recherche et d’éviter toute confusion dans de grands ensembles de données.
- Embedding et LLM d’un seul fournisseur : Mistral AI fournit à la fois des modèles d’embedding (
mistral-embed) et des LLM (Nemo, Large), créant un pipeline cohérent allant de la génération d’embeddings à la réponse intelligente, le tout stocké et récupéré via Zilliz Cloud.
Fonctionnement de l’intégration
Mistral AI fournit à la fois le modèle d’embedding (
mistral-embed) pour générer des représentations vectorielles et des LLM (Mistral Nemo, Mistral Large) pour le raisonnement, l’appel de fonctions et la génération de réponses. Mistral Large agit comme orchestrateur dans les systèmes multi-agents, en coordonnant les appels d’outils et les services d’agents grâce à ses capacités avancées d’appel de fonctions.Zilliz Cloud sert de couche de base de données vectorielle via le MilvusVectorStore de LlamaIndex, en stockant et en indexant les embeddings de documents pour une recherche de similarité rapide avec prise en charge du filtrage par métadonnées. Il fournit le backend de retrieval pour les services d’agents, permettant une recherche vectorielle efficace avec des filtres personnalisables.
Ensemble, Mistral AI et Zilliz Cloud créent un système RAG multi-agents intelligent : les documents sont intégrés à l’aide du modèle d’embedding de Mistral et stockés dans Zilliz Cloud avec des métadonnées. Les agents propulsés par Mistral Nemo gèrent les tâches de retrieval individuelles avec filtrage par métadonnées, tandis que Mistral Large orchestre le flux de travail global — en coordonnant plusieurs agents, en extrayant les filtres de métadonnées des requêtes utilisateur et en générant des réponses précises à partir d’un contexte récupéré avec précision.
Guide étape par étape
1. Installer les dépendances
$ pip install llama-agents pymilvus openai python-dotenv $ pip install llama-index-vector-stores-milvus llama-index-readers-file llama-index-llms-ollama llama-index-llms-mistralai llama-index-embeddings-mistralai2. Configurer la clé API et le modèle d’embedding
Obtenez votre clé API Mistral depuis la Mistral Cloud Console et définissez le modèle d’embedding :
from dotenv import load_dotenv import os load_dotenv() from llama_index.core import Settings from llama_index.embeddings.mistralai import MistralAIEmbedding Settings.embed_model = MistralAIEmbedding(model_name="mistral-embed")3. Configurer le LLM et charger les données dans Milvus
Définissez le LLM, téléchargez les données et créez un index de magasin vectoriel :
from llama_index.llms.ollama import Ollama Settings.llm = Ollama("mistral-nemo")$ mkdir -p 'data/10k/' $ wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/uber_2021.pdf' -O 'data/10k/uber_2021.pdf' $ wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/lyft_2021.pdf' -O 'data/10k/lyft_2021.pdf'from llama_index.vector_stores.milvus import MilvusVectorStore from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, StorageContext input_files = ["./data/10k/lyft_2021.pdf", "./data/10k/uber_2021.pdf"] vector_store = MilvusVectorStore( uri="./milvus_demo.db", dim=1024, overwrite=False, collection_name="companies_docs" ) storage_context = StorageContext.from_defaults(vector_store=vector_store) docs = SimpleDirectoryReader(input_files=input_files).load_data() index = VectorStoreIndex.from_documents(docs, storage_context=storage_context)Définir le
uricomme un fichier local, par exemple./milvus.db, est la méthode la plus pratique, car elle utilise automatiquement Milvus Lite. Si vous disposez d’un grand volume de données, vous pouvez configurer un serveur Milvus plus performant sur Docker ou Kubernetes. Si vous souhaitez utiliser Zilliz Cloud, le service cloud entièrement géré pour Milvus, ajustez leuriet letoken, qui correspondent au Public Endpoint et à l’API Key dans Zilliz Cloud.4. Définir les outils et interroger avec l’appel de fonctions
Définissez les outils de moteur de requête et utilisez le
predict_and_callde Mistral pour l’appel de fonctions :from llama_index.core.tools import QueryEngineTool, ToolMetadata company_engine = index.as_query_engine(similarity_top_k=3) query_engine_tools = [ QueryEngineTool( query_engine=company_engine, metadata=ToolMetadata( name="lyft_10k", description="Provides information about Lyft financials for year 2021.", ), ), QueryEngineTool( query_engine=company_engine, metadata=ToolMetadata( name="uber_10k", description="Provides information about Uber financials for year 2021.", ), ), ] llm = Ollama(model="mistral-nemo") response = llm.predict_and_call( query_engine_tools, user_msg="Could you please provide a comparison between Lyft and Uber's total revenues in 2021?", allow_parallel_tool_calls=True, ) print(response)5. Appliquer le filtrage des métadonnées
Utilisez le filtrage des métadonnées Milvus pour créer un moteur de requête filtré :
from llama_index.core.vector_stores import ExactMatchFilter, MetadataFilters filters = MetadataFilters( filters=[ExactMatchFilter(key="file_name", value="lyft_2021.pdf")] ) filtered_query_engine = index.as_query_engine(filters=filters)6. Orchestrer un système multi-agents avec Mistral Large
Utilisez Mistral Large pour orchestrer plusieurs services d’agents avec llama-agents :
from llama_agents import ( AgentService, ToolService, LocalLauncher, MetaServiceTool, ControlPlaneServer, SimpleMessageQueue, AgentOrchestrator, ) from llama_index.core.agent import FunctionCallingAgentWorker from llama_index.llms.mistralai import MistralAI message_queue = SimpleMessageQueue() control_plane = ControlPlaneServer( message_queue=message_queue, orchestrator=AgentOrchestrator(llm=MistralAI("mistral-large-latest")), ) tool_service = ToolService( message_queue=message_queue, tools=query_engine_tools, running=True, step_interval=0.5, ) meta_tools = [ await MetaServiceTool.from_tool_service( t.metadata.name, message_queue=message_queue, tool_service=tool_service, ) for t in query_engine_tools ] worker1 = FunctionCallingAgentWorker.from_tools( meta_tools, llm=MistralAI("mistral-large-latest") ) agent1 = worker1.as_agent() agent_server_1 = AgentService( agent=agent1, message_queue=message_queue, description="Utilisé pour répondre à des questions sur différentes entreprises concernant leurs résultats financiers", service_name="Companies_analyst_agent", ) launcher = LocalLauncher( [agent_server_1, tool_service], control_plane, message_queue, ) query_str = "Quels sont les facteurs de risque pour Uber ?" result = launcher.launch_single(query_str) print(result)En savoir plus
- Systèmes multi-agents avec Mistral AI, Milvus et Llama-agents — Tutoriel officiel de Milvus pour les systèmes multi-agents avec Mistral AI
- Créer un chatbot RAG avec LangChain, Milvus et Mistral AI — Tutoriel RAG de Zilliz avec Mistral AI
- Documentation de Mistral AI — Documentation officielle de Mistral AI
- Embeddings Mistral AI — Documentation du modèle d’embedding de Mistral AI
- Function Calling de Mistral AI — Documentation du function calling de Mistral AI


