Tăng cường khả năng tìm kiếm thần kinh bằng các trình kết nối AI/ML trong Dịch vụ Tìm kiếm Mở của Amazon | Dịch vụ web của Amazon

Tăng cường khả năng tìm kiếm thần kinh bằng các trình kết nối AI/ML trong Dịch vụ Tìm kiếm Mở của Amazon | Dịch vụ web của Amazon

Nút nguồn: 3068091

Với sự ra mắt của tính năng tìm kiếm thần kinh cho Dịch vụ Tìm kiếm Mở của Amazon trong OpenSearch 2.9, giờ đây thật dễ dàng để tích hợp với các mô hình AI/ML để hỗ trợ tìm kiếm ngữ nghĩa và các trường hợp sử dụng khác. Dịch vụ OpenSearch đã hỗ trợ cả tìm kiếm từ vựng và tìm kiếm vectơ kể từ khi giới thiệu tính năng k-hàng xóm gần nhất (k-NN) vào năm 2020; tuy nhiên, việc định cấu hình tìm kiếm ngữ nghĩa yêu cầu xây dựng một khung để tích hợp các mô hình học máy (ML) để nhập và tìm kiếm. Tính năng tìm kiếm thần kinh tạo điều kiện thuận lợi cho việc chuyển đổi văn bản thành vectơ trong quá trình nhập và tìm kiếm. Khi bạn sử dụng truy vấn thần kinh trong quá trình tìm kiếm, truy vấn sẽ được dịch sang dạng nhúng vectơ và k-NN được sử dụng để trả về các vectơ nhúng gần nhất từ ​​kho văn bản.

Để sử dụng tìm kiếm thần kinh, bạn phải thiết lập mô hình ML. Chúng tôi khuyên bạn nên định cấu hình trình kết nối AI/ML cho các dịch vụ AWS AI và ML (chẳng hạn như Amazon SageMaker or nền tảng Amazon) hoặc các lựa chọn thay thế của bên thứ ba. Bắt đầu với phiên bản 2.9 trên Dịch vụ OpenSearch, các trình kết nối AI/ML tích hợp với tìm kiếm thần kinh để đơn giản hóa và vận hành quá trình dịch kho dữ liệu và truy vấn của bạn sang các phần nhúng vectơ, từ đó loại bỏ phần lớn sự phức tạp của việc tìm kiếm và hydrat hóa vectơ.

Trong bài đăng này, chúng tôi trình bày cách định cấu hình trình kết nối AI/ML với các mô hình bên ngoài thông qua bảng điều khiển Dịch vụ OpenSearch.

Tổng quan về giải pháp

Cụ thể, bài đăng này hướng dẫn bạn cách kết nối với mô hình trong SageMaker. Sau đó, chúng tôi sẽ hướng dẫn bạn cách sử dụng trình kết nối để định cấu hình tìm kiếm ngữ nghĩa trên Dịch vụ OpenSearch làm ví dụ về trường hợp sử dụng được hỗ trợ thông qua kết nối với mô hình ML. Tích hợp Amazon Bedrock và SageMaker hiện được hỗ trợ trên giao diện người dùng của bảng điều khiển Dịch vụ OpenSearch và danh sách các tích hợp của bên thứ nhất và bên thứ ba được giao diện người dùng hỗ trợ sẽ tiếp tục phát triển.

Đối với bất kỳ kiểu máy nào không được hỗ trợ thông qua giao diện người dùng, thay vào đó, bạn có thể thiết lập chúng bằng cách sử dụng các API có sẵn và bản thiết kế ML. Để biết thêm thông tin, hãy tham khảo Giới thiệu về Mô hình OpenSearch. Bạn có thể tìm thấy bản thiết kế cho từng đầu nối trong Kho lưu trữ GitHub của ML Commons.

Điều kiện tiên quyết

Trước khi kết nối mô hình qua bảng điều khiển Dịch vụ OpenSearch, hãy tạo miền Dịch vụ OpenSearch. Bản đồ một Quản lý truy cập và nhận dạng AWS (IAM) vai trò theo tên LambdaInvokeOpenSearchMLCommonsRole với vai trò phụ trợ trên ml_full_access vai trò bằng cách sử dụng plugin Bảo mật trên Bảng thông tin OpenSearch, như minh họa trong video sau. Quy trình tích hợp Dịch vụ OpenSearch được điền sẵn để sử dụng LambdaInvokeOpenSearchMLCommonsRole Theo mặc định, vai trò IAM là tạo trình kết nối giữa miền Dịch vụ OpenSearch và mô hình được triển khai trên SageMaker. Nếu bạn sử dụng vai trò IAM tùy chỉnh trên tích hợp bảng điều khiển Dịch vụ OpenSearch, hãy đảm bảo vai trò tùy chỉnh được ánh xạ dưới dạng vai trò phụ trợ với ml_full_access quyền trước khi triển khai mẫu.

Triển khai mô hình bằng AWS CloudFormation

