Moc wyszukiwania neuronowego za pomocą złączy AI/ML w usłudze Amazon OpenSearch | Usługi internetowe Amazona

Moc wyszukiwania neuronowego za pomocą złączy AI/ML w usłudze Amazon OpenSearch | Usługi internetowe Amazona

Węzeł źródłowy: 3068091

Wraz z uruchomieniem funkcji wyszukiwania neuronowego dla Usługa Amazon OpenSearch w OpenSearch 2.9 integracja z modelami AI/ML w celu wspomagania wyszukiwania semantycznego i innych zastosowań jest teraz łatwa. Usługa OpenSearch obsługuje zarówno wyszukiwanie leksykalne, jak i wektorowe od czasu wprowadzenia funkcji k-najbliższego sąsiada (k-NN) w 2020 r.; jednak skonfigurowanie wyszukiwania semantycznego wymagało zbudowania platformy umożliwiającej integrację modeli uczenia maszynowego (ML) na potrzeby pozyskiwania i wyszukiwania. Funkcja wyszukiwania neuronowego ułatwia transformację tekstu na wektor podczas przetwarzania i wyszukiwania. Kiedy podczas wyszukiwania używasz zapytania neuronowego, zapytanie jest tłumaczone na osadzenie wektora, a k-NN jest używane do zwrócenia najbliższego osadzania wektora z korpusu.

Aby korzystać z wyszukiwania neuronowego, należy skonfigurować model ML. Zalecamy skonfigurowanie łączników AI/ML z usługami AWS AI i ML (takimi jak Amazon Sage Maker or Amazońska skała macierzysta) lub alternatywy innych firm. Począwszy od wersji 2.9 usługi OpenSearch, złącza AI/ML integrują się z wyszukiwaniem neuronowym, aby uprościć i operacjonalizować tłumaczenie korpusu danych i zapytań na osadzanie wektorów, eliminując w ten sposób znaczną część złożoności związanej z nawadnianiem i wyszukiwaniem wektorów.

W tym poście pokazujemy, jak skonfigurować łączniki AI/ML do modeli zewnętrznych za pomocą konsoli usługi OpenSearch.

Omówienie rozwiązania

W szczególności ten post przeprowadzi Cię przez proces łączenia się z modelem w SageMaker. Następnie przeprowadzimy Cię przez proces używania łącznika do konfiguracji wyszukiwania semantycznego w usłudze OpenSearch jako przykład przypadku użycia obsługiwanego poprzez połączenie z modelem ML. Integracje Amazon Bedrock i SageMaker są obecnie obsługiwane w interfejsie konsoli OpenSearch Service, a lista integracji własnych i innych firm obsługiwanych przez interfejs użytkownika będzie stale rosnąć.

W przypadku modeli nieobsługiwanych przez interfejs użytkownika można je zamiast tego skonfigurować przy użyciu dostępnych interfejsów API i Plany ML. Aby uzyskać więcej informacji, zobacz Wprowadzenie do modeli OpenSearch. Schematy każdego złącza można znaleźć w pliku Repozytorium ML Commons na GitHubie.

Wymagania wstępne

Przed podłączeniem modelu poprzez konsolę usługi OpenSearch utwórz domenę usługi OpenSearch. Mapa AWS Zarządzanie tożsamością i dostępem (IAM) rola z nazwy LambdaInvokeOpenSearchMLCommonsRole jako rola backendu w ml_full_access rolę za pomocą wtyczki Security w panelach OpenSearch, jak pokazano na poniższym filmie. Przepływ pracy związany z integracją usługi OpenSearch jest wstępnie wypełniony, aby móc korzystać z LambdaInvokeOpenSearchMLCommonsRole Domyślna rola IAM służąca do tworzenia łącznika między domeną usługi OpenSearch a modelem wdrożonym w SageMaker. Jeśli używasz niestandardowej roli uprawnień w integracji konsoli OpenSearch Service, upewnij się, że niestandardowa rola jest mapowana jako rola zaplecza za pomocą ml_full_access uprawnienia przed wdrożeniem szablonu.

Wdróż model za pomocą AWS CloudFormation

Poniższy film pokazuje, jak używać konsoli OpenSearch Service do wdrożenia modelu w ciągu kilku minut w serwisie Amazon SageMaker i wygenerowania identyfikatora modelu za pośrednictwem złączy AI. Pierwszym krokiem jest wybór Integracje w panelu nawigacyjnym konsoli AWS OpenSearch Service, który prowadzi do listy dostępnych integracji. Integrację konfiguruje się poprzez interfejs użytkownika, który poprosi Cię o wprowadzenie niezbędnych danych.

