Dynamiq and Zilliz Cloud Integration
Dynamiq and Zilliz Cloud integrate to power fast, secure, and context-aware AI agents, combining Dynamiq's enterprise agentic AI platform with visual workflow builder and Python SDK alongside Zilliz Cloud's high-performance vector storage for scalable RAG retrieval.
Utilisez cette intégration gratuitementQu’est-ce que Dynamiq
Dynamiq est la plateforme d’exploitation d’entreprise pour l’IA agentique. Elle permet aux équipes de créer, coordonner et déployer des agents IA et des workflows RAG de niveau production sans intégrer plusieurs outils distincts. Elle propose à la fois un constructeur visuel par glisser-déposer et un SDK Python open source, offrant aux développeurs et aux utilisateurs métier la flexibilité nécessaire pour faire évoluer des applications agentiques dans des environnements SaaS, cloud privé ou entièrement isolés.
En s’intégrant à Zilliz Cloud (Milvus entièrement géré), Dynamiq accède à un stockage et une récupération vectoriels hautes performances qui alimentent ses workflows RAG agentiques, combinant l’infrastructure vectorielle évolutive de Zilliz avec la couche d’orchestration de Dynamiq afin de permettre à des agents réactifs et sensibles au contexte d’opérer sur les bases de connaissances de l’entreprise.
Avantages de l’intégration Dynamiq + Zilliz Cloud
- Workflows RAG agentiques évolutifs : la couche d’orchestration de Dynamiq combinée au stockage vectoriel haute performance de Zilliz Cloud permet de créer des agents IA de niveau production capables de récupérer du contexte à partir de bases de connaissances d’entreprise à grande échelle en temps réel.
- Double flexibilité de création : les équipes peuvent créer des workflows RAG à l’aide du générateur visuel par glisser-déposer de Dynamiq ou du SDK Python open-source, Zilliz Cloud gérant le stockage vectoriel de manière transparente dans les deux approches.
- Déploiement d’entreprise sécurisé : l’intégration prend en charge les environnements SaaS, cloud privé et entièrement isolés, avec une observabilité complète et des garde-fous autour des appels LLM et de l’utilisation vectorielle.
- Indexation et récupération efficaces des documents : le Writer Node de Dynamiq ingère et indexe les documents dans Zilliz Cloud, tandis que le Retriever Node connecte les agents aux bases de connaissances propulsées par Milvus pour une récupération du contexte en temps réel.
Fonctionnement de l’intégration
Dynamiq sert de plateforme d’orchestration, fournissant le framework d’IA agentique avec un constructeur visuel de workflows, un SDK Python et des capacités d’agent LLM. Elle gère le traitement des documents, l’orchestration des workflows, la gestion des prompts et la génération de réponses grâce à son architecture modulaire basée sur des nœuds.
Zilliz Cloud sert de couche de base de données vectorielle, stockant et indexant les embeddings de documents via le nœud MilvusDocumentWriter de Dynamiq et fournissant une recherche de similarité rapide via le nœud MilvusDocumentRetriever. Elle permet une récupération efficace du contexte pertinent à partir de grandes bases de connaissances.
Ensemble, Dynamiq et Zilliz Cloud créent une solution RAG agentique de bout en bout : les documents sont traités, intégrés et stockés dans Zilliz Cloud via le workflow d’indexation de Dynamiq. Lorsque les utilisateurs interagissent avec des agents IA, le workflow de récupération de Dynamiq interroge Zilliz Cloud pour obtenir les embeddings de documents pertinents et transmet le contexte au LLM afin de générer des réponses détaillées et sensibles au contexte — le tout sans code personnalisé ni configuration d’infrastructure.
Guide étape par étape
1. Installer les bibliothèques requises
$ pip install dynamiq pymilvus2. Configurer l’agent LLM
Nous utiliserons OpenAI comme LLM dans cet exemple. Préparez la clé API comme variable d’environnement :
import os os.environ["OPENAI_API_KEY"] = "sk-***********"3. Flux d’indexation des documents — Importer les bibliothèques et initialiser le workflow
from io import BytesIO from dynamiq import Workflow from dynamiq.nodes import InputTransformer from dynamiq.connections import ( OpenAI as OpenAIConnection, Milvus as MilvusConnection, MilvusDeploymentType, ) from dynamiq.nodes.converters import PyPDFConverter from dynamiq.nodes.splitters.document import DocumentSplitter from dynamiq.nodes.embedders import OpenAIDocumentEmbedder from dynamiq.nodes.writers import MilvusDocumentWriter # Initialize the workflow rag_wf = Workflow()4. Définir les nœuds du pipeline d’indexation
Définissez le convertisseur PDF, le découpeur de documents, l’embedding et les nœuds de stockage vectoriel Milvus :
# PDF Converter converter = PyPDFConverter(document_creation_mode="one-doc-per-page") converter_added = rag_wf.flow.add_nodes(converter) # Document Splitter document_splitter = DocumentSplitter( split_by="sentence", split_length=10, split_overlap=1, input_transformer=InputTransformer( selector={ "documents": f"${[converter.id]}.output.documents", }, ), ).depends_on(converter) splitter_added = rag_wf.flow.add_nodes(document_splitter) # Embedding Node embedder = OpenAIDocumentEmbedder( connection=OpenAIConnection(api_key=os.environ["OPENAI_API_KEY"]), input_transformer=InputTransformer( selector={ "documents": f"${[document_splitter.id]}.output.documents", }, ), ).depends_on(document_splitter) document_embedder_added = rag_wf.flow.add_nodes(embedder) # Milvus Vector Store vector_store = ( MilvusDocumentWriter( connection=MilvusConnection( deployment_type=MilvusDeploymentType.FILE, uri="./milvus.db" ), index_name="my_milvus_collection", dimension=1536, create_if_not_exist=True, metric_type="COSINE", ) .inputs(documents=embedder.outputs.documents) .depends_on(embedder) ) milvus_writer_added = rag_wf.flow.add_nodes(vector_store)Milvus propose deux types de déploiement : MilvusDeploymentType.FILE est idéal pour le prototypage local ou le stockage de données à petite échelle, en définissant le
urisur un chemin de fichier local (par exemple,./milvus.db) afin d’exploiter Milvus Lite. MilvusDeploymentType.HOST est conçu pour les scénarios de données à grande échelle. Vous pouvez déployer un serveur Milvus à l’aide de Docker ou Kubernetes, ou utiliser Zilliz Cloud en définissant leuriet letokensur le point de terminaison public et la clé API dans Zilliz Cloud.5. Exécuter le workflow d’indexation
file_paths = ["./pdf_files/WhatisMilvus.pdf"] input_data = { "files": [BytesIO(open(path, "rb").read()) for path in file_paths], "metadata": [{"filename": path} for path in file_paths], } inserted_data = rag_wf.run(input_data=input_data)6. Flux de récupération de documents — Initialiser et définir les nœuds
from dynamiq import Workflow from dynamiq.connections import ( OpenAI as OpenAIConnection, Milvus as MilvusConnection, MilvusDeploymentType, ) from dynamiq.nodes.embedders import OpenAITextEmbedder from dynamiq.nodes.retrievers import MilvusDocumentRetriever from dynamiq.nodes.llms import OpenAI from dynamiq.prompts import Message, Prompt # Initialize the workflow retrieval_wf = Workflow() # OpenAI connection and text embedder openai_connection = OpenAIConnection(api_key=os.environ["OPENAI_API_KEY"]) embedder = OpenAITextEmbedder( connection=openai_connection, model="text-embedding-3-small", ) embedder_added = retrieval_wf.flow.add_nodes(embedder) # Récupérateur de documents Milvus document_retriever = ( MilvusDocumentRetriever( connection=MilvusConnection( deployment_type=MilvusDeploymentType.FILE, uri="./milvus.db" ), index_name="my_milvus_collection", dimension=1536, top_k=5, ) .inputs(embedding=embedder.outputs.embedding) .depends_on(embedder) ) milvus_retriever_added = retrieval_wf.flow.add_nodes(document_retriever)7. Définir le prompt et le générateur de réponses
prompt_template = """ Please answer the question based on the provided context. Question: {{ query }} Context: {% for document in documents %} - {{ document.content }} {% endfor %} """ prompt = Prompt(messages=[Message(content=prompt_template, role="user")]) answer_generator = ( OpenAI( connection=openai_connection, model="gpt-4o", prompt=prompt, ) .inputs( documents=document_retriever.outputs.documents, query=embedder.outputs.query, ) .depends_on([document_retriever, embedder]) ) answer_generator_added = retrieval_wf.flow.add_nodes(answer_generator)8. Exécuter le workflow de récupération
sample_query = "What is the Advanced Search Algorithms in Milvus?" result = retrieval_wf.run(input_data={"query": sample_query}) answer = result.output.get(answer_generator.id).get("output", {}).get("content") print(answer)En savoir plus
- Premiers pas avec Dynamiq et Milvus — Tutoriel officiel de Milvus pour créer un RAG avec Dynamiq
- Documentation Dynamiq — Documentation officielle de Dynamiq
- Dépôt GitHub Dynamiq — SDK open-source Dynamiq
- Documentation Zilliz Cloud — Documentation Zilliz Cloud pour Milvus géré
- Créer des applications d’IA avec Milvus : tutoriels et notebooks — Collection Zilliz de tutoriels et de notebooks Milvus


