Основанная на Lance, формате столбчатых данных с открытым исходным кодом, LanceDB имеет несколько интересных функций, которые делают ее привлекательной для AI/ML. Например, LanceDB поддерживает явную и неявную векторизацию с возможностью обработки различных типов данных. LanceDB интегрирован с ведущими платформами машинного обучения, такими как
LanceDB способна запрашивать данные в S3-совместимом объектном хранилище. Эта комбинация оптимальна для создания высокопроизводительных, масштабируемых и облачных систем хранения и поиска данных машинного обучения. MinIO обеспечивает производительность и беспрецедентную гибкость при работе с разнообразным оборудованием, местоположениями и облачными средами, что делает его естественным выбором для таких развертываний.
По завершении этого руководства вы будете готовы использовать LanceDB и MinIO для решения любых задач, связанных с данными.
Один из его
Векторные базы данных, такие как LanceDB, предлагают явные преимущества для приложений искусственного интеллекта и машинного обучения благодаря своей эффективной
Обработка естественного языка (НЛП):
Семантический поиск: находите документы или отрывки, похожие на запрос, по смыслу, а не только по ключевым словам. Это обеспечивает ответы чат-ботов, персонализированные рекомендации по контенту и системы поиска знаний.
Ответы на вопросы: Понимайте сложные вопросы и отвечайте на них, находя соответствующие отрывки текста на основе семантического сходства.
Моделирование тем: обнаруживайте скрытые темы в больших текстовых коллекциях, что полезно для кластеризации документов и анализа тенденций.
Компьютерное зрение:
Поиск изображений и видео: поиск похожих изображений или видео на основе визуального контента, что имеет решающее значение для поиска изображений на основе контента, поиска продуктов и анализа видео.
Обнаружение и классификация объектов. Повышайте точность моделей обнаружения и классификации объектов за счет эффективного получения аналогичных обучающих данных.
Видеорекомендация : рекомендуйте похожие видео на основе визуального содержания ранее просмотренных видео.
Среди множества векторных баз данных, представленных на рынке, LanceDB особенно хорошо подходит для искусственного интеллекта и машинного обучения, поскольку поддерживает запросы к S3-совместимому хранилищу. Ваши данные повсюду, ваша база данных тоже должна быть повсюду.
Использование MinIO с LanceDB дает ряд преимуществ, в том числе:
Комбинация MinIO и LanceDB обеспечивает высокопроизводительное масштабируемое облачное решение для управления и анализа крупномасштабных наборов данных машинного обучения.
Чтобы следовать этому руководству, вам нужно будет использовать
Убедитесь, что Docker Compose установлен, выполнив следующую команду:
docker compose version
Вам также потребуется установить Python. Вы можете скачать Python с
При желании вы можете создать виртуальную среду. Хорошей практикой является создание виртуальной среды для изоляции зависимостей. Для этого откройте терминал и запустите:
python -m venv venv
Чтобы активировать виртуальную среду:
В Windows:
.\venv\Scripts\activate
В macOS/Linux:
source venv/bin/activate
Начните с клонирования проекта из
docker-compose up minio
Это запустит контейнер MinIO. Вы можете перейти к '
Войдите в систему, используя имя пользователя и пароль minioadmin:minioadmin
.
Затем выполните следующую команду, чтобы создать корзину MinIO под названием lance
.
docker compose up mc
Эта команда выполняет ряд
Вот разбивка каждой команды:
до тех пор, пока (/usr/bin/mc config хост не добавит minio http://minio:9000 minioadmin minioadmin) do echo '...waiting...' && Sleep 1; Done ;: Эта команда неоднократно пытается настроить хост MinIO с именем minio
с указанными параметрами (конечная точка, ключ доступа и секретный ключ) до достижения успеха. Во время каждой попытки отображается ожидающее сообщение и делается пауза на 1 секунду.
/usr/bin/mc rm -r --force minio/lance;: Эта команда принудительно удаляет (удаляет) все содержимое в контейнере lance
в MinIO.
/usr/bin/mc mb minio/lance; : эта команда создает в MinIO новую корзину с именем lance
.
/usr/bin/mc установка политики public minio/lance; : эта команда устанавливает общедоступную политику lance
корзины, разрешая публичный доступ для чтения.
выход 0; : Эта команда гарантирует, что сценарий завершит работу с кодом состояния 0, что указывает на успешное выполнение.
К сожалению, LanceDB не имеет встроенной поддержки S3, и в результате вам придется использовать что-то вроде boto3 для подключения к созданному вами контейнеру MinIO. По мере развития LanceDB мы с нетерпением ожидаем появления встроенной поддержки S3, которая сделает работу пользователя еще лучше.
Приведенный ниже пример сценария поможет вам начать.
Установите необходимые пакеты с помощью pip. Создайте файл с именем require.txt следующего содержания:
lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9
Затем выполните следующую команду для установки пакетов:
pip install -r requirements.txt
Вам потребуется изменить свои учетные данные, если ваш метод создания контейнера MinIO отличается от описанного выше.
Сохраните приведенный ниже сценарий в файл, например, lancedb_script.py
.
import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()
Этот скрипт создаст таблицу Lance из случайно сгенерированных данных и добавит ее в корзину MinIO. Опять же, если вы не используете метод из предыдущего раздела для создания сегмента, вам нужно будет сделать это перед запуском сценария. Не забудьте изменить приведенный выше пример сценария, чтобы он соответствовал тому, как вы называете свою корзину MinIO.
Наконец, скрипт открывает таблицу, не перемещая ее из MinIO, и использует Pandas для поиска и печати результатов.
Результат работы скрипта должен выглядеть примерно так, как показано ниже. Помните, что сами данные каждый раз генерируются случайным образом.
vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407
На основе этой основы, предложенной в этом руководстве, существует множество способов создания производительных, масштабируемых и ориентированных на будущее архитектур ML/AI. В вашем арсенале есть два передовых строительных блока с открытым исходным кодом — объектное хранилище MinIO и векторная база данных LanceDB — считайте это своим выигрышным билетом в области машинного обучения и искусственного интеллекта.
Не останавливайтесь здесь. LanceDB предлагает широкий спектр
Пожалуйста, покажите нам, что вы создаете, и если вам понадобится помощь в вашем благородном поиске, не стесняйтесь, напишите нам по адресу [email protected] или присоединяйтесь к нашему круглому столу на