paint-brush
Sao lưu Weaviate bằng nhóm MinIO S3 để đạt được cải tiến chiến lược trong quản lý dữ liệuby@minio
8,112
8,112

Sao lưu Weaviate bằng nhóm MinIO S3 để đạt được cải tiến chiến lược trong quản lý dữ liệu

MinIO19m2024/04/04
Read on Terminal Reader
Read this story w/o Javascript

Bằng cách kết hợp các chức năng cơ sở dữ liệu vectơ nâng cao của Weaviate với các giải pháp lưu trữ mạnh mẽ do MinIO cung cấp, người dùng được trao quyền để khai thác toàn bộ tiềm năng dữ liệu của họ.
featured image - Sao lưu Weaviate bằng nhóm MinIO S3 để đạt được cải tiến chiến lược trong quản lý dữ liệu
MinIO HackerNoon profile picture
0-item



Weaviate là cơ sở dữ liệu vectơ nguồn mở tiên phong, được thiết kế để tăng cường tìm kiếm ngữ nghĩa thông qua việc sử dụng các mô hình học máy. Không giống như các công cụ tìm kiếm truyền thống dựa vào kết hợp từ khóa, Weaviate sử dụng các nguyên tắc tương tự về ngữ nghĩa. Cách tiếp cận sáng tạo này biến đổi nhiều dạng dữ liệu khác nhau (văn bản, hình ảnh, v.v.) thành biểu diễn vectơ, dạng số nắm bắt được bản chất của ngữ cảnh và ý nghĩa của dữ liệu. Bằng cách phân tích những điểm tương đồng giữa các vectơ này, Weaviate mang lại kết quả tìm kiếm thực sự hiểu ý định của người dùng, mang lại bước nhảy vọt đáng kể vượt xa giới hạn của tìm kiếm dựa trên từ khóa.


Hướng dẫn này nhằm mục đích chứng minh sự tích hợp liền mạch của MinIOWeaviate , tận dụng tốt nhất khả năng lưu trữ đối tượng gốc Kubernetes và khả năng tìm kiếm ngữ nghĩa do AI cung cấp. Tận dụng Docker Compose để điều phối vùng chứa, hướng dẫn này cung cấp cách tiếp cận chiến lược để xây dựng hệ thống quản lý dữ liệu mạnh mẽ, có thể mở rộng và hiệu quả. Nhằm vào cách chúng tôi lưu trữ, truy cập và quản lý dữ liệu, thiết lập này là yếu tố thay đổi cuộc chơi dành cho các nhà phát triển, kỹ sư DevOps và nhà khoa học dữ liệu đang tìm cách khai thác sức mạnh của các giải pháp lưu trữ hiện đại và truy xuất dữ liệu dựa trên AI.

Giới thiệu về ngăn xếp công nghệ

Trong phần trình diễn này, chúng tôi sẽ tập trung vào việc sao lưu Weaviate bằng nhóm MinIO bằng Docker. Thiết lập này đảm bảo tính toàn vẹn và khả năng truy cập dữ liệu trong các dự án phân tích và tìm kiếm nâng cao bằng AI của chúng tôi.


  • MinIO để lưu trữ : Chúng tôi đang sử dụng MinIO làm nền tảng lưu trữ chính. Được biết đến với hiệu suất cao và khả năng mở rộng, MinIO rất thành thạo trong việc xử lý khối lượng lớn dữ liệu một cách an toàn và hiệu quả. Trong bản demo này, bạn sẽ thấy cách sử dụng nhóm MinIO để sao lưu dữ liệu Weaviate, đảm bảo tính toàn vẹn và hiệu suất của hệ thống của chúng tôi không bị ảnh hưởng.


  • Cơ sở dữ liệu Vector dệt : Trọng tâm của sự tích hợp này, cơ sở dữ liệu vectơ của Weaviate hỗ trợ các ứng dụng AI khả năng thực hiện tìm kiếm ngữ nghĩa. Bằng cách chuyển đổi dữ liệu phi cấu trúc thành các biểu diễn vectơ có ý nghĩa, nó cho phép các ứng dụng hiểu và tương tác với dữ liệu theo cách có sắc thái sâu sắc, mở đường cho các chức năng điều khiển AI thông minh và phản hồi nhanh hơn.