Aby skonfigurować integrację, wystarczy podać punkt końcowy domeny usługi OpenSearch i podać nazwę modelu, aby jednoznacznie zidentyfikować połączenie modelu. Domyślnie szablon wdraża model transformatorów zdań Hugging Face, djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

Kiedy wybierzesz Utwórz stos, nastąpi przekierowanie do Tworzenie chmury AWS konsola. Szablon CloudFormation wdraża architekturę szczegółowo przedstawioną na poniższym diagramie.

Stos CloudFormation tworzy plik AWS Lambda aplikacja, która wdraża model z Usługa Amazon Simple Storage (Amazon S3), tworzy złącze i generuje identyfikator modelu na wyjściu. Następnie możesz użyć tego identyfikatora modelu do utworzenia indeksu semantycznego.

Jeśli domyślny model składający się wyłącznie z MiniLM-L6-v2 nie spełnia Twoich oczekiwań, możesz wdrożyć dowolny wybrany model osadzania tekstu na wybranym hoście modelu (SageMaker lub Amazon Bedrock), udostępniając artefakty modelu jako dostępny obiekt S3. Alternatywnie możesz wybrać jedną z poniższych opcji wstępnie wytrenowane modele językowe i wdróż go w SageMaker. Aby uzyskać instrukcje dotyczące konfigurowania punktu końcowego i modeli, zobacz Dostępne obrazy Amazon SageMaker.

SageMaker to w pełni zarządzana usługa, która łączy szeroki zestaw narzędzi umożliwiających wydajne i niedrogie ML w każdym przypadku użycia, zapewniając kluczowe korzyści, takie jak monitorowanie modeli, hosting bezserwerowy i automatyzacja przepływu pracy na potrzeby ciągłego szkolenia i wdrażania. SageMaker umożliwia hostowanie i zarządzanie cyklem życia modeli osadzania tekstu oraz wykorzystywanie ich do obsługi zapytań wyszukiwania semantycznego w usłudze OpenSearch Service. Po połączeniu SageMaker hostuje Twoje modele, a usługa OpenSearch służy do wysyłania zapytań na podstawie wyników wnioskowania z SageMaker.

Wyświetl wdrożony model za pomocą pulpitów nawigacyjnych OpenSearch

Aby sprawdzić, czy szablon CloudFormation pomyślnie wdrożył model w domenie usługi OpenSearch i uzyskał identyfikator modelu, możesz użyć interfejsu API REST GET ML Commons za pośrednictwem narzędzi deweloperskich OpenSearch Dashboards.

Interfejs API REST GET _plugins udostępnia teraz dodatkowe interfejsy API umożliwiające również przeglądanie stanu modelu. Poniższe polecenie pozwala zobaczyć status zdalnego modelu:

GET _plugins/_ml/models/<modelid>

Jak pokazano na poniższym zrzucie ekranu, a DEPLOYED Stan w odpowiedzi wskazuje, że model został pomyślnie wdrożony w klastrze usługi OpenSearch.

Alternatywnie możesz wyświetlić model wdrożony w domenie usługi OpenSearch za pomocą Nauczanie maszynowe strona paneli kontrolnych OpenSearch.

Na tej stronie znajdują się informacje o modelu i stany wszystkich wdrożonych modeli.

Utwórz potok neuronowy przy użyciu identyfikatora modelu

Gdy status modelu jest wyświetlany jako albo DEPLOYED w Dev Tools lub zielonym i Odpowiadając w panelach kontrolnych OpenSearch możesz użyć identyfikatora modelu do zbudowania potoku pozyskiwania danych neuronowych. Poniższy potok pozyskiwania jest uruchamiany w narzędziach deweloperskich OpenSearch Dashboards w Twojej domenie. Pamiętaj, aby zastąpić identyfikator modelu unikalnym identyfikatorem wygenerowanym dla modelu wdrożonego w Twojej domenie.

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"
        }
      }
    }
  ]
}

Utwórz indeks wyszukiwania semantycznego, używając potoku neuronowego jako potoku domyślnego

Możesz teraz zdefiniować mapowanie indeksu przy użyciu domyślnego potoku skonfigurowanego do korzystania z nowego potoku neuronowego utworzonego w poprzednim kroku. Upewnij się, że pola wektorowe są zadeklarowane jako knn_vector a wymiary są odpowiednie dla modelu wdrożonego w SageMaker. Jeśli zachowałeś domyślną konfigurację do wdrożenia modelu składającego się wyłącznie z MiniLM-L6-v2 w SageMaker, zachowaj następujące ustawienia bez zmian i uruchom polecenie w Narzędziach deweloperskich.

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" 
      } 
    }
  }
}

