Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Como distribuir o Vector Search, o Atlas Search e os nós de pesquisa com o Atlas Kubernetes Operator

Rutuja Rajwade, Tim Kelly10 min read • Published Dec 20, 2024 • Updated Dec 20, 2024
KubernetesIAPesquisa vetorialAtlas
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
O Atlas Kubernetes Operator permite que os usuários do Kubernetes gerenciem recursos do Atlas usando as mesmas ferramentas e processos que já empregam para seus serviços existentes em qualquer oferta do Kubernetes, como Amazon Web Services EKS ou Red Hat OpenShift. Ele funciona estendendo a API do Kubernetes por meio de recursos personalizados (CR), permitindo aos desenvolvedores gerenciar recursos MongoDB como objetos nativos do Kubernetes. Os desenvolvedores podem aplicar arquivos de configuração de definição de recurso personalizado para blocos de construção do Atlas no cluster Kubernetes em que o Atlas Operator está instalado, e o Atlas Kubernetes Operator automatiza a aplicação dessa configuração por meio da API de Administração do Atlas .
Agora, as equipes cujos aplicativos RAG são sustentados pelo Kubernetes podem aproveitar os recursos personalizados do Atlas Vector Search, Atlas Search e Nós de pesquisa.
O Atlas Vector Search libera todo o potencial dos seus dados, independentemente de serem estruturados ou não estruturados, aproveitando o aumento da popularização e do uso de IA e LLMs para resolver desafios críticos de negócios. Isso é possível devido ao fato de o Vector Search fazer parte da plataforma de dados para desenvolvedores MongoDB Atlas , que começa com nosso modelo flexível de dados de documento e API unificada, fornecendo uma experiência consistente.
O Atlas Search adiciona uma pesquisa poderosa e relevante de texto completo aos seus dados. Um índice simples do Atlas Search em sua coleção tornará todos os campos de string pesquisáveis e pode fornecer melhorias drásticas na experiência do usuário ao encontrar conteúdo relevante rapidamente.
Tanto o Atlas Vector Search quanto o Atlas Search fornecem arquitetura dedicada de nós de pesquisa, permitindo uma melhor otimização para o nível correto de recursos para necessidades específicas de volume de trabalho. Os nós de pesquisa fornecem infraestrutura dedicada para volumes de trabalho de Atlas Search e Atlas Vector Search , permitindo otimizar os recursos de computação e dimensionar totalmente as necessidades de pesquisa, independentemente do banco de banco de dados. Os nós de pesquisa oferecem melhor desempenho em escala, proporcionando isolamento do volume de trabalho e maior disponibilidade. Em alguns casos, vimos um tempo de query 60% mais rápido para as cargas de trabalho de alguns usuários, aproveitando a query simultânea nos nós de pesquisa.
Neste tutorial, mostraremos como implementar recursos do Atlas Search e Vector Search usando os conjuntos de dados de exemplo do MongoDB e o Atlas Kubernetes Operator.
Pré-requisitos
Antes de começar, verifique se temos a seguinte configuração e pronta:
  • Uma conta do MongoDB Atlas
  • Um cluster de Kubernetes executando com nós executando processadores com a arquitetura x86-64, AMD64 ou ARM64
  • Chaves API associadas à sua organização para configurar o acesso do Atlas Kubernetes Operator ao Atlas
  • Minikube, Docker, Kubectl e jq (versão.1 6 ou superior) instalados **

Configurar nosso ID da organização e chaves de API

Primeiro, precisaremos instalar o operador em um cluster Kubernetes em execução. Certifique-se de que ela esteja executando processadores com a866464arquitetura x -, AMD ou64 ARM. Neste exemplo, estamos executando um cluster Kubernetes usando Minikube e Docker, e usando o Kubectl para aplicar comandos.
Se você ainda não tiver uma conta do Atlas, pode cadastre-se para uma.
Depois de fazer login em nossa conta Atlas , primeiro criaremos chaves de API para uso pelo operador.
No canto superior esquerdo, clique no menu suspenso “Access Manager” e na guia Chaves de API. Clique em “Create API Key.”
Página do Atlas Organization Access Manager
Observação: se quiser que o Atlas Kubernetes Operator crie um novo projeto do Atlas para trabalhar, você precisará criar e usar as chaves de API de uma organização. Para um projeto existente, você precisará criá-los para um projeto. Para este exemplo, criaremos um novo projeto Atlas. Para qualquer tipo de projeto, é prática recomendada configurar uma lista de acesso de API.
Aqui, inseriremos um nome para nossas chaves de API (por exemplo, Chaves de Vector Search /AJO) e selecionaremos a função da organização . Devemos atribuir à chave de API a função de organização Organization Project Creator ou superior.
Página da UI do Atlas “Create API Keys”
A partir daí, encontraremos um conjunto de chaves de API exclusivas geradas para você. Certifique-se de salvá-los em algum lugar seguro. Depois de sairmos desta página, não poderemos recuperá-los!

