Aumentando a relevância da pesquisa: enriquecimento semântico automático na Amazon OpenEnseart Serverlessless


Os mecanismos de pesquisa tradicionais dependem da correspondência de palavras-palavras (referida como Pesquisa lexical) para encontrar resultados para consultas. Embora isso funcione bem para consultas específicas, como números de modelos de televisão, ele luta com pesquisas mais abstratas. Por exemplo, ao procurar “sapatos para a praia”, uma pesquisa lexical apenas corresponde a palavras individuais “sapatos”, “praia”, “para” e “o” em itens de catálogo, potencialmente ausentes de produtos relevantes como “sandálias resistentes à água” ou “calçados de surf” que não contêm os termos exatos de pesquisa.

Grandes modelos de linguagem (LLMS) Crie incorporações densas de vetor para o texto que expandem a recuperação além dos limites individuais das palavras para incluir o contexto em que as palavras são usadas. As incorporações densas do vetor capturam a relação entre sapatos e praias, aprendendo com que frequência eles ocorrem juntos, permitindo uma melhor recuperação para obter mais consultas abstratas através do que é chamado Pesquisa semântica.

Os vetores esparsos combinam os benefícios da pesquisa lexical e semântica. O processo começa com um tokenizador de palavras para criar um conjunto limitado de tokens a partir do texto. Um modelo de transformador atribui pesos a esses tokens. Durante a pesquisa, o sistema calcula o produto de ponto dos pesos nos tokens (do conjunto reduzido) da consulta com tokens do documento de destino. Você obtém uma pontuação combinada dos termos (tokens) cujos pesos são altos para a consulta e o alvo. Os vetores esparsos codificam informações semânticas, como vetores densos, e fornecem a correspondência de palavras-palavras através do produto de ponto, oferecendo uma correspondência híbrida lexical-semantica. Para uma compreensão detalhada das incorporações esparsas e densas do vetor, visite Melhorando a recuperação de documentos com codificadores semânticos esparsos No weblog OpenEarch.

Enriquecimento semântico automático para Amazon OpenSearch Sem servidor Torna a implementação da pesquisa semântica com vetores esparsos sem esforço. Agora você pode experimentar melhorias de relevância da pesquisa e implantar para a produção com apenas alguns cliques, exigindo comprometimento a longo prazo ou investimento inicial. Nesta postagem, mostramos como o enriquecimento semântico automático take away o atrito e torna a implementação da pesquisa semântica de dados de texto sem costura, com instruções passo a passo para aprimorar sua funcionalidade de pesquisa.

Enriquecimento semântico automático

Você já poderia melhorar a pontuação de relevância da pesquisa além da pontuação lexical padrão do OpenSearch com o OKAPI BM25 Algoritmo, integrando modelos densos de vetor e vetor esparso para pesquisa semântica usando a estrutura do conector da OpenEarch. No entanto, a implementação da pesquisa semântica no OpenEarch Serverless tem sido complexa e cara, exigindo seleção, hospedagem e integração de modelos com uma coleção OpenEarch Serverless.

O enriquecimento semântico automático permite codificar automaticamente seus campos de texto em suas coleções sem servidor Opensearch como vetores esparsos, apenas definindo o tipo de campo. Durante a ingestão, o OpenSearch sem servidor processa automaticamente os dados por meio de um serviço gerenciado aprendizado de máquina (ML) Modelo, convertendo texto em vetores esparsos no formato nativo do Lucene.

O enriquecimento semântico automático suporta opções apenas em inglês e multilíngues. A variante multilíngue apóia os seguintes idiomas: árabe, bengali, chinês, inglês, finlandês, francês, hindi, indonésio, japonês, coreano, persa, russo, espanhol, suaíli e telugu.

Detalhes do modelo e desempenho

O enriquecimento semântico automático usa um modelo esparso pré-treinado, gerenciado por serviços, que funciona efetivamente sem a necessidade de ajuste fino personalizado. O modelo analisa os campos que você especifica, expandindo -os em vetores esparsos com base em associações aprendidas de diversos dados de treinamento. Os termos expandidos e seus pesos significativos são armazenados no formato nativo do índice Lucene para recuperação eficiente. Nós otimizamos este processo usando modo somente de documentoonde a codificação acontece apenas durante a ingestão de dados. As consultas de pesquisa são meramente tokenizadas, em vez de processadas através do modelo escasso, tornando a solução econômica e com desempenho.