Video sau đây trình bày các bước sử dụng bảng điều khiển Dịch vụ OpenSearch để triển khai mô hình trong vòng vài phút trên Amazon SageMaker và tạo ID mô hình thông qua trình kết nối AI. Bước đầu tiên là chọn Tích hợp trong ngăn điều hướng trên bảng điều khiển OpenSearch Service AWS, định tuyến tới danh sách các tích hợp có sẵn. Việc tích hợp được thiết lập thông qua giao diện người dùng, giao diện người dùng này sẽ nhắc bạn những thông tin đầu vào cần thiết.

Để thiết lập tính năng tích hợp, bạn chỉ cần cung cấp điểm cuối miền Dịch vụ OpenSearch và cung cấp tên mô hình để nhận dạng duy nhất kết nối mô hình. Theo mặc định, mẫu triển khai mô hình chuyển đổi câu Ôm mặt, djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

Khi bạn chọn Tạo ngăn xếp, bạn được chuyển đến Hình thành đám mây AWS bảng điều khiển. Mẫu CloudFormation triển khai kiến ​​trúc chi tiết trong sơ đồ sau.

Ngăn xếp CloudFormation tạo ra một AWS Lambda ứng dụng triển khai mô hình từ Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3), tạo trình kết nối và tạo ID mẫu ở đầu ra. Sau đó, bạn có thể sử dụng ID mô hình này để tạo chỉ mục ngữ nghĩa.

Nếu mô hình all-MiniLM-L6-v2 mặc định không phục vụ mục đích của bạn, bạn có thể triển khai bất kỳ mô hình nhúng văn bản nào bạn chọn trên máy chủ mô hình đã chọn (SageMaker hoặc Amazon Bedrock) bằng cách cung cấp các tạo phẩm mô hình của bạn dưới dạng đối tượng S3 có thể truy cập. Ngoài ra, bạn có thể chọn một trong các cách sau mô hình ngôn ngữ được đào tạo trước và triển khai nó lên SageMaker. Để biết hướng dẫn thiết lập điểm cuối và mô hình của bạn, hãy tham khảo Hình ảnh Amazon SageMaker có sẵn.

SageMaker là dịch vụ được quản lý hoàn toàn, tập hợp một bộ công cụ đa dạng để hỗ trợ ML hiệu suất cao, chi phí thấp cho mọi trường hợp sử dụng, mang lại những lợi ích chính như giám sát mô hình, lưu trữ không có máy chủ và tự động hóa quy trình làm việc để đào tạo và triển khai liên tục. SageMaker cho phép bạn lưu trữ và quản lý vòng đời của các mô hình nhúng văn bản, đồng thời sử dụng chúng để hỗ trợ các truy vấn tìm kiếm ngữ nghĩa trong Dịch vụ OpenSearch. Khi được kết nối, SageMaker lưu trữ các mô hình của bạn và Dịch vụ OpenSearch được sử dụng để truy vấn dựa trên kết quả suy luận từ SageMaker.

Xem mô hình đã triển khai thông qua Bảng điều khiển OpenSearch

Để xác minh mẫu CloudFormation đã triển khai thành công mô hình trên miền Dịch vụ OpenSearch và lấy ID mô hình, bạn có thể sử dụng API ML Commons REST GET thông qua Công cụ dành cho nhà phát triển Bảng điều khiển OpenSearch.

API REST _plugins hiện cung cấp các API bổ sung để xem trạng thái mô hình. Lệnh sau cho phép bạn xem trạng thái của một mô hình từ xa:

GET _plugins/_ml/models/<modelid>

Như được hiển thị trong ảnh chụp màn hình sau đây, một DEPLOYED trạng thái trong phản hồi cho biết mô hình đã được triển khai thành công trên cụm Dịch vụ OpenSearch.

Ngoài ra, bạn có thể xem mô hình được triển khai trên miền Dịch vụ OpenSearch của mình bằng cách sử dụng Machine Learning trang của Bảng điều khiển OpenSearch.

Trang này liệt kê thông tin mô hình và trạng thái của tất cả các mô hình được triển khai.

Tạo đường dẫn thần kinh bằng ID mô hình

Khi trạng thái của mô hình hiển thị là DEPLOYED trong Công cụ dành cho nhà phát triển hoặc màu xanh lá cây và Trả lời trong Bảng thông tin OpenSearch, bạn có thể sử dụng ID mô hình để xây dựng đường dẫn nhập thần kinh của mình. Quy trình nhập sau đây được chạy trong Công cụ dành cho nhà phát triển Bảng điều khiển OpenSearch trong miền của bạn. Đảm bảo bạn thay thế ID mô hình bằng ID duy nhất được tạo cho mô hình được triển khai trên miền của bạn.

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

Tạo chỉ mục tìm kiếm ngữ nghĩa bằng cách sử dụng đường dẫn thần kinh làm đường dẫn mặc định

Bây giờ, bạn có thể xác định ánh xạ chỉ mục của mình bằng đường dẫn mặc định được định cấu hình để sử dụng đường dẫn thần kinh mới mà bạn đã tạo ở bước trước. Đảm bảo các trường vectơ được khai báo là knn_vector và kích thước phù hợp với mô hình được triển khai trên SageMaker. Nếu bạn đã giữ lại cấu hình mặc định để triển khai mô hình all-MiniLM-L6-v2 trên SageMaker, hãy giữ nguyên các cài đặt sau và chạy lệnh trong Công cụ dành cho nhà phát triển.

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

