Запуск Milvus Lite локально
На этой странице показано, как запустить Milvus локально с помощью Milvus Lite. Milvus Lite - это облегченная версия Milvus, векторной базы данных с открытым исходным кодом, которая обеспечивает работу приложений искусственного интеллекта с векторными вкраплениями и поиском сходства.
Обзор
Milvus Lite может быть импортирован в ваше Python-приложение, обеспечивая основную функциональность векторного поиска Milvus. Milvus Lite уже включен в Python SDK Milvus. Его можно просто развернуть с помощью pip install pymilvus
.
С Milvus Lite вы можете начать создавать ИИ-приложение с векторным поиском сходства в течение нескольких минут! Milvus Lite подходит для работы в следующих средах:
- Jupyter Notebook / Google Colab
- Ноутбуки
- Граничные устройства
Milvus Lite использует тот же API, что и Milvus Standalone и Distributed, и охватывает большинство функций, таких как сохранение и управление векторными данными, векторные CRUD-операции, поиск по разреженным и плотным векторам, фильтрация метаданных, мультивекторный и гибридный_поиск. Вместе они обеспечивают согласованную работу в различных типах сред, от пограничных устройств до кластеров в облаке, и подходят для сценариев использования разного размера. Используя один и тот же код на стороне клиента, вы можете запускать приложения GenAI с Milvus Lite на ноутбуке или Jupyter Notebook, Milvus Standalone в контейнере Docker или Milvus Distributed на огромном кластере Kubernetes, обслуживающем миллиарды векторов в производстве.
Необходимые условия
В настоящее время Milvus Lite поддерживает следующие среды:
- Ubuntu >= 20.04 (x86_64 и arm64)
- MacOS >= 11.0 (Apple Silicon M1/M2 и x86_64)
Обратите внимание, что Milvus Lite подходит только для небольших случаев использования векторного поиска. Для крупномасштабных задач мы рекомендуем использовать Milvus Standalone или Milvus Distributed. Вы также можете рассмотреть вариант полностью управляемого Milvus на Zilliz Cloud.
Настройка Milvus Lite
pip install -U pymilvus
Мы рекомендуем использовать pymilvus
. Поскольку milvus-lite
включен в pymilvus
версии 2.4.2 или выше, вы можете pip install
с -U
для принудительного обновления до последней версии, и milvus-lite
будет установлен автоматически.
Если вы хотите явно установить пакет milvus-lite
, или вы установили старую версию milvus-lite
и хотите ее обновить, вы можете сделать это с помощью pip install -U milvus-lite
.
Подключение к Milvus Lite
В pymilvus
укажите локальное имя файла в качестве параметра uri MilvusClient для использования Milvus Lite.
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
После выполнения приведенного выше фрагмента кода в текущей папке будет создан файл базы данных с именем milvus_demo.db.
ПРИМЕЧАНИЕ: Обратите внимание, что тот же самый API также применим к Milvus Standalone, Milvus Distributed и Zilliz Cloud, единственное различие заключается в замене локального имени файла на конечную точку удаленного сервера и учетные данные, например
client = MilvusClient(uri="http://localhost:19530", token="username:password")
.
Примеры
Ниже приведен простой демонстрационный пример использования Milvus Lite для текстового поиска. Есть и более подробные примеры использования Milvus Lite для создания приложений, таких как RAG, поиск изображений, а также использование Milvus Lite в популярных фреймворках RAG, таких как LangChain и LlamaIndex!
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
Ограничения
При использовании Milvus Lite обратите внимание, что некоторые функции не поддерживаются. В следующих таблицах приведены ограничения на использование Milvus Lite.
Коллекция
Метод/параметр | Поддерживается в Milvus Lite |
---|---|
create_collection() | Поддержка с ограниченными параметрами |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N (Поддерживается только Strong ; любая конфигурация будет рассматриваться как Strong ). |
get_collection_stats() | Поддерживает получение статистики коллекции. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards , consistency_level и collection_id в ответе недействительны. |
timeout | Y |
has_collection() | Поддерживает проверку существования коллекции. |
collection_name | Y |
timeout | Y |
list_collections() | Поддерживает вывод списка всех коллекций. |
drop_collection() | Поддерживает сброс коллекции. |
collection_name | Y |
timeout | Y |
переименовать_коллекцию() | Переименование коллекции не поддерживается. |
Поле и схема
Метод / параметр | Поддерживается в Milvus Lite |
---|---|
create_schema() | Поддержка с ограниченными параметрами |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | Поддержка с ограниченными параметрами |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
Вставка и поиск
Метод / параметр | Поддерживается в Milvus Lite |
---|---|
поиск() | Поддержка с ограниченными параметрами |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
query() | Поддержка ограниченных параметров |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | Поддержка с ограниченными параметрами |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
delete() | Поддержка с ограниченными параметрами |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
insert() | Поддержка с ограниченными параметрами |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | Поддержка с ограниченными параметрами |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
Загрузка и освобождение
Метод / параметр | Поддерживается в Milvus Lite |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
release_collection() | Y |
collection_name | Y |
timeout | Y |
get_load_state() | Получение состояния загрузки не поддерживается. |
refresh_load() | Загрузка выгруженных данных загруженной коллекции не поддерживается. |
close() | Y |
Индекс
Метод / параметр | Поддерживается в Milvus Lite |
---|---|
list_indexes() | Поддерживается перечисление индексов. |
collection_name | Y |
field_name | Y |
create_index() | Поддерживается только тип индекса FLAT . |
index_params | Y |
timeout | Y |
drop_index() | Поддерживается сбрасывание индексов. |
collection_name | Y |
index_name | Y |
timeout | Y |
describe_index() | Поддерживается описание индексов. |
collection_name | Y |
index_name | Y |
timeout | Y |
Типы векторных индексов
Milvus Lite поддерживает только тип индекса FLAT. Он использует тип FLAT независимо от указанного типа индекса в коллекции.
Особенности поиска
Milvus Lite поддерживает разреженный векторный, многовекторный и гибридный поиск.
Раздел
Milvus Lite не поддерживает разделы и методы, связанные с разделами.
Пользователи и роли
Milvus Lite не поддерживает пользователей и роли, а также связанные с ними методы.
Псевдоним
Milvus Lite не поддерживает псевдонимы и методы, связанные с псевдонимами.
Перенос данных из Milvus Lite
Все данные, хранящиеся в Milvus Lite, можно легко экспортировать и загрузить в другие типы развертывания Milvus, такие как Milvus Standalone на Docker, Milvus Distributed на K8s или полностью управляемый Milvus на Zilliz Cloud.
Milvus Lite - это инструмент командной строки, который позволяет сбрасывать данные в json-файл, который можно импортировать в milvus и Zilliz Cloud(полностью управляемый облачный сервис для Milvus). Команда milvus-lite будет установлена вместе с пакетом milvus-lite python.
# Install
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -h
usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]
optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir
В следующем примере выгружаются все данные из коллекции demo_collection
, которые хранятся в ./milvus_demo.db
(файл базы данных Milvus Lite).
Для экспорта данных:
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir
С помощью файла дампа вы можете загрузить данные в Zilliz Cloud через Data Import или загрузить данные на серверы Milvus через Bulk Insert.
Что дальше
Подключившись к Milvus Lite, вы можете:
Проверить "Быстрый старт", чтобы узнать, на что способен Milvus.
Изучить основные операции Milvus:
Развертывание кластера Milvus в облаках:
Изучите Milvus Backup, инструмент с открытым исходным кодом для резервного копирования данных Milvus.
Изучите Birdwatcher, инструмент с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Изучите Attu, инструмент с открытым исходным кодом GUI для интуитивного управления Milvus.