Pozyskuj przykładowe dokumenty, aby wygenerować wektory

W przypadku tej wersji demonstracyjnej możesz pozyskać plik przykładowy katalog produktów w sklepie detalicznym do nowego semantic_demostore indeks. Zastąp nazwę użytkownika, hasło i punkt końcowy domeny informacjami o swojej domenie i pozyskuj surowe dane do usługi OpenSearch:

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

Sprawdź nowy indeks semantic_demostore

Teraz, gdy już pozyskałeś zbiór danych do domeny usługi OpenSearch, sprawdź, czy wymagane wektory zostały wygenerowane za pomocą prostego wyszukiwania w celu pobrania wszystkich pól. Sprawdź, czy pola zdefiniowane jako knn_vectors mają wymagane wektory.

Porównaj wyszukiwanie leksykalne i wyszukiwanie semantyczne oparte na wyszukiwaniu neuronowym za pomocą narzędzia Porównaj wyniki wyszukiwania

Połączenia Narzędzie Porównaj wyniki wyszukiwania w OpenSearch Dashboards jest dostępna dla obciążeń produkcyjnych. Możesz przejść do Porównaj wyniki wyszukiwania i porównaj wyniki zapytań między wyszukiwaniem leksykalnym a wyszukiwaniem neuronowym skonfigurowanym do korzystania z wygenerowanego wcześniej identyfikatora modelu.

Sprzątać

Możesz usunąć utworzone zasoby, postępując zgodnie z instrukcjami zawartymi w tym poście, usuwając stos CloudFormation. Spowoduje to usunięcie zasobów Lambda i zasobnika S3 zawierającego model wdrożony w SageMaker. Wykonaj następujące kroki:

  1. W konsoli AWS CloudFormation przejdź do strony szczegółów stosu.
  2. Dodaj Usuń.

  1. Dodaj Usuń potwierdzać.

Możesz monitorować postęp usuwania stosu w konsoli AWS CloudFormation.

Należy pamiętać, że usunięcie stosu CloudFormation nie powoduje usunięcia modelu wdrożonego w domenie SageMaker i utworzonego łącznika AI/ML. Dzieje się tak, ponieważ te modele i łącznik mogą być powiązane z wieloma indeksami w domenie. Aby konkretnie usunąć model i powiązany z nim łącznik, użyj interfejsów API modelu, jak pokazano na poniższych zrzutach ekranu.

Po pierwsze, undeploy model z pamięci domeny OpenSearch Service:

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

Następnie możesz usunąć model z indeksu modelu:

DELETE /_plugins/_ml/models/<model_id>

Na koniec usuń złącze z indeksu złącza:

DELETE /_plugins/_ml/connectors/<connector_id>

Wnioski

W tym poście dowiesz się, jak wdrożyć model w SageMaker, utworzyć łącznik AI/ML za pomocą konsoli OpenSearch Service i zbudować indeks wyszukiwania neuronowego. Możliwość skonfigurowania łączników AI/ML w usłudze OpenSearch Service upraszcza proces hydratacji wektorów, czyniąc integracje z modelami zewnętrznymi natywnymi. Indeks wyszukiwania neuronowego można utworzyć w ciągu kilku minut, korzystając z potoku pozyskiwania danych neuronowych i wyszukiwania neuronowego korzystającego z identyfikatora modelu do generowania osadzania wektorów na bieżąco podczas pozyskiwania i wyszukiwania.

Aby dowiedzieć się więcej na temat tych złączy AI/ML, zobacz Złącza Amazon OpenSearch Service AI dla usług AWS, Integracja szablonów AWS CloudFormation do wyszukiwania semantycznego, Tworzenie łączników dla platform ML innych firm.


O autorach

Aruna Govindaraju jest architektem rozwiązań Amazon OpenSearch Specialist i współpracował z wieloma wyszukiwarkami komercyjnymi i open source. Pasjonuje się wyszukiwaniem, trafnością i doświadczeniem użytkownika. Jej wiedza na temat korelowania sygnałów użytkowników końcowych z zachowaniami wyszukiwarek pomogła wielu klientom poprawić jakość wyszukiwania.

Dagney Brauna jest głównym menedżerem produktu w AWS zajmującym się OpenSearch.

Znak czasu:

Więcej z Duże zbiory danych AWS!