Cuộc trình diễn này nhằm mục đích làm nổi bật sự tích hợp liền mạch của MinIO và Weaviate bằng Docker, giới thiệu một phương pháp đáng tin cậy để sao lưu các hệ thống phân tích và tìm kiếm được tăng cường bởi AI.

Tài nguyên

Điều kiện tiên quyết về kiến thức

  • Docker và Docker Compose được cài đặt trên máy của bạn.
  • Hiểu biết cơ bản về các khái niệm Docker và cú pháp YAML.
  • Môi trường Python để sử dụng thư viện weaviate-client.
  • Truy cập dòng lệnh để chạy các lệnh như cuộn tròn.

Tích hợp và cấu hình với Docker Compose

Tệp docker-compose.yaml được cung cấp ở đây được tạo ra nhằm thiết lập quá trình thiết lập liền mạch cho Weaviate, nêu bật cam kết của chúng tôi về việc quản lý dữ liệu hiệu quả và hợp lý. Cấu hình này tạo ra một môi trường mạnh mẽ trong đó MinIO hoạt động như một dịch vụ lưu trữ an toàn và Weaviate tận dụng bộ lưu trữ này để có khả năng tìm kiếm vectơ nâng cao.


Các docker-compose.yaml được cung cấp bên dưới phác thảo cách thiết lập cho Weaviate.


 version: '3.8' services: weaviate: container_name: weaviate_server image: semitechnologies/weaviate:latest ports: - "8080:8080" environment: AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' ENABLE_MODULES: 'backup-s3' BACKUP_S3_BUCKET: 'weaviate-backups' BACKUP_S3_ENDPOINT: 'play.min.io:443' BACKUP_S3_ACCESS_KEY_ID: 'minioadmin' BACKUP_S3_SECRET_ACCESS_KEY: 'minioadmin' BACKUP_S3_USE_SSL: 'true' CLUSTER_HOSTNAME: 'node1' volumes: - ./weaviate/data:/var/lib/weaviate



Docker-Compose: Triển khai Weaviate với mô- backups-s3 được bật và máy chủ play.min.io MinIO

Định cấu hình Weaviate để sao lưu S3

Với docker-compose.yaml ở trên, Weaviate được cấu hình phức tạp để sử dụng MinIO cho việc sao lưu, đảm bảo tính toàn vẹn và khả năng truy cập của dữ liệu. Quá trình thiết lập này bao gồm các biến môi trường thiết yếu như ENABLE_MODULES được đặt thành backup-s3 và các cài đặt khác nhau cho nhóm S3, điểm cuối, khóa truy cập và mức sử dụng SSL. Ngoài ra, PERSISTENCE_DATA_PATH được đặt để đảm bảo dữ liệu được lưu trữ liên tục và CLUSTER_NAME để nhận dạng nút.


Các biến môi trường đáng chú ý bao gồm :

  • ENABLE_MODULES : 'sao lưu-s3'
  • BACKUP_S3_BUCKET : 'sao lưu dự phòng'
  • BACKUP_S3_ENDPOINT : 'play.min.io:443'
  • BACKUP_S3_ACCESS_KEY_ID : 'minioadmin'
  • BACKUP_S3_SECRET_ACCESS_KEY : 'minioadmin'
  • BACKUP_S3_USE_SSL : 'đúng'
  • PERSISTENCE_DATA_PATH : '/var/lib/weaviate'
  • CLUSTER_NAME : 'nút1'


Dịch vụ Weaviate trong docker-compose này được thiết lập để sử dụng các ổ đĩa được gắn để duy trì dữ liệu; điều này đảm bảo rằng dữ liệu của bạn vẫn tồn tại qua các phiên và hoạt động.


Lưu ý: Nhóm MinIO cần phải tồn tại trước, Weaviate sẽ không tạo nhóm cho bạn.


Các bước triển khai