Instalando o Atlas Kubernetes Operator

Em seguida, instalaremos/distribuiremos o operador no cluster Kubernetes que temos em execução.
Uma vez implementado, o Atlas Kubernetes Operator pode monitorar recursos e eventos em um único ou múltiplos namespaces Kubernetes. Essa capacidade permite que o operador gerencie os recursos personalizados do MongoDB Atlas de forma abrangente em todo o cluster Kubernetes ou em namespaces designados específicos.
Para este exemplo, configuraremos o operador para observar todos os namespaces em nosso cluster, mas você pode aprender como configurar o operador para observar um único namespace em nossa documentação do Atlas Kubernetes Operator.
Usaremos o seguinte comando em nosso terminal:
1kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/v2.3.1/deploy/all-in-one.yaml
Certifique-se de substituir o <version> pela atualização mais recente no seguinte formato: v.xx2(por exemplo.2.3.1 v).
Verifique a instalação:
1kubectl get pods -n mongodb-atlas-system

Crie um segredo com suas chaves de API e ID da organização

Em seguida, criaremos um segredo no Kubernetes. Um segredo do Kubernetes é um objeto usado para armazenar e gerenciar informações confidenciais, como senhas, tokens OAuth e chaves SSH, com segurança em um cluster Kubernetes. Nesse caso, serão as chaves de API que você criou anteriormente.
Se você usar o armazenamento externo de segredos, não precisará colocar informações confidenciais diretamente nos segredosdo Kubernetes. Para saber mais, consulte Configurar Armazenamento Secreto.
Digite o comando a seguir e substitua <atlas_organization_id> pelo ID da organização, <atlas_api_public_key> pela chave pública da API e <atlas_api_private_key> pela chave privada.
Solução de problemas: se o comando a seguir produzir um erro, tente executar o comando sem aspas (por exemplo, –”from-literal=orgId=<atlas_organization_id>” \)
1kubectl create secret generic mongodb-atlas-operator-api-key \
2 --from-literal="orgId=<atlas_organization_id>" \
3 --from-literal="publicApiKey=<atlas_api_public_key>" \
4 --from-literal="privateApiKey=<atlas_api_private_key>" \
5 -n mongodb-atlas-system
Em seguida, usamos o seguinte comando para rotular nosso segredo:
1kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system

Criar um recurso personalizado do projeto Atlas

Os projetos nos permitem isolar diferentes ambientes de banco de dados de dados (por exemplo, ambientes de desenvolvimento/qualidade de produção) uns dos outros, bem como de usuários/equipes. Aqui, usaremos o operador para criar um projeto na UI do Atlas por meio de um recurso personalizado do projeto do Atlas .
Em seguida, inserimos o seguinte comando em nosso terminal.
1cat <<EOF | kubectl apply -f -
2apiVersion: atlas.mongodb.com/v1
3kind: AtlasProject
4metadata:
5 name: my-project
6spec:
7 name: Test Atlas Operator Project
8 projectIpAccessList:
9 - cidrBlock: "0.0.0.0/0"
10 comment: "Allowing access to database from everywhere (only for Demo!)"
11EOF
Observação: os comandos acima adicionarão o CIDR 0.0.0.0/0 à sua lista de acesso IP, se inserido como está. Este CIDR permite que qualquer cliente se conecte ao cluster do Atlas. Não use este endereço IP em produção.
Se você estiver trabalhando em um projeto existente no Atlas, certifique-se de alterar name: my-project para o nome do seu projeto no Atlas e atualizar o cidrBlock para seu endereço IP atual.
Depois de inserir este comando, podemos verificar nossa UI do Atlas . Devemos ver um projeto criado na UI do Atlas chamado "Test Atlas Operator Project."
Página da UI do Atlas “Projects”

Habilite o Atlas Search e o Vector Search em um sistema do Atlas

Os sistemas são nossas instâncias do MongoDB executadas em um provedor de nuvem. Aqui, configuraremos nossas implantações e aprenderemos como habilitar o Atlas Search e o Atlas Vector Search.

O que é o Atlas Search?

