Được xây dựng trên Lance, một định dạng dữ liệu cột nguồn mở, LanceDB có một số tính năng thú vị khiến nó trở nên hấp dẫn đối với AI/ML. Ví dụ: LanceDB hỗ trợ vector hóa rõ ràng và tiềm ẩn với khả năng xử lý nhiều loại dữ liệu khác nhau. LanceDB được tích hợp với các khung ML hàng đầu như
LanceDB có khả năng truy vấn dữ liệu trong bộ lưu trữ đối tượng tương thích với S3. Sự kết hợp này là tối ưu để xây dựng các hệ thống truy xuất và lưu trữ dữ liệu ML gốc trên nền tảng đám mây, hiệu suất cao, có thể mở rộng và có thể mở rộng. MinIO mang lại hiệu suất và tính linh hoạt tuyệt vời trên nhiều phần cứng, vị trí và môi trường đám mây khác nhau cho phương trình, khiến nó trở thành lựa chọn tự nhiên cho các hoạt động triển khai như vậy.
Sau khi hoàn thành hướng dẫn này, bạn sẽ sẵn sàng sử dụng LanceDB và MinIO để giải quyết mọi thách thức về dữ liệu.
Các
Một trong số đó
Cơ sở dữ liệu vectơ như LanceDB mang lại những lợi thế khác biệt cho các ứng dụng AI và máy học nhờ tính hiệu quả của chúng.
Xử lý ngôn ngữ tự nhiên (NLP):
Tìm kiếm ngữ nghĩa: Tìm tài liệu hoặc đoạn văn tương tự như truy vấn dựa trên ý nghĩa chứ không chỉ từ khóa. Điều này hỗ trợ phản hồi của chatbot, đề xuất nội dung được cá nhân hóa và hệ thống truy xuất kiến thức.
Trả lời câu hỏi: Hiểu và trả lời các câu hỏi phức tạp bằng cách tìm các đoạn văn bản có liên quan dựa trên sự tương đồng về ngữ nghĩa.
Lập mô hình chủ đề: Khám phá các chủ đề tiềm ẩn trong bộ sưu tập văn bản lớn, hữu ích cho việc phân cụm tài liệu và phân tích xu hướng.
Tầm nhìn máy tính:
Truy xuất hình ảnh và video: Tìm kiếm hình ảnh hoặc video tương tự dựa trên nội dung trực quan, rất quan trọng cho việc truy xuất hình ảnh dựa trên nội dung, tìm kiếm sản phẩm và phân tích video.
Phát hiện và phân loại đối tượng: Cải thiện độ chính xác của các mô hình phát hiện và phân loại đối tượng bằng cách truy xuất hiệu quả dữ liệu đào tạo tương tự.
Đề xuất video : Đề xuất các video tương tự dựa trên nội dung trực quan của các video đã xem trước đó.
Trong số rất nhiều cơ sở dữ liệu vectơ trên thị trường, LanceDB đặc biệt phù hợp với AI và học máy vì nó hỗ trợ truy vấn trên bộ lưu trữ tương thích với S3. Dữ liệu của bạn ở khắp mọi nơi, cơ sở dữ liệu của bạn cũng phải ở khắp mọi nơi.
Sử dụng MinIO với LanceDB mang lại một số lợi ích, bao gồm:
Sự kết hợp giữa MinIO và LanceDB cung cấp giải pháp gốc đám mây có thể mở rộng hiệu suất cao để quản lý và phân tích các bộ dữ liệu ML quy mô lớn.
Để làm theo hướng dẫn này, bạn sẽ cần sử dụng
Đảm bảo rằng Docker Compose được cài đặt bằng cách chạy lệnh sau:
docker compose version
Bạn cũng sẽ cần cài đặt Python. Bạn có thể tải xuống Python từ
Tùy chọn, bạn có thể chọn tạo Môi trường ảo. Cách tốt nhất là tạo một môi trường ảo để tách biệt các phần phụ thuộc. Để làm như vậy, hãy mở một terminal và chạy:
python -m venv venv
Để kích hoạt môi trường ảo:
Trên Windows:
.\venv\Scripts\activate
Trên macOS/Linux:
source venv/bin/activate
Bắt đầu bằng cách nhân bản dự án từ
docker-compose up minio
Thao tác này sẽ khởi động vùng chứa MinIO. Bạn có thể điều hướng đến '
Đăng nhập bằng tên người dùng và mật khẩu minioadmin:minioadmin
.
Tiếp theo, chạy lệnh sau để tạo nhóm MinIO có tên lance
.
docker compose up mc
Lệnh này thực hiện một loạt
Dưới đây là bảng phân tích của từng lệnh:
cho đến khi (/usr/bin/mc config Host thêm minio http://minio:9000 minioadmin minioadmin) thực hiện echo '...waiting...' && sleep 1; done ;: Lệnh này liên tục cố gắng định cấu hình máy chủ MinIO có tên minio
với các tham số được chỉ định (điểm cuối, khóa truy cập và khóa bí mật) cho đến khi thành công. Trong mỗi lần thử, nó sẽ lặp lại một tin nhắn đang chờ và tạm dừng trong 1 giây.
/usr/bin/mc rm -r --force minio/lance;: Lệnh này loại bỏ (xóa) một cách mạnh mẽ tất cả nội dung trong nhóm lance
trong MinIO.
/usr/bin/mc mb minio/lance; : Lệnh này tạo một nhóm mới có tên lance
trong MinIO.
/usr/bin/mc chính sách đặt minio/lance công khai; : Lệnh này đặt chính sách của nhóm lance
ở chế độ công khai, cho phép truy cập đọc công khai.
lối ra 0; : Lệnh này đảm bảo rằng tập lệnh thoát với mã trạng thái là 0, cho biết việc thực thi thành công.
Thật không may, LanceDB không có hỗ trợ S3 gốc và do đó, bạn sẽ phải sử dụng thứ gì đó như boto3 để kết nối với vùng chứa MinIO mà bạn đã tạo. Khi LanceDB hoàn thiện, chúng tôi mong đợi sự hỗ trợ gốc của S3 sẽ giúp trải nghiệm người dùng tốt hơn.
Kịch bản mẫu dưới đây sẽ giúp bạn bắt đầu.
Cài đặt các gói cần thiết bằng pip. Tạo một tệp có tên require.txt với nội dung sau:
lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9
Sau đó chạy lệnh sau để cài đặt các gói:
pip install -r requirements.txt
Bạn sẽ cần thay đổi thông tin đăng nhập nếu phương pháp tạo vùng chứa MinIO của bạn khác với phương pháp được nêu ở trên.
Lưu tập lệnh bên dưới vào một tệp, ví dụ: 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()
Tập lệnh này sẽ tạo bảng Lance từ dữ liệu được tạo ngẫu nhiên và thêm nó vào nhóm MinIO của bạn. Xin nhắc lại, nếu bạn không sử dụng phương pháp trong phần trước để tạo vùng lưu trữ, bạn sẽ cần phải làm như vậy trước khi chạy tập lệnh. Hãy nhớ thay đổi tập lệnh mẫu ở trên để khớp với tên bạn đặt tên cho nhóm MinIO của mình.
Cuối cùng, tập lệnh sẽ mở bảng mà không di chuyển nó ra khỏi MinIO và sử dụng Pandas để thực hiện tìm kiếm và in kết quả.
Kết quả của tập lệnh sẽ trông giống như bên dưới. Hãy nhớ rằng dữ liệu được tạo ngẫu nhiên mỗi lần.
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
Có nhiều cách để xây dựng trên nền tảng này được cung cấp trong hướng dẫn này nhằm tạo ra các kiến trúc ML/AI có hiệu suất, có thể mở rộng và phù hợp với tương lai. Bạn có hai khối xây dựng mã nguồn mở và tiên tiến trong kho vũ khí của mình – bộ lưu trữ đối tượng MinIO và cơ sở dữ liệu vectơ LanceDB – hãy coi đây là tấm vé chiến thắng của bạn tới ML/AI
Đừng dừng lại ở đây. LanceDB cung cấp một loạt các
Vui lòng cho chúng tôi xem những gì bạn đang xây dựng và nếu bạn cần hướng dẫn cho nhiệm vụ cao cả của mình, đừng ngần ngại gửi email cho chúng tôi theo địa chỉ [email protected] hoặc tham gia bàn tròn của chúng tôi trên