Để tích hợp MinIO và Weaviate vào dự án của bạn bằng Docker Compose, hãy làm theo quy trình chi tiết sau:


Lưu hoặc cập nhật tệp soạn thảo Docker


  • Thiết lập mới : Nếu đây là thiết lập mới, hãy lưu trực tiếp tệp docker-compose.yaml được cung cấp vào thư mục làm việc của dự án của bạn. Tệp này rất quan trọng để định cấu hình chính xác các dịch vụ.


  • Thiết lập hiện có : Nếu bạn đang cập nhật môi trường sản xuất hiện có, hãy sửa đổi docker-compose.yaml hiện tại của bạn để phản ánh các cài đặt được nêu ở trên. Đảm bảo rằng các cài đặt này được sao chép chính xác để kết nối với các dịch vụ của bạn.


Chạy tệp soạn thảo Docker

Khi đã có tệp docker-compose.yaml, hãy sử dụng lệnh sau trong thiết bị đầu cuối hoặc dấu nhắc lệnh của bạn để bắt đầu triển khai:


docker-compose up -d --build


Lệnh này sẽ khởi động các dịch vụ Weaviate ở chế độ tách rời, chạy chúng trong nền hệ thống của bạn.


Hiểu các thư mục liên tục

  • Trong quá trình xây dựng và thực thi, Docker Compose sẽ tạo một thư mục liên tục như được chỉ định trong tệp docker-compose.yaml. Thư mục này ( ./weaviate/data cho Weaviate) được sử dụng để lưu trữ dữ liệu liên tục, đảm bảo rằng dữ liệu của bạn vẫn nguyên vẹn trong quá trình khởi động lại và triển khai vùng chứa.


Bộ lưu trữ liên tục cho phép tạo ra một môi trường ổn định hơn, nơi dữ liệu không bị mất khi vùng chứa được khởi động lại.


Sau khi triển khai docker-compose, bạn có thể truy cập URL của máy chủ Weaviate trong trình duyệt, theo sau là /v1/meta để kiểm tra xem cấu hình triển khai của bạn có chính xác hay không.