A pesquisa de texto permite que os usuários encontrem rapidamente informações relevantes inserindo apenas algumas palavras-chave e permitindo que os usuários verifiquem grandes volumes de dados. Quando uma query é inserida, o mecanismo de pesquisa de texto vasculha nossos documentos indexados para localizar e retornar os documentos mais relevantes para nossa query, com base nas palavras-chave. OAtlas Search é uma boa solução para queries que exigem correspondências exatas ou quase exatas em que o significado semântica abrangente não é tão crítico. Pense em fazer compras on-line, procurando pijamas grandes Masculinos.
Habilitar este recurso requer uma implantação do Atlas . Abaixo está a AtlasDeployment configuração atualizada do para habilitar o Atlas Search.
Esta é a configuração básica do sistema:
1apiVersion: atlas.mongodb.com/v1
2kind: AtlasDeployment
3metadata:
4 name: my-atlas-cluster
5 namespace: mongodb-atlas-system
6spec:
7 deploymentSpec:
8 backupEnabled: true
9 clusterType: REPLICASET
10 name: Test-cluster-M10
11 replicationSpecs:
12 - regionConfigs:
13 - backingProviderName: AWS
14 electableSpecs:
15 instanceSize: M10
16 nodeCount: 3
17 providerName: AWS
18 regionName: US_EAST_1
19 priority: 7
20 terminationProtectionEnabled: false
21 projectRef:
22 name: my-project
23 namespace: mongodb-atlas-system
Para habilitar o Atlas Search, adicione o seguinte searchIndexes campo AtlasDeployment ao:
1apiVersion: atlas.mongodb.com/v1
2kind: AtlasDeployment
3metadata:
4 name: my-atlas-cluster
5 namespace: mongodb-atlas-system
6spec:
7 deploymentSpec:
8 backupEnabled: true
9 clusterType: REPLICASET
10 name: Test-cluster-M10
11 replicationSpecs:
12 - regionConfigs:
13 - backingProviderName: AWS
14 electableSpecs:
15 instanceSize: M10
16 nodeCount: 3
17 providerName: AWS
18 regionName: US_EAST_1
19 priority: 7
20 searchIndexes:
21 - DBName: sample_airbnb
22 collectionName: listingsAndReviews
23 name: my-index
24 search:
25 mappings:
26 dynamic: true
27 searchConfigurationRef:
28 name: atlassearchindexconfig-sample
29 namespace: mongodb-atlas-system
30 type: search
31 terminationProtectionEnabled: false
32 projectRef:
33 name: my-project
34 namespace: mongodb-atlas-system

Campos principais na configuração:

  • DBName: especifica o nome do banco de banco de dados (por exemplo, sample_airbnb)
  • collectionName: especifica a collection para a qual o índice é criado (por exemplo, listingsAndReviews)
  • type: especifica o tipo de índice, que neste caso é search
  • searchConfigurationRef: referencia um AtlasSearchIndexConfig para configurações reutilizáveis
Salve a configuração em um arquivo YAML (por exemplo, atlas-search-config.yaml) e aplique-a usando o seguinte comando:
1kubectl apply -f atlas-search-config.yaml

exemplo de AtlasSearchIndexConfig :

1apiVersion: atlas.mongodb.com/v1
2kind: AtlasSearchIndexConfig
3metadata:
4 name: atlassearchindexconfig-sample
5 namespace: mongodb-atlas-system
6spec:
7 analyzer: lucene.standard
8 searchAnalyzer: lucene.standard
Esta configuração pode ser compartilhada entre várias implantações, reduzindo a duplicação. Para mais informações, visite a documentação do Atlas Search.
Diagrama para Configuração Atlas Compartilhada

O que é o Atlas Vector Search?