Nossa validação de desempenho durante o desenvolvimento de recursos usou o Sra. Marco DataSet de recuperação de passagem, com passagens com média de 334 caracteres. Para pontuação de relevância, medimos o ganho cumulativo médio de desconto normalizado (NDCG) para os 10 primeiros resultados de pesquisa (NDCG@10) no Beir referência para conteúdo em inglês e NDCG médio@10 em Miracl para conteúdo multilíngue. Avaliamos a latência por meio do lado do cliente, 90º percentil (P90) e resposta de pesquisa P90 levou valores. Esses benchmarks fornecem indicadores de desempenho da linha de base para a relevância da pesquisa e os tempos de resposta.

A tabela a seguir mostra a referência automática de enriquecimento semântico.

LinguagemMelhoria de relevânciaP90 Latência de pesquisa
Inglês20,0% em relação à pesquisa lexical7,7% menor latência sobre a pesquisa lexical (BM25 é 26 ms e o enriquecimento semântico automático é de 24 ms)
Multilíngue105,1% em relação à pesquisa lexical38,4% mais alta latência sobre a pesquisa lexical (BM25 é 26 ms e o enriquecimento semântico automático é de 36 ms)

Dada a natureza única de cada carga de trabalho, incentivamos você a avaliar esse recurso em seu ambiente de desenvolvimento usando seus próprios critérios de benchmarking antes de tomar decisões de implementação.

Preço

OpenEarch Serverless Payments Enriquecimento semântico automático com base nas unidades de computação do Opensearch (OCUS) consumidas durante a geração vetorial esparsa no tempo de indexação. Você é cobrado apenas pelo uso actual durante a indexação. Você pode monitorar esse consumo usando o Amazon CloudWatch métrica SemanticSearchOCU. Para detalhes específicos sobre os limites do token do modelo e a taxa de transferência de quantity por OCU, visite Amazon OpenSearch Service Preço.

Pré -requisitos

Antes de criar um índice automático de enriquecimento semântico, verifique se você recebeu as permissões necessárias para a tarefa. Entre em contato com um administrador de conta para obter assistência, se necessário. Para trabalhar com enriquecimento semântico automático no OpenEarch Serverless, você precisa do nível da conta AWS Identification and Entry Administration (IAM) Permissões mostradas na seguinte política. As permissões servem aos seguintes propósitos:

  • O aoss:*Index As permissões IAM são usadas para criar e gerenciar índices.
  • O aoss:APIAccessAll A permissão do IAM é usada para executar operações da API OpenEarch.
{
"Model": "2012-10-17",
    "Assertion": (
        {
            "Impact": "Permit",
            "Motion": (
              "aoss:CreateIndex",
              "aoss:GetIndex",
              "aoss:APIAccessAll",
            ),
            "Useful resource": ""
        }
    )
}

Você também precisa de uma política de acesso a dados sem servidor Opensearch para criar e gerenciar índices e recursos associados na coleção. Para mais informações, visite Controle de acesso a dados para a Amazon OpenEnsearch sem servidor No Guia do desenvolvedor sem servidor Opensearch. Use a seguinte política:

(
    {
        "Description": "Create index permission",
        "Guidelines": (
            {
                "ResourceType": "index",
                "Useful resource": ("index//*"),
                "Permission": (
                  "aoss:CreateIndex", 
                  "aoss:DescribeIndex",                  
"aoss:ReadDocument",
    "aoss:WriteDocument"
                )
            }
        ),
        "Principal": (
            "arn:aws:iam:::position/"
        )
    },
    {
        "Description": "Create pipeline permission",
        "Guidelines": (
            {
                "ResourceType": "assortment",
                "Useful resource": ("assortment/"),
                "Permission": (
                  "aoss:CreateCollectionItems",
                  "aoss:"
                )
            }
        ),
        "Principal": (
            "arn:aws:iam:::position/"
        )
    },
    {
        "Description": "Create mannequin permission",
        "Guidelines": (
            {
                "ResourceType": "mannequin",
                "Useful resource": ("mannequin//*"),
                "Permission": ("aoss:CreateMLResources")
            }
        ),
        "Principal": (
            "arn:aws:iam:::position/"
        )
    },
)

Para acessar coleções particulares, configure a seguinte política de rede:

(
   {
      "Description":"Allow automated semantic enrichment in personal assortment",
      "Guidelines":(
         {
            "ResourceType":"assortment",
            "Useful resource":(
               "assortment/"
            )
         }
      ),
      "AllowFromPublic":false,
      "SourceServices":(
         "aoss.amazonaws.com"
      ),
   }
)

