Интеграция Milvus с MindsDB
MindsDB - это мощный инструмент для интеграции приложений искусственного интеллекта с различными корпоративными источниками данных. Он действует как механизм федеративных запросов, который вносит порядок в разрозненные данные, скрупулезно отвечая на запросы как структурированных, так и неструктурированных данных. Независимо от того, разбросаны ли ваши данные по SaaS-приложениям, базам или хранилищам данных, MindsDB может подключить и запросить их все, используя стандартный SQL. В MindsDB реализованы самые современные автономные системы RAG через базы знаний, поддержка сотен источников данных и гибкие возможности развертывания - от локальной разработки до облачных сред.
Это руководство демонстрирует, как интегрировать Milvus с MindsDB, позволяя вам использовать возможности MindsDB в области искусственного интеллекта с функциональностью векторной базы данных Milvus через SQL-подобные операции для управления и запроса векторных вкраплений.
Это руководство в основном ссылается на официальную документацию по MindsDB Milvus Handler. Если вы найдете в этом руководстве какие-либо устаревшие части, вы можете в приоритетном порядке следовать официальной документации и создать для нас проблему.
Установите MindsDB
Прежде чем мы начнем, установите MindsDB локально через Docker или Docker Desktop.
Прежде чем продолжить, убедитесь, что вы хорошо понимаете фундаментальные концепции и операции как MindsDB, так и Milvus.
Введение аргументов
Для установления соединения необходимы следующие аргументы:
uri: uri для базы данных Milvus, может быть установлен в локальном файле ".db" или в докере или облачном сервисе.token: токен для поддержки докера или облачного сервиса в соответствии с параметром uri
Дополнительные аргументы для установки соединения:
Они используются для запросов SELECT:
search_default_limit: ограничение по умолчанию, передаваемое в операторах select (по умолчанию=100)search_metric_type: тип метрики, используемый для поиска (по умолчанию="L2")search_ignore_growing: игнорировать ли растущие сегменты при поиске сходства (по умолчанию=False)search_params: специфично дляsearch_metric_type(по умолчанию={"nprobe": 10})
Используются для запросов CREATE:
create_auto_id: нужно ли автоматически генерировать id при вставке записей без ID (по умолчанию=False)create_id_max_len: максимальная длина поля id при создании таблицы (по умолчанию=64)create_embedding_dim: размерность встраивания при создании таблицы (по умолчанию=8)create_dynamic_field: будут ли создаваемые таблицы иметь динамические поля или нет (по умолчанию=True)create_content_max_len: максимальная длина столбца содержимого (по умолчанию=200)create_content_default_value: значение по умолчанию для столбца содержимого (по умолчанию='')create_schema_description: описание созданных схем (по умолчанию='')create_alias: псевдоним созданных схем (default='default')create_index_params: параметры индекса, созданного по столбцу embeddings (default={})create_index_metric_type: метрика, используемая для создания индекса (default='L2')create_index_type: тип индекса (по умолчанию='AUTOINDEX')
Использование
Прежде чем продолжить, убедитесь, что версия pymilvus совпадает с этой версией. Если вы обнаружите проблемы с совместимостью версий, вы можете откатить свою версию pymilvus или настроить ее в этом файле требований.
Создание соединения
Для того чтобы воспользоваться этим обработчиком и подключиться к серверу Milvus в MindsDB, можно использовать следующий синтаксис:
CREATE DATABASE milvus_datasource
WITH
ENGINE = 'milvus',
PARAMETERS = {
"uri": "./milvus_local.db",
"token": "",
"create_embedding_dim": 3,
"create_auto_id": true
};
- Если вам нужна локальная векторная база данных только для небольшого масштаба данных или прототипирования, установка uri в качестве локального файла, например
./milvus.db, является наиболее удобным методом, так как он автоматически использует Milvus Lite для хранения всех данных в этом файле.- Для работы с большими объемами данных и трафика в производстве вы можете настроить сервер Milvus на Docker или Kubernetes. При такой настройке используйте адрес и порт сервера в качестве
uri, напримерhttp://localhost:19530. Если вы включите функцию аутентификации на Milvus, установитеtokenкак"<your_username>:<your_password>", в противном случае устанавливать токен не нужно.- Вы также можете использовать полностью управляемый Milvus в Zilliz Cloud. Просто установите
uriиtokenв качестве публичной конечной точки и ключа API вашего экземпляра Zilliz Cloud.
Сброс соединения
Чтобы сбросить соединение, используйте эту команду.
DROP DATABASE milvus_datasource;
Создание таблиц
Чтобы вставить данные из уже существующей таблицы, используйте команду CREATE
CREATE TABLE milvus_datasource.test
(SELECT * FROM sqlitedb.test);
Сбрасывание коллекций
Сброс коллекции не поддерживается
Запрос и выборка
Чтобы запросить базу данных с помощью вектора поиска, можно использовать search_vector в предложении WHERE.
Оговорки:
- Если вы опустите
LIMIT, то будет использоватьсяsearch_default_limit, так как Milvus требует этого. - Колонка метаданных не поддерживается, но если в коллекции включена динамическая схема, вы можете делать запросы как обычно, см. пример ниже.
- Динамические поля не могут быть отображены, но могут быть запрошены
SELECT * from milvus_datasource.test
WHERE search_vector = '[3.0, 1.0, 2.0, 4.5]'
LIMIT 10;
Если вы опустите search_vector, это станет базовым поиском, и будет возвращено LIMIT или search_default_limit количество записей в коллекции.
SELECT * from milvus_datasource.test
Вы можете использовать предложение WHERE для динамических полей, как в обычном SQL.
SELECT * FROM milvus_datasource.createtest
WHERE category = "science";
Удаление записей
Вы можете удалять записи с помощью DELETE, как и в SQL.
Оговорки:
- Milvus поддерживает удаление сущностей только с четко определенными первичными ключами.
- Вы можете использовать только оператор
IN.
DELETE FROM milvus_datasource.test
WHERE id IN (1, 2, 3);
Вставка записей
Вы также можете вставлять отдельные строки, как показано ниже:
INSERT INTO milvus_test.testable (id,content,metadata,embeddings)
VALUES ("id3", 'this is a test', '{"test": "test"}', '[1.0, 8.0, 9.0]');
Обновление
Обновление записей не поддерживается Milvus API. Вы можете попробовать использовать комбинацию DELETE и INSERT
Для получения более подробной информации и примеров, пожалуйста, обратитесь к официальной документации MindsDB.