O Atlas Vector Search é como usar uma bússola em um mar de dados, orientando você para o que é mais semanticamente relevante em vez de apenas combinar palavras. Os mecanismos de pesquisa tradicionais dependem de palavras-chave, à procura de termos ou padrões exatos no texto. A pesquisa vetorial adiciona uma nova perspectiva à forma como você encontra os dados que procura — tem tudo a ver com significado.
Visualize cada fragmento de dados não estruturados (músicas, documentos, imagens etc.) como um único ponto em um espaço multidimensional, mapeado com base em seu significado ou contexto subjacente. Esses pontos, ou incorporações vetoriais, são representações numéricas de dados aprenderam por modelos de machine learning. Uma query é transformada em um ponto semelhante, e o Vector Search encontra as correspondências mais próximas nesse espaço, mesmo que as palavras não correspondam diretamente.
É a tecnologia por trás de como o Edge recomenda músicas que compartilham um tom Emocional semelhante à sua lista de reprodução favorita, como as plataformas e-commerce sugerem produtos que se alinham com seu histórico de navegação e como os mecanismos de pesquisa de imagens encontram fotos visualmente semelhantes com base em uma imagem carregada. Com ferramentas como o MongoDB Atlas Vector Search, agora é mais fácil liberar todo o potencial dos dados não estruturados e entregar valor por meio de aplicativos do mundo real.
Como o Atlas Search, ativar o Atlas Vector Search requer uma atualização na AtlasDeployment configuração. Abaixo está um exemplo de sistema com o Vector Search ativado:
1apiVersion: atlas.mongodb.com/v1
2kind: AtlasDeployment
3metadata:
4 name: my-atlas-cluster
5 namespace: mongodb-atlas-system
6spec:
7 deploymentSpec:
8 backupEnabled: true
9 clusterType: REPLICASET
10 name: Test-cluster-M10
11 replicationSpecs:
12 - regionConfigs:
13 - backingProviderName: AWS
14 electableSpecs:
15 instanceSize: M10
16 nodeCount: 3
17 providerName: AWS
18 regionName: US_EAST_1
19 priority: 7
20 searchIndexes:
21 - DBName: sample_airbnb
22 collectionName: listingsAndReviews
23 name: vector-index
24 vectorSearch:
25 fields: |
26 [
27 {"description": {"type": "vector"}}
28 ]
29 type: vectorSearch
30 terminationProtectionEnabled: false
31 projectRef:
32 name: my-project
33 namespace: mongodb-atlas-system

Campos principais na configuração do Vector Search :

  • DBName: Nome do banco de banco de dados (por exemplo, sample_airbnb)
  • collectionName: Nome da coleção para o índice vetorial (por exemplo, listingsAndReviews)
  • type: Especifica o tipo de índice, defina como vectorSearch
  • fields: Define os campos a serem indexados como vetores. Neste exemplo, o description campo no sample_airbnb conjunto de dados é indexado
Salve esta configuração em um arquivo YAML (por exemplo, atlas-vector-search-config.yaml) e aplique-a com:
1kubectl apply -f atlas-vector-search-config.yaml
Nota importante: ao contrário do Atlas Search, oAtlas Vector Search não exige um AtlasSearchIndexConfig recurso separado porque as configurações são específicas para cada sistema e não reutilizáveis em vários sistemas. Para mais informações, consulte a documentação do MongoDB Atlas Vector Search.
Com essas configurações, seu sistema do Atlas oferece suporte ao Atlas Search e ao Atlas Vector Search. Na interface do usuário do Atlas , verifique os índices na guia Índices em sua coleção. Essa plataforma unificada permite armazenar e pesquisar dados operacionais, metadados e vetoriais sem problemas, eliminando a necessidade de vários sistemas.

O que são nós de Atlas Search ?

Os nós de Atlas Search são recursos criados especificamente no MongoDB Atlas para infraestrutura dedicada para os volumes detrabalho do Atlas Search eVector Search .

Como funcionam os nós de pesquisa?

Em clusters M10 ou superior, em clusters Atlas executando o MongoDB v6.0 ou superior, podemos configurar os nós de pesquisa separadamente dos nós do banco de dados de dados.
  1. Capacidade dedicada para pesquisa: os nós de pesquisa
    não fazem parte do cluster principal do banco de dados de dados — eles são uma camada separada otimizada especificamente para a pesquisa de queries. Isso significa que não haverá mais concorrência entre a pesquisa e suas cargas de trabalho transacionais por CPU ou memória.
  2. Dimensionamento independente: à
    medida que seu aplicação cresce, você pode dimensionar os nós de pesquisa independentemente do seu banco de dados de dados. Mais usuários estão martelando sua barra de pesquisa? Basta adicionar mais nós sem tocar no resto do cluster.

Por que usar os nós do Atlas Search ?

  1. Queries mais rápidas:
    ao transferir a pesquisa para nós especializados, você obtém tempos de resposta mais rápidos, mesmo para queries complexas, seja pesquisa de palavras-chave ou similaridade vetorial.
  2. Escale de forma independente:
    o uso excessivo de pesquisas não sobrecarregará seu banco de dados de dados . Precisa de mais poder de pesquisa? Dimensione apenas os nós de pesquisa enquanto o banco de dados de dados é executado ininterruptamente.
  3. Sem conflito de recursos:
    com as operações de pesquisa e banco de dados de dados tratadas separadamente, a contenção de recursos é coisa do passado. Seu banco de dados de dados continua funcionando, mesmo durante o alto tráfego de query de pesquisa .
  4. Custos otimizados:
    pague apenas pela capacidade de pesquisa necessária. Em vez de provisionar em excesso nós de banco de dados de dados para lidar com a pesquisa, você pode dimensionar os nós de pesquisa de forma independente e economizar.
  5. Experiência aprimorada do desenvolvedor:
    use uma única API unificada no banco de dados de dados e nas operações de pesquisa. Crie um índice de pesquisa com alguns cliques ou uma única chamada de API.