Nhập tài liệu mẫu để tạo vectơ

Đối với bản demo này, bạn có thể sử dụng mẫu bán lẻ demostore danh mục sản phẩm đến cái mới semantic_demostore mục lục. Thay thế tên người dùng, mật khẩu và điểm cuối miền bằng thông tin miền của bạn và nhập dữ liệu thô vào Dịch vụ OpenSearch:

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

Xác thực chỉ mục ngữ nghĩa_demostore mới

Bây giờ bạn đã nhập tập dữ liệu của mình vào miền Dịch vụ OpenSearch, hãy xác thực xem các vectơ bắt buộc có được tạo bằng cách sử dụng tìm kiếm đơn giản để tìm nạp tất cả các trường hay không. Xác thực nếu các trường được xác định là knn_vectors có các vectơ cần thiết.

So sánh tìm kiếm từ vựng và tìm kiếm ngữ nghĩa được cung cấp bởi tìm kiếm thần kinh bằng công cụ So sánh kết quả tìm kiếm

Sản phẩm Công cụ So sánh Kết quả Tìm kiếm trên Bảng điều khiển OpenSearch có sẵn cho khối lượng công việc sản xuất. Bạn có thể điều hướng đến So sánh kết quả tìm kiếm trang và so sánh kết quả truy vấn giữa tìm kiếm từ vựng và tìm kiếm thần kinh được định cấu hình để sử dụng ID mô hình được tạo trước đó.

Làm sạch

Bạn có thể xóa tài nguyên bạn đã tạo theo hướng dẫn trong bài đăng này bằng cách xóa ngăn xếp CloudFormation. Thao tác này sẽ xóa tài nguyên Lambda và nhóm S3 chứa mô hình đã được triển khai cho SageMaker. Hoàn thành các bước sau:

  1. Trên bảng điều khiển AWS CloudFormation, hãy điều hướng đến trang chi tiết ngăn xếp của bạn.
  2. Chọn Xóa bỏ.

  1. Chọn Xóa bỏ xác nhận.

Bạn có thể theo dõi tiến trình xóa ngăn xếp trên bảng điều khiển AWS CloudFormation.

Lưu ý rằng việc xóa ngăn xếp CloudFormation sẽ không xóa mô hình được triển khai trên miền SageMaker và trình kết nối AI/ML đã tạo. Điều này là do các mô hình này và trình kết nối có thể được liên kết với nhiều chỉ mục trong miền. Để xóa cụ thể một mô hình và trình kết nối liên quan của nó, hãy sử dụng API mô hình như trong ảnh chụp màn hình sau.

Đầu tiên, undeploy mô hình từ bộ nhớ miền Dịch vụ OpenSearch:

POST /_plugins/_ml/models/<model_id>/_undeploy

Sau đó, bạn có thể xóa mô hình khỏi chỉ mục mô hình:

DELETE /_plugins/_ml/models/<model_id>

Cuối cùng, xóa trình kết nối khỏi chỉ mục trình kết nối:

DELETE /_plugins/_ml/connectors/<connector_id>

Kết luận

Trong bài đăng này, bạn đã tìm hiểu cách triển khai mô hình trong SageMaker, tạo trình kết nối AI/ML bằng bảng điều khiển Dịch vụ OpenSearch và xây dựng chỉ mục tìm kiếm thần kinh. Khả năng định cấu hình trình kết nối AI/ML trong Dịch vụ OpenSearch giúp đơn giản hóa quá trình hydrat hóa vectơ bằng cách thực hiện tích hợp với các mô hình bên ngoài một cách tự nhiên. Bạn có thể tạo chỉ mục tìm kiếm thần kinh trong vài phút bằng cách sử dụng quy trình nhập thần kinh và tìm kiếm thần kinh sử dụng ID mô hình để tạo ra vectơ nhúng nhanh chóng trong quá trình nhập và tìm kiếm.

Để tìm hiểu thêm về các trình kết nối AI/ML này, hãy tham khảo Trình kết nối AI của Amazon OpenSearch Service cho các dịch vụ AWS, Tích hợp mẫu AWS CloudFormation để tìm kiếm ngữ nghĩaTạo trình kết nối cho nền tảng ML của bên thứ ba.


Về các tác giả

Aruna Govindaraju là Kiến trúc sư giải pháp chuyên gia tìm kiếm mở của Amazon và đã làm việc với nhiều công cụ tìm kiếm nguồn mở và thương mại. Cô ấy đam mê tìm kiếm, mức độ liên quan và trải nghiệm người dùng. Chuyên môn của cô về mối tương quan giữa các tín hiệu của người dùng cuối với hành vi của công cụ tìm kiếm đã giúp nhiều khách hàng cải thiện trải nghiệm tìm kiếm của họ.

Dagney Braun là Giám đốc sản phẩm chính tại AWS tập trung vào OpenSearch.

Dấu thời gian:

Thêm từ Dữ liệu lớn AWS