Gemini 3 Pro + Milvus: создание более надежного RAG с расширенными возможностями рассуждений и мультимодального управления
Релиз Gemini 3 Pro от Google - это тот редкий случай, когда ожидания разработчиков действительно меняются: не просто шумиха, а возможности, которые существенно расширяют возможности естественно-языковых интерфейсов. Он превращает "опишите приложение, которое вы хотите" в исполняемый рабочий процесс: динамическая маршрутизация инструментов, многоэтапное планирование, оркестровка API и интерактивная генерация UX - все эти функции бесшовно сшиты вместе. Это самая близкая модель к тому, чтобы сделать vibe-кодинг жизнеспособным на производстве.
И цифры подтверждают сказанное. Gemini 3 Pro демонстрирует выдающиеся результаты практически по всем основным показателям:
Последний экзамен человечества: 37,5% без инструментов, 45,8% с инструментами - ближайший конкурент находится на уровне 26,5%.
MathArena Apex: 23,4 %, в то время как большинство моделей не преодолевают отметку в 2 %.
ScreenSpot-Pro: 72,7 % точности, почти вдвое выше, чем у ближайшего конкурента - 36,2 %.
Vending-Bench 2: средняя чистая стоимость $5 478,16, что примерно на 1,4 больше, чем у второго места.
Другие результаты бенчмарков приведены в таблице ниже.
Сочетание глубоких рассуждений, активного использования инструментов и мультимодальной беглости делает Gemini 3 Pro естественным инструментом для генерации с расширенным поиском (RAG). В паре с Milvus, высокопроизводительной векторной базой данных с открытым исходным кодом, созданной для семантического поиска миллиардного масштаба, вы получаете поисковый слой, который обосновывает ответы, чисто масштабируется и остается надежным в производстве даже при больших нагрузках.
В этом посте мы расскажем о том, что нового появилось в Gemini 3 Pro, почему он повышает эффективность рабочих процессов RAG и как построить чистый и эффективный конвейер RAG, используя Milvus в качестве основы для поиска.
Основные обновления в Gemini 3 Pro
Gemini 3 Pro представляет ряд существенных обновлений, которые меняют способы обоснования, создания, выполнения задач и взаимодействия с пользователями. Эти улучшения делятся на четыре основные области возможностей:
Мультимодальное понимание и рассуждения
Gemini 3 Pro устанавливает новые рекорды в важных мультимодальных тестах, включая ARC-AGI-2 для визуальных рассуждений, MMMU-Pro для кросс-модального понимания и Video-MMMU для понимания видео и получения знаний. Модель также представляет Deep Think, расширенный режим рассуждений, который позволяет выполнять структурированную, многоступенчатую логическую обработку. Это позволяет значительно повысить точность решения сложных задач, в которых традиционные модели цепочки мыслей обычно не справляются.
Генерация кода
Модель выводит генеративное кодирование на новый уровень. Gemini 3 Pro может создавать интерактивные SVG, полноценные веб-приложения, 3D-сцены и даже функциональные игры, включая Minecraft-подобные среды и браузерный бильярд - и все это из одного запроса на естественном языке. Особенно выигрывает фронтальная разработка: модель может воссоздать существующие дизайны пользовательского интерфейса с высокой точностью или перевести скриншот непосредственно в готовый к производству код, что значительно ускоряет итеративную работу над пользовательским интерфейсом.
Агенты ИИ и использование инструментов
С разрешения пользователя Gemini 3 Pro может получать доступ к данным с его устройства Google для выполнения долгосрочных и многоэтапных задач, таких как планирование поездок или бронирование автомобилей напрокат. Эта агентская способность отражена в высоких результатах Vending-Bench 2, бенчмарка, специально разработанного для стресс-тестирования использования инструментов с большим горизонтом. Модель также поддерживает рабочие процессы агентов профессионального уровня, включая выполнение команд терминала и взаимодействие с внешними инструментами через четко определенные API.
Генеративный пользовательский интерфейс
Gemini 3 Pro выходит за рамки традиционной модели "один вопрос - один ответ" и представляет генеративный пользовательский интерфейс, в котором модель может динамически создавать целые интерактивные впечатления. Вместо того чтобы возвращать статичный текст, она может генерировать полностью настраиваемые интерфейсы - например, богатый, настраиваемый планировщик путешествий - непосредственно в ответ на инструкции пользователя. Таким образом, LLM превращаются из пассивных респондентов в активных генераторов интерфейсов.
Испытания Gemini 3 Pro
Помимо эталонных результатов, мы провели серию практических тестов, чтобы понять, как Gemini 3 Pro ведет себя в реальных рабочих процессах. Результаты показывают, как его мультимодальное понимание, генеративные возможности и долгосрочное планирование превращаются в практическую ценность для разработчиков.
Мультимодальное понимание
Gemini 3 Pro демонстрирует впечатляющую универсальность при работе с текстом, изображениями, видео и кодом. В нашем тесте мы загрузили видеоролик Zilliz прямо с YouTube. Модель обработала весь ролик - включая повествование, переходы и экранный текст - примерно за 40 секунд, что необычайно быстро для мультимодального контента большой формы.
Внутренние оценки Google показывают аналогичное поведение: Gemini 3 Pro обрабатывал рукописные рецепты на нескольких языках, транскрибировал и переводил каждый из них, а затем компилировал их в семейную книгу рецептов, которой можно поделиться.
Задачи с нулевым результатом
Gemini 3 Pro может генерировать полностью интерактивные веб-интерфейсы без предварительных примеров и подмостков. Когда Gemini 3 Pro попросили создать полированную ретрофутуристическую 3D-игру про космический корабль, модель создала полную интерактивную сцену: неоново-фиолетовая сетка, корабли в стиле киберпанк, эффекты светящихся частиц и плавное управление камерой - и все это за один нулевой кадр.
Планирование сложных задач
Модель также демонстрирует более эффективное долгосрочное планирование задач, чем многие ее аналоги. В нашем тесте на организацию входящих сообщений Gemini 3 Pro вела себя как административный помощник с искусственным интеллектом: распределяла беспорядочные письма по группам проектов, составляла предложения к действию (ответ, продолжение, архив) и представляла чистую, структурированную сводку. Если в модели был заложен план, то все входящие письма можно было очистить одним щелчком подтверждения.
Как построить систему RAG с помощью Gemini 3 Pro и Milvus
Усовершенствованная система рассуждений Gemini 3 Pro, мультимодальное понимание и широкие возможности использования инструментов делают ее отличной основой для высокопроизводительных систем RAG.
В паре с Milvus, высокопроизводительной векторной базой данных с открытым исходным кодом, созданной для крупномасштабного семантического поиска, вы получаете четкое разделение обязанностей: Gemini 3 Pro занимается интерпретацией, рассуждениями и генерацией, а Milvus обеспечивает быстрый, масштабируемый уровень поиска, который поддерживает ответы на основе корпоративных данных. Эта пара хорошо подходит для производственных приложений, таких как внутренние базы знаний, помощники по работе с документами, вспомогательные системы поддержки клиентов и экспертные системы для конкретных областей.
Предварительные условия
Перед созданием конвейера RAG убедитесь, что эти основные библиотеки Python установлены или обновлены до последних версий:
pymilvus - официальный Milvus Python SDK
google-generativeai - клиентская библиотека Gemini 3 Pro
requests - для обработки HTTP-вызовов, где это необходимо
tqdm - для отображения прогресс-баров во время приема наборов данных.
! pip install --upgrade pymilvus google-generativeai requests tqdm
Далее войдите в Google AI Studio, чтобы получить ключ API.
import os
os.environ["GEMINI_API_KEY"] = "**********"
Подготовка набора данных
В этом руководстве мы будем использовать раздел FAQ из документации Milvus 2.4.x в качестве частной базы знаний для нашей системы RAG.
Скачайте архив документации и распакуйте его в папку с именем milvus_docs.
! wget https://github.com/milvus-io/milvus-docs/releases/download/v2.4.6-preview/milvus_docs_2.4.x_en.zip
! unzip -q milvus_docs_2.4.x_en.zip -d milvus_docs
Загрузите все файлы Markdown по пути milvus_docs/en/faq. Для каждого документа мы применяем простое разбиение на основе заголовков # для грубого разделения основных разделов в каждом файле Markdown.
from glob import glob
text_lines = []
for file_path in glob("milvus_docs/en/faq/*.md", recursive=True):
with open(file_path, "r") as file:
file_text = file.read()
text_lines += file_text.split("# ")
Настройка LLM и модели встраивания
В этом руководстве мы будем использовать gemini-3-pro-preview в качестве LLM и text-embedding-004 в качестве модели встраивания.
import google.generativeai as genai
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
gemini_model = genai.GenerativeModel("gemini-3-pro-preview")
response = gemini_model.generate_content("who are you")
print(response.text)
Ответ модели: Я - Gemini, большая языковая модель, созданная Google.
Вы можете провести быструю проверку, сгенерировав тестовый эмбеддинг и выведя его размерность вместе с первыми несколькими значениями:
test_embeddings = genai.embed_content(
model="models/text-embedding-004", content=["This is a test1", "This is a test2"]
)["embedding"]
embedding_dim = len(test_embeddings[0])
print(embedding_dim)
print(test_embeddings[0][:10])
Выход тестового вектора:
768
[0.013588584, -0.004361838, -0.08481652, -0.039724775, 0.04723794, -0.0051557426, 0.026071774, 0.045514572, -0.016867816, 0.039378334]
Загрузка данных в Milvus
Создание коллекции
from pymilvus import MilvusClient
milvus_client = MilvusClient(uri="./milvus_demo.db")
collection_name = "my_rag_collection"
При создании коллекции MilvusClient вы можете выбрать один из трех вариантов конфигурации, в зависимости от масштаба и окружения:
Локальный режим (Milvus Lite): Установите URI на путь к локальному файлу (например,
./milvus.db). Это самый простой способ начать работу - Milvus Lite будет автоматически сохранять все данные в этом файле.Самостоятельное размещение Milvus (Docker или Kubernetes): Для больших наборов данных или производственных рабочих нагрузок запустите Milvus на Docker или Kubernetes. Установите URI на конечную точку вашего сервера Milvus, например
http://localhost:19530.Zilliz Cloud (полностью управляемый сервис Milvus): Если вы предпочитаете управляемое решение, используйте Zilliz Cloud. Установите URI на вашу публичную конечную точку и укажите свой ключ API в качестве маркера аутентификации.
Перед созданием новой коллекции сначала проверьте, существует ли она уже. Если она существует, удалите ее и создайте заново, чтобы обеспечить чистую настройку.
if milvus_client.has_collection(collection_name):
milvus_client.drop_collection(collection_name)
Создайте новую коллекцию с указанными параметрами.
Если схема не указана, Milvus автоматически генерирует поле ID по умолчанию в качестве первичного ключа и векторное поле для хранения вкраплений. Он также предоставляет зарезервированное динамическое поле JSON, в котором хранятся любые дополнительные поля, не определенные в схеме.
milvus_client.create_collection(
collection_name=collection_name,
dimension=embedding_dim,
metric_type="COSINE",
consistency_level="Strong", # Strong consistency level
)
Вставка данных
Пройдитесь по каждой текстовой записи, сгенерируйте ее вектор встраивания и вставьте данные в Milvus. В этом примере мы включили дополнительное поле text. Поскольку оно не предопределено в схеме, Milvus автоматически сохраняет его с помощью динамического JSON-поля под капотом - никаких дополнительных настроек не требуется.
from tqdm import tqdm
data = []
doc_embeddings = genai.embed_content(
model="models/text-embedding-004", content=text_lines
)["embedding"]
for i, line in enumerate(tqdm(text_lines, desc="Creating embeddings")):
data.append({"id": i, "vector": doc_embeddings[i], "text": line})
milvus_client.insert(collection_name=collection_name, data=data)
Пример вывода:
Creating embeddings: 100%|█████████████████████████| 72/72 [00:00<00:00, 431414.13it/s]
{'insert_count': 72, 'ids': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71], 'cost': 0}
Построение рабочего процесса RAG
Получение релевантных данных
Чтобы протестировать извлечение данных, мы зададим распространенный вопрос о Milvus.
question = "How is data stored in milvus?"
Выполните поиск в коллекции по этому запросу и верните 3 наиболее релевантных результата.
question_embedding = genai.embed_content(
model="models/text-embedding-004", content=question
)["embedding"]
search_res = milvus_client.search(
collection_name=collection_name,
data=[question_embedding],
limit=3, # Return top 3 results
search_params={"metric_type": "COSINE", "params": {}}, # Inner product distance
output_fields=["text"], # Return the text field
)
import json
retrieved_lines_with_distances = [
(res["entity"]["text"], res["distance"]) for res in search_res[0]
]
print(json.dumps(retrieved_lines_with_distances, indent=4))
Результаты возвращаются в порядке сходства, от наиболее близких к наименее похожим.
[
[
" Where does Milvus store data?\n\nMilvus deals with two types of data, inserted data and metadata. \n\nInserted data, including vector data, scalar data, and collection-specific schema, are stored in persistent storage as incremental log. Milvus supports multiple object storage backends, including [MinIO](
https://min.io/
), [AWS S3](
https://aws.amazon.com/s3/?nc1=h_ls
), [Google Cloud Storage](
https://cloud.google.com/storage?hl=en#object-storage-for-companies-of-all-sizes
) (GCS), [Azure Blob Storage](
https://azure.microsoft.com/en-us/products/storage/blobs
), [Alibaba Cloud OSS](
https://www.alibabacloud.com/product/object-storage-service
), and [Tencent Cloud Object Storage](
https://www.tencentcloud.com/products/cos
) (COS).\n\nMetadata are generated within Milvus. Each Milvus module has its own metadata that are stored in etcd.\n\n###",
0.8048489093780518
],
[
"Does the query perform in memory? What are incremental data and historical data?\n\nYes. When a query request comes, Milvus searches both incremental data and historical data by loading them into memory. Incremental data are in the growing segments, which are buffered in memory before they reach the threshold to be persisted in storage engine, while historical data are from the sealed segments that are stored in the object storage. Incremental data and historical data together constitute the whole dataset to search.\n\n###",
0.757495105266571
],
[
"What is the maximum dataset size Milvus can handle?\n\n \nTheoretically, the maximum dataset size Milvus can handle is determined by the hardware it is run on, specifically system memory and storage:\n\n- Milvus loads all specified collections and partitions into memory before running queries. Therefore, memory size determines the maximum amount of data Milvus can query.\n- When new entities and and collection-related schema (currently only MinIO is supported for data persistence) are added to Milvus, system storage determines the maximum allowable size of inserted data.\n\n###",
0.7453694343566895
]
]
Генерирование ответа RAG с помощью LLM
После получения документов преобразуйте их в строковый формат.
context = "\n".join(
[line_with_distance[0] for line_with_distance in retrieved_lines_with_distances]
)
Предоставьте LLM системный запрос и пользовательский запрос, созданные на основе документов, полученных из Milvus.
SYSTEM_PROMPT = """
Human: You are an AI assistant. You are able to find answers to the questions from the contextual passage snippets provided.
"""
USER_PROMPT = f"""
Use the following pieces of information enclosed in <context> tags to provide an answer to the question enclosed in <question> tags.
<context>
{context}
</context>
<question>
{question}
</question>
"""
Используйте модель gemini-3-pro-preview вместе с этими подсказками для создания окончательного ответа.
gemini_model = genai.GenerativeModel(
"gemini-3-pro-preview", system_instruction=SYSTEM_PROMPT
)
response = gemini_model.generate_content(USER_PROMPT)
print(response.text)
Из результатов видно, что Gemini 3 Pro создает четкий, хорошо структурированный ответ на основе полученной информации.
Based on the provided documents, Milvus stores data in the following ways:
* **Inserted Data:** Vector data, scalar data, and collection-specific schema are stored in persistent storage as an incremental log. Milvus supports multiple object storage backends for this purpose, including:
* MinIO
* AWS S3
* Google Cloud Storage (GCS)
* Azure Blob Storage
* Alibaba Cloud OSS
* Tencent Cloud Object Storage (COS)
* **Metadata:** Metadata generated within Milvus modules is stored in **etcd**.
* **Memory Buffering:** Incremental data (growing segments) are buffered in memory before being persisted, while historical data (sealed segments) resides in object storage but is loaded into memory for querying.
Примечание: Gemini 3 Pro в настоящее время недоступен для пользователей бесплатного уровня. Нажмите здесь для получения более подробной информации.
Вы можете получить доступ к нему через OpenRouter:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="<OPENROUTER_API_KEY>",
)
response2 = client.chat.completions.create(
model="google/gemini-3-pro-preview",
messages=[
{
"role": "system",
"content": SYSTEM_PROMPT
},
{
"role": "user",
"content": USER_PROMPT
}
],
extra_body={"reasoning": {"enabled": True}}
)
response_message = response2.choices[0].message
print(response_message.content)
Еще кое-что: Vibe Coding с Google Antigravity
Вместе с Gemini 3 Pro компания Google представила Google Antigravity, платформу для виброкодирования, которая автономно взаимодействует с редактором, терминалом и браузером. В отличие от более ранних инструментов с искусственным интеллектом, которые обрабатывали разовые инструкции, Antigravity работает на уровне задач, позволяя разработчикам указывать , что они хотят создать, а система управляет тем , как, организуя весь рабочий процесс из конца в конец.
Традиционные рабочие процессы кодирования ИИ обычно генерировали изолированные фрагменты, которые разработчикам приходилось просматривать, интегрировать, отлаживать и запускать вручную. Antigravity меняет эту динамику. Вы можете просто описать задачу - например, "Создать простую игру для взаимодействия с домашними животными " - и система разложит запрос, сгенерирует код, выполнит команды терминала, откроет браузер для проверки результата и будет повторять действия до тех пор, пока все не заработает. Это превращает ИИ из пассивного автозаполнителя в активного партнера по разработке - такого, который узнает ваши предпочтения и со временем адаптируется к вашему личному стилю разработки.
Заглядывая вперед, можно сказать, что идея агента, координирующего свою работу непосредственно с базой данных, не так уж и далека от реальности. С помощью вызова инструментов через MCP ИИ сможет в конечном итоге считывать информацию из базы данных Milvus, собирать базу знаний и даже автономно поддерживать собственный конвейер поиска. Во многих отношениях этот сдвиг даже более значителен, чем само обновление модели: когда ИИ может взять описание продукта на уровне продукта и преобразовать его в последовательность исполняемых задач, усилия человека естественным образом смещаются в сторону определения целей, ограничений и того, как выглядит "правильность", то есть в сторону высокоуровневого мышления, которое действительно стимулирует разработку продукта.
Готовы к созданию?
Если вы готовы попробовать, следуйте нашему пошаговому руководству и создайте систему RAG с помощью Gemini 3 Pro + Milvus уже сегодня.
У вас есть вопросы или вы хотите получить подробную информацию о какой-либо функции? Присоединяйтесь к нашему каналу Discord или создавайте проблемы на GitHub. Вы также можете заказать 20-минутную индивидуальную сессию, чтобы получить понимание, руководство и ответы на свои вопросы через Milvus Office Hours.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