Quando você deve usar Nós de Pesquisa?

  • Pesquisa de alto volume:
    se a sua aplicação depende de pesquisas constantes e de alta velocidade , como o e-commerce, o streaming multimédia ou as plataformas sociais
  • Funcionalidades de IA:
    Quando você estiver executando o Atlas Vector Search para queries semânticas, como recomendações de produtos ou alimentar chatbots com compreensão contextual
  • Isolamento de volume de trabalho :
    quando você deseja garantir que a pesquisa não interfira nas operações principais do banco de dados, como gravações e análises.

Adicionar nós de pesquisa com o Atlas Kubernetes Operator

Para adicionar nós de pesquisa, inclua o searchNodes campo na AtlasDeployment configuração:
1apiVersion: atlas.mongodb.com/v1
2kind: AtlasDeployment
3metadata:
4 name: my-atlas-cluster
5 namespace: mongodb-atlas-system
6spec:
7 deploymentSpec:
8 backupEnabled: true
9 clusterType: REPLICASET
10 name: Test-cluster-M10
11 replicationSpecs:
12 - regionConfigs:
13 - backingProviderName: AWS
14 electableSpecs:
15 instanceSize: M10
16 nodeCount: 3
17 additionalNodeSpecs:
18 searchNodes:
19 - instanceSize: M10
20 nodeCount: 2
21 providerName: AWS
22 regionName: US_EAST_1
23 priority: 7
24 terminationProtectionEnabled: false
25 projectRef:
26 name: my-project
27 namespace: mongodb-atlas-system

Campos principais na configuração:

  • searchNodes: especifique o tamanho (instanceSize) e o número (nodeCount) de nós de pesquisa dedicados.
  • Dimensionamento independente: você pode dimensionar os Nós de Pesquisa independentemente dos nós primários do banco de dados de dados.
Salve a configuração atualizada em um arquivo YAML (por exemplo, atlas-search-nodes-config.yaml) e aplique-a usando:
1kubectl apply -f atlas-search-nodes-config.yaml
Isso garante que nosso MongoDB Atlas inclua nós de pesquisa dedicados, otimizando o desempenho da query de pesquisa enquanto isola as cargas de trabalho de pesquisa de suas principais operações de banco de dados de dados.
Agora, se você quiser saber mais sobre como criar usuários de banco de dados de dados e como obter uma string de conexão para sua aplicação, abordamos todas essas etapas em Como implantar o MongoDB Atlas com o Atlas Kubernetes Operator.

Conclusão

Neste tutorial, você viu como distribuir o Atlas Search, o Vector Search e os nós de pesquisa usando o Atlas Kubernetes Operator. Essas ferramentas facilitam o gerenciamento dos recursos de pesquisa avançada diretamente no seu banco de dados de dados, esteja você lidando com queries de texto completo, fazendo recomendações ou criando aplicativos que exigem compreensão semântica.
Ao isolar as cargas de trabalho de pesquisa com os nós de pesquisa, você pode manter o desempenho do banco de dados de dados sem problemas enquanto dimensiona a pesquisa de forma independente. Com o Atlas Kubernetes Operator, você pode trazer o MongoDB para seus fluxos de trabalho existentes, mantendo tudo consistente e gerenciável em sua infraestrutura.
Agora, sua configuração está pronta para lidar com cargas de trabalho de pesquisa escaláveis e de alto desempenho. Quer se trate de oferecer suporte a aplicativos em tempo real ou queries complexas, o MongoDB Atlas oferece suporte.
Se quiser saber mais, vá até o Centro de desenvolvedores, onde você pode aprender MongoDB orquestração com o Spring & Atlas Kubernetes Operator, ou vá para os Fóruns da MongoDB Community para nos fazer perguntas ou ver o que outras pessoas estão fazendo com o MongoDB.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Início rápido

Começando com o Atlas e a API de consulta do MongoDB


Oct 01, 2024 | 11 min read
Tutorial

Indexe qualquer coisa, pesquise tudo: Vector Search escalável com IA replicada, MongoDB e Hookdeck


Dec 16, 2024 | 20 min read
Tutorial

Como criar um sistema RAG avançado com recuperação autoquery


Sep 12, 2024 | 21 min read
Tutorial

Combinando seu banco de dados com o Azure Blob Storage usando o Data Federation


Oct 08, 2024 | 7 min read
Sumário