Dòng đầu tiên của tải trọng JSON tại http://localhost:8080/v1/meta sẽ trông như thế này:


 {"hostname":"http://[::]:8080","modules":{"backup-s3":{"bucketName":"weaviate-backups","endpoint":"play.min.io:443","useSSL":true}...[truncated]...}


Định cấu hình MinIO: Chính sách truy cập cho nhóm weaviate-backups

Để tích hợp Weaviate với MinIO, nhóm sao lưu trong MinIO cần có Chính sách truy cập của nhóm sao lưu được chỉ định, cụ thể là weaviate-backups , ở chế độ Công khai. Việc điều chỉnh này là cần thiết để cấp cho mô-đun Weaviate backup-s3 các quyền cần thiết nhằm tương tác thành công với nhóm MinIO cho các hoạt động sao lưu.


Định cấu hình Chính sách truy cập nhóm sao lưu dự phòng


Lưu ý: Trong môi trường sản xuất, bạn có thể cần phải khóa mục này, điều này nằm ngoài phạm vi của hướng dẫn này.


Điều cần thiết là tiếp cận cấu hình này với sự hiểu biết rõ ràng về ý nghĩa bảo mật của việc đặt nhóm thành công khai . Mặc dù thiết lập này tạo điều kiện thuận lợi cho quá trình sao lưu trong môi trường phát triển, nhưng các phương pháp thay thế cần được xem xét cho các hệ thống sản xuất để duy trì tính bảo mật và toàn vẹn dữ liệu. Sử dụng các biện pháp kiểm soát truy cập chi tiết hơn, chẳng hạn như chính sách IAM hoặc URL “ được chỉ định ”.



Sao lưu thành công vào nhóm sao lưu dệt



Khi kết thúc phần trình diễn này, bạn sẽ có thể thấy các đối tượng nhóm mà Weaviate tạo trong suốt quá trình khi sử dụng mô-đun backup-s3 .

Phác thảo quy trình bằng Python

Để bật sao lưu S3 trong Weaviate, hãy đặt các biến môi trường cần thiết trong tệp docker-compose.yaml của bạn. Điều này hướng dẫn Weaviate sử dụng MinIO làm đích dự phòng, bao gồm các cài đặt cho mô-đun sao lưu và chi tiết nhóm MinIO.


Trước khi đi sâu vào các hoạt động kỹ thuật, tôi muốn nói rõ rằng tôi đang trình bày các bước sau trong môi trường JupyterLab nhằm mang lại lợi ích bổ sung cho việc đóng gói quy trình của chúng tôi trong sổ ghi chép, có sẵn tại đây .


Bước đầu tiên liên quan đến việc thiết lập môi trường bằng cách cài đặt thư viện weaviate-client cho python bằng pip . Gói Python này rất cần thiết để giao tiếp với API RESTful của Weaviate theo cách Pythonic hơn, cho phép tương tác liền mạch với cơ sở dữ liệu cho các hoạt động như tạo lược đồ, lập chỉ mục dữ liệu, sao lưu và khôi phục. Để minh họa, chúng tôi sẽ minh họa bằng thư viện máy khách Weaviate Python.


Trong phần trình diễn này, chúng tôi đang sử dụng API Weaviate V3 nên bạn có thể thấy thông báo giống như thông báo bên dưới khi chạy tập lệnh python:


 `DeprecationWarning: Dep016: You are using the Weaviate v3 client, which is deprecated. Consider upgrading to the new and improved v4 client instead! See here for usage: https://weaviate.io/developers/weaviate/client-libraries/python warnings.warn(`


Thông báo này là một biểu ngữ cảnh báo và có thể bị bỏ qua, để biết thêm thông tin, bạn có thể truy cập vào đây bài báo trên blog Weaviate.


Phác thảo các bước Python :


  1. Cài đặt thư viện weaviate-client
  2. Khởi tạo ứng dụng khách
  3. Tạo lược đồ
  4. Chèn dữ liệu
  5. Bắt đầu sao lưu
  6. Phục hồi dữ liệu


1. Cài đặt thư viện Weaviate-Client

 !pip install weaviate-client


2. Nhập các lớp lược đồ cho bài viết và tác giả

Phần này giới thiệu cấu trúc dữ liệu và lược đồ cho các lớp 'Bài viết''Tác giả' , đặt nền tảng cho cách tổ chức dữ liệu. Nó trình bày cách xác định và quản lý lược đồ trong Weaviate theo chương trình, thể hiện tính linh hoạt và sức mạnh của Weaviate để thích ứng với các mô hình dữ liệu khác nhau phù hợp với nhu cầu ứng dụng cụ thể.


 import weaviate client = weaviate.Client("http://localhost:8080") # Schema classes to be created schema = { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] } client.schema.delete_class('Article') client.schema.delete_class('Author') client.schema.create(schema)

Python: tạo các lớp lược đồ


3. Thiết lập lược đồ và dữ liệu

Sau khi xác định lược đồ, sổ ghi chép sẽ hướng dẫn cách khởi tạo ứng dụng khách Weaviate, tạo lược đồ trong phiên bản Weaviate và lập chỉ mục dữ liệu. Quá trình này điền vào cơ sở dữ liệu các tập dữ liệu ban đầu, cho phép khám phá khả năng tìm kiếm vectơ của Weaviate. Nó minh họa các bước thực tế cần thiết để bắt đầu tận dụng Weaviate để lưu trữ và truy vấn dữ liệu ở định dạng vector hóa.


 # JSON data to be Ingested data = [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ] for item in data: client.data_object.create( data_object=item["properties"], class_name=item["class"] )

Python: lập chỉ mục dữ liệu theo lớp


4. Tạo bản sao lưu

Với dữ liệu được lập chỉ mục, trọng tâm sẽ chuyển sang bảo toàn trạng thái của cơ sở dữ liệu thông qua các bản sao lưu. Phần này của sổ tay hướng dẫn cách kích hoạt thao tác sao lưu vào MinIO.


 result = client.backup.create( backup_id="backup-id", backend="s3", include_classes=["Article", "Author"], # specify classes to include or omit this for all classes wait_for_completion=True, ) print(result)

Python: tạo bản sao lưu


Trông chờ:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id-2', 'path': 's3://weaviate-backups/backup-id-2', 'status': 'SUCCESS'}

Phản hồi sao lưu thành công


5. Xóa các lớp lược đồ để khôi phục mục đích

Trước khi tiến hành khôi phục, đôi khi cần phải xóa lược đồ hiện có. Phần này trình bày các bước cho một quá trình khôi phục sạch sẽ. Điều này đảm bảo rằng dữ liệu được khôi phục không xung đột với các lược đồ hoặc dữ liệu hiện có trong cơ sở dữ liệu.


 client.schema.delete_class("Article") client.schema.delete_class("Author")


6. Khôi phục bản sao lưu

Phần này giải thích cách khôi phục dữ liệu đã sao lưu trước đó, đưa cơ sở dữ liệu trở lại trạng thái tốt đã biết.

 result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print(result)

Python: khôi phục bản sao lưu


Trông chờ:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Phản hồi sao lưu-S3 thành công


Xử lý lỗi trong quá trình khôi phục

Phần này của sổ ghi chép cung cấp ví dụ về cách triển khai xử lý lỗi trong quá trình khôi phục bản sao lưu. Nó cung cấp cái nhìn sâu sắc về các vấn đề không mong muốn trong quá trình khôi phục dữ liệu.


 from weaviate.exceptions import BackupFailedError try: result = client.backup.restore( backup_id="backup-id", backend="s3", wait_for_completion=True, ) print("Backup restored successfully:", result) except BackupFailedError as e: print("Backup restore failed with error:", e) # Here you can add logic to handle the failure, such as retrying the operation or logging the error.



Trông chờ:

 Backup restored successfully: {'backend': 's3', 'classes': ['Author', 'Article'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Khôi phục sao lưu thành công


Xác minh khôi phục thành công


Cuối cùng, để xác nhận rằng quá trình sao lưu và khôi phục đã hoàn tất thành công, sổ ghi chép bao gồm một bước truy xuất lược đồ của lớp 'Bài viết'. Việc xác minh này đảm bảo rằng dữ liệu và lược đồ được khôi phục chính xác.


 client.schema.get("Article")

Trả về lớp Article dưới dạng đối tượng JSON


Trông chờ:

 {'class': 'Article', 'description': 'A class to store articles'... [Truncated]...}


Mỗi phần của sổ tay cung cấp hướng dẫn toàn diện về vòng đời quản lý dữ liệu trong Weaviate, từ thiết lập ban đầu và tổng hợp dữ liệu đến sao lưu, khôi phục và xác minh, tất cả đều được thực hiện trong hệ sinh thái Python bằng thư viện Weaviate-client.


Phác thảo quy trình bằng cách sử dụng Curl

Cho đến nay chúng tôi đã chỉ cho bạn cách thực hiện việc này theo cách Pythonic. Chúng tôi nghĩ rằng sẽ rất hữu ích nếu hiển thị nội bộ thông qua CURL cách có thể đạt được các hoạt động tương tự mà không cần viết tập lệnh.


Để tương tác với phiên bản Weaviate cho các tác vụ như tạo lược đồ, lập chỉ mục dữ liệu, thực hiện sao lưu và khôi phục dữ liệu, có thể sử dụng các lệnh cuộn tròn cụ thể. Các lệnh này tạo các yêu cầu HTTP tới API REST của Weaviate. Ví dụ: để tạo một lược đồ, một yêu cầu POST có chi tiết lược đồ sẽ được gửi đến điểm cuối lược đồ của Weaviate. Tương tự, để lập chỉ mục dữ liệu, một yêu cầu POST có trọng tải dữ liệu sẽ được thực hiện tới điểm cuối của đối tượng.


Quá trình sao lưu được kích hoạt thông qua yêu cầu POST tới điểm cuối sao lưu và quá trình khôi phục được thực hiện thông qua yêu cầu POST tới điểm cuối khôi phục. Mỗi thao tác này yêu cầu tải trọng JSON thích hợp, thường được cung cấp dưới dạng tham chiếu tệp trong lệnh cuộn tròn bằng ký hiệu @ .


Để triển khai Weaviate, tất nhiên chúng tôi sẽ yêu cầu dữ liệu mẫu để làm việc.


Tôi đã bao gồm những điều sau đây:


  1. schema.json phác thảo cấu trúc của dữ liệu chúng ta muốn lập chỉ mục.

  2. data.json là nơi dữ liệu thực tế của chúng ta phát huy tác dụng, cấu trúc của nó phù hợp với các lớp trong tệp lược đồ.json.


Các tệp lược đồ.json và data.json có sẵn trong kho lưu trữ nội dung blog MinIO nằm ở vị trí đây .


lược đồ.json


 { "classes": [ { "class": "Article", "description": "A class to store articles", "properties": [ {"name": "title", "dataType": ["string"], "description": "The title of the article"}, {"name": "content", "dataType": ["text"], "description": "The content of the article"}, {"name": "datePublished", "dataType": ["date"], "description": "The date the article was published"}, {"name": "url", "dataType": ["string"], "description": "The URL of the article"}, {"name": "customEmbeddings", "dataType": ["number[]"], "description": "Custom vector embeddings of the article"} ] }, { "class": "Author", "description": "A class to store authors", "properties": [ {"name": "name", "dataType": ["string"], "description": "The name of the author"}, {"name": "articles", "dataType": ["Article"], "description": "The articles written by the author"} ] } ] }

Các lớp lược đồ mẫu cho Bài viết và Tác giả


Các lược đồ.json tệp phác thảo cấu trúc của dữ liệu sẽ được lập chỉ mục, nêu chi tiết các lớp, thuộc tính và kiểu dữ liệu của chúng, thiết lập giai đoạn một cách hiệu quả cho cách tổ chức và tương tác với dữ liệu trong Weaviate. Lược đồ này hoạt động như một kế hoạch chi tiết để AI hiểu và phân loại dữ liệu đến, đảm bảo rằng công cụ tìm kiếm vectơ có thể hoạt động với độ chính xác và mức độ liên quan.


Mặt khác, dữ liệu.json file điền vào lược đồ này các phiên bản dữ liệu thực tế, phản ánh các kịch bản và ứng dụng trong thế giới thực. Dữ liệu mẫu này làm sáng tỏ tiềm năng về khả năng tìm kiếm của Weaviate, mang lại trải nghiệm thực tế cho thấy cách giải quyết các truy vấn và cách kết quả được tạo động dựa trên sự hiểu biết của AI về nội dung.


dữ liệu.json


 [ { "class": "Article", "properties": { "title": "LangChain: OpenAI + S3 Loader", "content": "This article discusses the integration of LangChain with OpenAI and S3 Loader...", "url": "https://blog.min.io/langchain-openai-s3-loader/", "customEmbeddings": [0.4, 0.3, 0.2, 0.1] } }, { "class": "Article", "properties": { "title": "MinIO Webhook Event Notifications", "content": "Exploring the webhook event notification system in MinIO...", "url": "https://blog.min.io/minio-webhook-event-notifications/", "customEmbeddings": [0.1, 0.2, 0.3, 0.4] } }, { "class": "Article", "properties": { "title": "MinIO Postgres Event Notifications", "content": "An in-depth look at Postgres event notifications in MinIO...", "url": "https://blog.min.io/minio-postgres-event-notifications/", "customEmbeddings": [0.3, 0.4, 0.1, 0.2] } }, { "class": "Article", "properties": { "title": "From Docker to Localhost", "content": "A guide on transitioning from Docker to localhost environments...", "url": "https://blog.min.io/from-docker-to-localhost/", "customEmbeddings": [0.4, 0.1, 0.2, 0.3] } } ]

Dữ liệu mẫu chứa bài viết


Thiết lập với cuộn tròn

Lược đồ đóng vai trò là xương sống cấu trúc của hệ thống quản lý dữ liệu của chúng tôi, xác định cách tổ chức, lập chỉ mục và truy vấn dữ liệu.


Tạo một lược đồ Weaviate

Thông qua một lệnh cuộn tròn đơn giản và với các tệp mẫu của chúng tôi được sao chép cục bộ vào thư mục làm việc hiện tại của chúng tôi; chúng ta có thể đăng trực tiếp lược đồ.json của mình lên Weaviate, đặt ra các quy tắc và mối quan hệ mà dữ liệu của chúng ta sẽ tuân thủ.


 curl -X POST -H "Content-Type: application/json" \ --data @schema.json http://localhost:8080/v1/schema

CURL: tạo


Điền lược đồ: Lập chỉ mục dữ liệu

Với lược đồ của chúng tôi đã sẵn sàng, bước tiếp theo liên quan đến việc điền dữ liệu thực tế vào đó. Sử dụng một lệnh cuộn tròn khác, chúng tôi lập chỉ mục data.json của mình vào lược đồ.


 curl -X POST -H "Content-Type: application/json" \ --data @data.json http://localhost:8080/v1/objects

CURL: chỉ mục


Đảm bảo độ bền của dữ liệu: Sao lưu bằng MinIO

Chúng tôi sẽ cần chỉ định một mã định danh duy nhất hoặc "id dự phòng". Mã định danh này không chỉ tạo điều kiện thuận lợi cho việc theo dõi và truy xuất chính xác các bộ sao lưu mà còn đảm bảo rằng mỗi tập dữ liệu đều được kiểm soát phiên bản.


 curl -X POST 'http://localhost:8080/v1/backups/s3' -H 'Content-Type:application/json' -d '{ "id": "backup-id", "include": [ "Article", "Author" ] }'

CURL: sao lưu-s3


Trông chờ:

 {'backend': 's3', 'classes': ['Article', 'Author'], 'id': 'backup-id', 'path': 's3://weaviate-backups/backup-id', 'status': 'SUCCESS'}

Phản hồi sao lưu-S3 thành công


Đầu ra này được định dạng dưới dạng đối tượng JSON. Nó bao gồm phần phụ trợ được sử dụng (trong trường hợp này là 's3' ), danh sách các lớp được bao gồm trong bản sao lưu ( 'Article' , 'Author' ), id định danh duy nhất được cấp cho bản sao lưu ( 'backup-id' ) , đường dẫn cho biết nơi lưu trữ bản sao lưu trong nhóm S3 ( s3://weaviate-backups/backup-id ) và trạng thái hoạt động ( 'SUCCESS' ).


Phản hồi có cấu trúc này không chỉ xác nhận việc hoàn thành thành công quá trình sao lưu mà còn cung cấp thông tin cần thiết có thể được sử dụng cho các quá trình tham khảo, kiểm tra hoặc khôi phục trong tương lai.


Quá trình khôi phục dữ liệu

Việc khôi phục dữ liệu trong hệ sinh thái Weaviate được hỗ trợ thông qua lệnh gọi API có cấu trúc, thông qua yêu cầu POST nhắm mục tiêu điểm cuối /v1/backups/s3/backup-id/restore, được xác định bởi backup-id. Lệnh gọi cuộn này không chỉ khôi phục dữ liệu bị mất hoặc được lưu trữ mà còn cho phép bạn duy trì tính liên tục.


 curl -X POST 'http://localhost:8080/v1/backups/s3/backup-id/restore' \ -H 'Content-Type:application/json' \ -d '{ "id": "backup-id", "exclude": ["Author"] }'

CURL: khôi phục


Trông chờ:

 { "backend": "s3", "classes": ["Article"], "id": "backup-id", "path": "s3://weaviate-backups/backup-id", "status": "SUCCESS" }

Phản hồi khôi phục thành công


Mỗi lệnh này phải được điều chỉnh dựa trên yêu cầu và thiết lập cụ thể của bạn. Bạn có thể cần sửa đổi URL điểm cuối, đường dẫn tệp dữ liệu và các tham số khác nếu cần. Ngoài ra, hãy đảm bảo rằng các tệp cần thiết (schema.json, data.json) và cấu hình có sẵn trong môi trường của bạn.

Ghi chú bổ sung về Weaviate

Tự động hóa với GitOps

Bằng cách mã hóa mọi thứ trong Git, các nhóm có thể dễ dàng theo dõi các thay đổi, khôi phục về trạng thái trước đó và đảm bảo tính nhất quán giữa các môi trường. Quy trình công việc GitOps có thể được tích hợp với các công cụ tích hợp liên tục/triển khai liên tục (CI/CD) và Kubernetes, giúp đơn giản hóa hơn nữa việc điều phối các ứng dụng được đóng gói và quản lý cơ sở hạ tầng. Chúng tôi sẽ đi vào chi tiết trong bài đăng sau về cách tự động hóa bằng GitOps.

Sao lưu và khôi phục một phần

Weaviate cho phép sao lưu hoặc khôi phục các lớp cụ thể, rất hữu ích cho các trường hợp như di chuyển dữ liệu một phần hoặc thử nghiệm phát triển.


Sao lưu nhiều nút: Đối với thiết lập nhiều nút, đặc biệt là trong môi trường Kubernetes, hãy đảm bảo rằng cấu hình của bạn chỉ định chính xác mô-đun sao lưu (như backup-s3 cho MinIO) và các biến môi trường liên quan.

Xử lý sự cố

Nếu bạn gặp sự cố trong quá trình sao lưu hoặc khôi phục, hãy kiểm tra cấu hình biến môi trường của bạn, đặc biệt liên quan đến cài đặt SSL cho bộ lưu trữ tương thích với S3 như MinIO. Vô hiệu hóa SSL ( BACKUP_S3_USE_SSL: false ) có thể giải quyết một số sự cố kết nối nhất định.

Giải pháp sao lưu mạnh mẽ và có thể mở rộng cho Weaviate với MinIO

Khi chúng tôi kết thúc quá trình khám phá việc tích hợp Weaviate với MinIO bằng Docker Compose, rõ ràng là sự kết hợp này không chỉ là một giải pháp kỹ thuật mà còn là một cải tiến mang tính chiến lược cho việc quản lý dữ liệu. Sự tích hợp này hoàn toàn phù hợp với cam kết của MinIO trong việc cung cấp các giải pháp lưu trữ dữ liệu có khả năng mở rộng, an toàn và hiệu suất cao, hiện được khuếch đại nhờ các khả năng do AI điều khiển của Weaviate. Việc sử dụng Docker Compose giúp hợp lý hóa hơn nữa quá trình tích hợp này, nhấn mạnh sự tập trung của chúng tôi vào việc làm cho các công nghệ phức tạp có thể truy cập và quản lý được.


Như mọi khi, nhóm MinIO vẫn cam kết thúc đẩy sự đổi mới trong lĩnh vực quản lý dữ liệu. Sự cống hiến của chúng tôi trong việc nâng cao và hợp lý hóa cách lưu trữ, truy cập và phân tích dữ liệu là cốt lõi trong sứ mệnh của chúng tôi.


Bằng cách kết hợp các chức năng cơ sở dữ liệu vectơ nâng cao của Weaviate với các giải pháp lưu trữ mạnh mẽ do MinIO cung cấp, người dùng được trao quyền để khai thác toàn bộ tiềm năng dữ liệu của họ. Điều này bao gồm việc tận dụng các chức năng tìm kiếm ngữ nghĩa để đảm bảo không chỉ khả năng truy cập dữ liệu mà còn bảo mật dữ liệu ở cấp độ cơ bản.


Chúng tôi thực sự được truyền cảm hứng từ sự đổi mới đáng chú ý xuất phát từ tâm trí của những nhà phát triển tận tâm và đam mê như bạn. Điều này kích thích chúng tôi cung cấp sự hỗ trợ của mình và trở thành một phần trong hành trình khám phá các giải pháp tiên tiến và đạt đến tầm cao mới trong các dự án dựa trên dữ liệu của bạn. Xin vui lòng liên hệ với chúng tôi trên chùng xuống , cho dù bạn có thắc mắc hay chỉ muốn chào hỏi.