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.
Usa questa integrazione gratuitamenteChe cos'è Dynamiq
Dynamiq è la piattaforma operativa enterprise per l'IA agentica. Consente ai team di costruire, coordinare e implementare agenti IA e workflow RAG di livello production-grade senza integrare molteplici strumenti separati. Offre sia un builder visuale drag-and-drop sia un SDK Python open-source, dando a sviluppatori e utenti business la flessibilità di scalare applicazioni agentiche in ambienti SaaS, cloud privato o completamente air-gapped.
Integrandosi con Zilliz Cloud (Milvus completamente gestito), Dynamiq ottiene accesso a storage e recupero vettoriali ad alte prestazioni che alimentano i suoi workflow RAG agentici, combinando l'infrastruttura vettoriale scalabile di Zilliz con il layer di orchestrazione di Dynamiq per abilitare agenti reattivi e consapevoli del contesto che operano su knowledge base enterprise.
Vantaggi dell’integrazione Dynamiq + Zilliz Cloud
- Flussi di lavoro RAG agentici scalabili: Il livello di orchestrazione di Dynamiq combinato con l'archiviazione vettoriale ad alte prestazioni di Zilliz Cloud abilita agenti AI di livello produttivo in grado di recuperare contesto da knowledge base aziendali su larga scala in tempo reale.
- Flessibilità con doppio builder: I team possono creare flussi di lavoro RAG utilizzando il builder visuale drag-and-drop di Dynamiq oppure l'SDK Python open-source, con Zilliz Cloud che gestisce l'archiviazione vettoriale senza soluzione di continuità in entrambi gli approcci.
- Distribuzione aziendale sicura: L'integrazione supporta ambienti SaaS, private cloud e completamente air-gapped, con piena osservabilità e guardrail sulle chiamate LLM e sull'utilizzo vettoriale.
- Indicizzazione e recupero efficienti dei documenti: Il Writer Node di Dynamiq acquisisce e indicizza documenti in Zilliz Cloud, mentre il Retriever Node connette gli agenti a knowledge base basate su Milvus per il recupero del contesto in tempo reale.
Come funziona l’integrazione
Dynamiq funge da piattaforma di orchestrazione, fornendo il framework di IA agentica con visual workflow builder, Python SDK e funzionalità di agente LLM. Gestisce l'elaborazione dei documenti, l'orchestrazione dei workflow, la gestione dei prompt e la generazione delle risposte attraverso la sua architettura modulare basata su nodi.
Zilliz Cloud funge da livello di database vettoriale, archiviando e indicizzando gli embedding dei documenti tramite il nodo MilvusDocumentWriter di Dynamiq e fornendo una rapida ricerca per similarità tramite il nodo MilvusDocumentRetriever. Consente un recupero efficiente del contesto pertinente da grandi basi di conoscenza.
Insieme, Dynamiq e Zilliz Cloud creano una soluzione RAG agentica end-to-end: i documenti vengono elaborati, trasformati in embedding e archiviati in Zilliz Cloud tramite il workflow di indicizzazione di Dynamiq. Quando gli utenti interagiscono con gli agenti IA, il workflow di recupero di Dynamiq interroga Zilliz Cloud per ottenere gli embedding dei documenti pertinenti e passa il contesto all'LLM per generare risposte dettagliate e consapevoli del contesto — il tutto senza codice personalizzato né configurazione dell'infrastruttura.
Guida passo passo
1. Installa le librerie richieste
$ pip install dynamiq pymilvus2. Configura l’agente LLM
In questo esempio useremo OpenAI come LLM. Prepara la chiave API come variabile d’ambiente:
import os os.environ["OPENAI_API_KEY"] = "sk-***********"3. Flusso di indicizzazione dei documenti — Importa le librerie e inizializza il 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 # Inizializza il workflow rag_wf = Workflow()4. Definisci i nodi della pipeline di indicizzazione
Definisci il convertitore PDF, il suddivisore di documenti, l’embedding e i nodi del vector store Milvus:
# Convertitore PDF converter = PyPDFConverter(document_creation_mode="one-doc-per-page") converter_added = rag_wf.flow.add_nodes(converter) # Suddivisore di documenti 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) # Nodo di embedding 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) # Vector Store Milvus 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 offre due tipi di deployment: MilvusDeploymentType.FILE è ideale per la prototipazione locale o l’archiviazione di dati su piccola scala, impostando
urisu un percorso di file locale (ad es.,./milvus.db) per sfruttare Milvus Lite. MilvusDeploymentType.HOST è progettato per scenari di dati su larga scala. Puoi distribuire un server Milvus usando Docker o Kubernetes, oppure usare Zilliz Cloud impostandourietokensull’endpoint pubblico e sulla chiave API in Zilliz Cloud.5. Esegui il workflow di indicizzazione
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. Flusso di recupero dei documenti — Inizializza e definisci i nodi
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 # Inizializza il workflow retrieval_wf = Workflow() # Connessione OpenAI e 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) # Recuperatore di documenti 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. Definisci il prompt e il generatore di risposte
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. Esegui il flusso di lavoro di recupero
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)Scopri di più
- Introduzione a Dynamiq e Milvus — Tutorial ufficiale di Milvus per creare RAG con Dynamiq
- Documentazione di Dynamiq — Documentazione ufficiale di Dynamiq
- Repository GitHub di Dynamiq — SDK open-source di Dynamiq
- Documentazione di Zilliz Cloud — Documentazione di Zilliz Cloud per Milvus gestito
- Crea app AI con Milvus: tutorial e notebook — Raccolta Zilliz di tutorial e notebook su Milvus


