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.
Используйте эту интеграцию бесплатноЧто такое Dynamiq
Dynamiq — это корпоративная операционная платформа для агентного ИИ. Она позволяет командам создавать, координировать и внедрять ИИ-агентов промышленного уровня и рабочие процессы RAG без интеграции множества отдельных инструментов. Она предлагает как визуальный конструктор с функцией перетаскивания, так и Python SDK с открытым исходным кодом, предоставляя разработчикам и бизнес-пользователям гибкость для масштабирования агентных приложений в SaaS, частном облаке или полностью изолированных средах.
Интегрируясь с Zilliz Cloud (полностью управляемым Milvus), Dynamiq получает доступ к высокопроизводительному векторному хранению и поиску, которые обеспечивают работу его агентных RAG-процессов, объединяя масштабируемую векторную инфраструктуру Zilliz с оркестрационным уровнем Dynamiq для создания отзывчивых, контекстно-осведомленных агентов, работающих с корпоративными базами знаний.
Преимущества интеграции Dynamiq + Zilliz Cloud
- Масштабируемые агентные рабочие процессы RAG: Оркестрационный слой Dynamiq в сочетании с высокопроизводительным векторным хранилищем Zilliz Cloud позволяет создавать AI-агентов производственного уровня, которые могут извлекать контекст из крупномасштабных корпоративных баз знаний в режиме реального времени.
- Гибкость двух способов создания: Команды могут создавать рабочие процессы RAG с помощью визуального конструктора Dynamiq с функцией drag-and-drop или open-source Python SDK, при этом Zilliz Cloud бесшовно обрабатывает векторное хранилище в любом из подходов.
- Безопасное корпоративное развертывание: Интеграция поддерживает SaaS, private cloud и полностью изолированные среды air-gapped, с полной наблюдаемостью и защитными механизмами для вызовов LLM и использования векторов.
- Эффективная индексация и извлечение документов: Writer Node от Dynamiq загружает и индексирует документы в Zilliz Cloud, а Retriever Node подключает агентов к базам знаний на базе Milvus для извлечения контекста в реальном времени.
Как работает интеграция
Dynamiq выступает в качестве платформы оркестрации, предоставляя agentic AI-фреймворк с визуальным конструктором рабочих процессов, Python SDK и возможностями LLM-агентов. Он обрабатывает документы, оркестрацию рабочих процессов, управление промптами и генерацию ответов благодаря своей модульной архитектуре на основе узлов.
Zilliz Cloud выступает в качестве слоя векторной базы данных, храня и индексируя эмбеддинги документов через узел MilvusDocumentWriter в Dynamiq и обеспечивая быстрый поиск по сходству через узел MilvusDocumentRetriever. Он позволяет эффективно извлекать релевантный контекст из крупных баз знаний.
Вместе Dynamiq и Zilliz Cloud создают сквозное agentic RAG-решение: документы обрабатываются, преобразуются в эмбеддинги и сохраняются в Zilliz Cloud через workflow индексации Dynamiq. Когда пользователи взаимодействуют с AI-агентами, workflow извлечения Dynamiq отправляет запросы в Zilliz Cloud для получения релевантных эмбеддингов документов и передает контекст в LLM для генерации подробных, контекстно-зависимых ответов — всё это без написания пользовательского кода или настройки инфраструктуры.
Пошаговое руководство
1. Установите необходимые библиотеки
$ pip install dynamiq pymilvus2. Настройте LLM-агента
В этом примере мы будем использовать OpenAI в качестве LLM. Подготовьте API-ключ как переменную окружения:
import os os.environ["OPENAI_API_KEY"] = "sk-***********"3. Поток индексации документов — импорт библиотек и инициализация 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 # Инициализация workflow rag_wf = Workflow()4. Определите узлы конвейера индексации
Определите узлы конвертера PDF, разделителя документов, встраивания и векторного хранилища Milvus:
# Конвертер PDF converter = PyPDFConverter(document_creation_mode="one-doc-per-page") converter_added = rag_wf.flow.add_nodes(converter) # Разделитель документов 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) # Узел встраивания 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 = ( 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 предлагает два типа развертывания: MilvusDeploymentType.FILE идеально подходит для локального прототипирования или хранения данных небольшого масштаба, устанавливая
uriв локальный путь к файлу (например,./milvus.db) для использования Milvus Lite. MilvusDeploymentType.HOST предназначен для сценариев с данными большого масштаба. Вы можете развернуть сервер Milvus с помощью Docker или Kubernetes либо использовать Zilliz Cloud, установивuriиtokenв Public Endpoint и API Key в Zilliz Cloud.5. Запустите Workflow индексации
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. Поток извлечения документов — инициализация и определение узлов
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 # Инициализация workflow retrieval_wf = Workflow() # Подключение OpenAI и текстовый 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)средство извлечения документов 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. Определите промпт и генератор ответов** ```python 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. Запустите рабочий процесс извлечения
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)Узнать больше
- Начало работы с Dynamiq и Milvus — официальный учебник Milvus по созданию RAG с Dynamiq
- Документация Dynamiq — официальная документация Dynamiq
- Репозиторий Dynamiq на GitHub — open-source SDK Dynamiq
- Документация Zilliz Cloud — документация Zilliz Cloud для управляемого Milvus
- Создание AI-приложений с Milvus: учебники и ноутбуки — коллекция учебников и ноутбуков Milvus от Zilliz