Configurar um índice de enriquecimento semântico automático

Para configurar um índice automático de enriquecimento semântico, siga estas etapas:

  1. Para criar um índice de enriquecimento semântico automático usando o Interface da linha de comando da AWS (AWS CLI), use o comando create-index:
aws opensearchserverless create-index 
    --id  
    --index-name  
    --index-schema 

  1. Para descrever o índice criado, use o seguinte comando:
aws opensearchserverless create-index 
    --id  
    --index-name  

Você também pode usar AWS CloudFormation modelos (Sort: AWS::OpenSearchServerless::CollectionIndex) ou o Console de gerenciamento da AWS Para criar pesquisa semântica durante o provisionamento de coleções, bem como após a criação da coleção.

Exemplo: Configuração do índice para pesquisa de catálogo de produtos

Esta seção mostra como configurar um índice de pesquisa de catálogo de produtos. Você implementará a pesquisa semântica no title_semantic campo (usando um modelo inglês). Para o product_id Campo, você manterá a funcionalidade padrão de pesquisa lexical.

No seguinte índice-schema, o title_semantic o campo tem um tipo de campo definido como textual content e tem parâmetro semantic_enrichment definido como standing ENABLED. Definindo o semantic_enrichment O parâmetro permite o enriquecimento semântico automático no title_semantic campo. Você pode usar o language_options campo para especificar qualquer english ou multi-lingual. Para este submit, geramos um campo de título não semântico chamado title_non_semantic. Use o seguinte código:

aws opensearchserverless create-index 
    --id XXXXXXXXX 
    --index-name 'product-catalog' 
    --index-schema '{
    "mappings": {
        "properties": {
            "product_id": {
                "kind": "key phrase"
            },
            "title_semantic": {
                "kind": "textual content",
                "semantic_enrichment": {
                    "standing": "ENABLED",
                    "language_options": "english"
                }
            },
            "title_non_semantic": {
                "kind": "textual content"
            }
        }
    }
}'

Ingestão de dados

Após a criação do índice, você pode ingerir dados por meio de mecanismos de opensearch padrão, incluindo bibliotecas de clientes, APIs REST ou diretamente através de painéis OpenSearch. Aqui está um exemplo de como adicionar vários documentos usando a API em massa nos painéis OpenSearch Dev Fools:

POST _bulk
{"index": {"_index": "product-catalog"}}
{"title_semantic": "Pink sneakers", "title_non_semantic": "Pink sneakers", "product_id": "12345" }
{"index": {"_index": "product-catalog"}}
{"title_semantic": "Black shirt", "title_non_semantic": "Black shirt", "product_id": "6789" }
{"index": {"_index": "product-catalog"}}
{"title_semantic": "Blue hat", "title_non_semantic": "Blue hat", "product_id": "0000" }

Pesquise contra o índice de enriquecimento semântico automático

Depois que os dados forem ingeridos, você pode consultar o índice:

POST product-catalog/_search?dimension=1
{
  "question": {
    "match":{
      "title_semantic":{
        "question": "crimson footwear"
      }
    }
  }
}

O seguinte é a resposta:

{
    "took": 240,
    "timed_out": false,
    "_shards": {
        "whole": 0,
        "profitable": 0,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "whole": {
            "worth": 1,
            "relation": "eq"
        },
        "max_score": 7.6092715,
        "hits": (
            {
                "_index": "product-catalog",
                "_id": "Q61b35YBAkHYIP5jIOWH",
                "_score": 7.6092715,
                "_source": {
                    "title_semantic": "Pink sneakers",
                    "title_non_semantic": "Pink sneakers",
                    "title_semantic_embedding": {
                        "ft": 0.85673976,
                        "gown": 0.48490667,
                        "##put on": 0.26745942,
                        "pants": 0.3588211,
                        "hats": 0.30846077,
                        ...
                    },
                    "product_id": "12345"
                }
            }
        )
    }
}

A pesquisa correspondeu ao documento com sucesso com Pink sneakers Apesar da consulta usando crimson footweardemonstrando o poder da pesquisa semântica. O sistema gerou automaticamente incorporações semânticas para o documento (truncado aqui para a brevidade) que permitem essas correspondências inteligentes com base no significado em vez de palavras -chave exatas.

Comparando os resultados da pesquisa

Ao executar uma consulta semelhante contra o índice não -semântico title_non_semanticvocê pode confirmar que os campos não semânticos não podem pesquisar com base no contexto:

GET product-catalog/_search?dimension=1
{
  "question": {
    "match":{
      "title_non_semantic":{
        "question": "crimson footwear"
      }
    }
  }
}

A seguir, a resposta de pesquisa:

{
    "took": 398,
    "timed_out": ,
    "_shards": {
        "whole": 0,
        "profitable": 0,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "whole": {
            "worth": 0,
            "relation": "eq"
        },
        "max_score": ,
        "hits": ()
    }
}

Limitações do enriquecimento semântico automático

A pesquisa semântica automática é mais eficaz quando aplicada a campos de tamanho pequeno a médio, contendo conteúdo de linguagem pure, como títulos de filmes, descrições de produtos, críticas e resumos. Embora a pesquisa semântica aumente a relevância para a maioria dos casos de uso, pode não ser perfect para certos cenários:

  • Documentos muito longos – O modelo esparso atual processa apenas os primeiros 8.192 tokens de cada documento para o inglês. Para documentos multilíngues, são 512 tokens. Para artigos longos, considere a implementação de Chunking de documentos para garantir o processamento completo do conteúdo.
  • Análise de log Cargas de trabalho – O enriquecimento semântico aumenta significativamente o tamanho do índice, o que pode ser desnecessário para a análise de log, onde a correspondência exata normalmente é suficiente. O contexto semântico adicional raramente melhora a eficácia da pesquisa de logs suficiente para justificar o aumento dos requisitos de armazenamento.

Considere essas limitações ao decidir se deve implementar o enriquecimento semântico automático para o seu caso de uso específico.

Conclusão

O enriquecimento semântico automático marca um avanço significativo para tornar os recursos sofisticados de pesquisa acessíveis a todos os usuários sem servidor Opensearch. Ao eliminar as complexidades tradicionais da implementação de pesquisa semântica, os desenvolvedores de pesquisa agora podem aprimorar sua funcionalidade de pesquisa com mínimo esforço e custo. Nosso recurso suporta vários idiomas e tipos de coleta, com um modelo de preços de pagamento conforme o uso que o torna economicamente viável para vários casos de uso. Os resultados de referência são promissores, principalmente para pesquisas em inglês, mostrando uma relevância melhorada e a latência reduzida. No entanto, embora a pesquisa semântica aprimore a maioria dos cenários, certos casos de uso, como processar artigos extremamente longos ou análise de logs, podem se beneficiar de abordagens alternativas.

Incentivamos você a experimentar esse recurso e descobrir como ele pode otimizar sua implementação de pesquisa para que você possa oferecer melhores experiências de pesquisa sem a sobrecarga de gerenciar a infraestrutura de ML. Confira o vídeo e tecnologia documentação Para detalhes adicionais.


Sobre os autores

Aumentando a relevância da pesquisa: enriquecimento semântico automático na Amazon OpenEnseart ServerlesslessJon Handler é diretor de arquitetura de soluções para serviços de pesquisa na Amazon Net Companies, com sede em Palo Alto, CA. Jon trabalha em estreita colaboração com o OpenEarch e o Amazon OpenSearch Service, fornecendo ajuda e orientação a uma ampla gama de clientes que possuem cargas de trabalho de IA generativa, pesquisa e análise de logs para o OpenSearch. Antes de ingressar na AWS, a carreira de Jon como desenvolvedor de software program incluiu quatro anos de codificação de um mecanismo de pesquisa de comércio eletrônico em larga escala. Jon é bacharel em artes pela Universidade da Pensilvânia e um mestrado em ciências e um Ph. D. em ciência da computação e inteligência synthetic da Northwestern College.

Arjun Kumar Giri é um engenheiro principal da AWS que trabalha no projeto OpenEarch. Ele trabalha principalmente na inteligência synthetic e no aprendizado de máquina (AI/ml) da OpenEarch (AI/ML) e na pesquisa semântica. Ele é apaixonado por IA, ML e construção de sistemas escaláveis.

Siddhant Gupta é um gerente sênior de produto (técnico) da AWS, liderando a inovação de IA dentro do projeto OpenEarch de Hyderabad, Índia. Com uma profunda compreensão da inteligência synthetic e do aprendizado de máquina, a Siddhant Architects apresenta as capacidades avançadas de IA avançadas, permitindo que os clientes aproveitem todo o potencial da IA sem exigir uma ampla experiência técnica. Seu trabalho integra perfeitamente as tecnologias de IA de ponta em sistemas escaláveis, preenchendo a lacuna entre modelos complexos de IA e aplicativos práticos e amigáveis.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *