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
APLICATIVO COMPLETO
Avalie esse Tutorial
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.
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
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.
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.”
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.
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!
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:
1 kubectl 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:
1 kubectl get pods -n mongodb-atlas-system
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>” \
)1 kubectl 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:
1 kubectl label secret mongodb-atlas-operator-api-key atlas.mongodb.com/type=credentials -n mongodb-atlas-system
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.
1 cat <<EOF | kubectl apply -f - 2 apiVersion: atlas.mongodb.com/v1 3 kind: AtlasProject 4 metadata: 5 name: my-project 6 spec: 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!)" 11 EOF
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."
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.
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:
1 apiVersion: atlas.mongodb.com/v1 2 kind: AtlasDeployment 3 metadata: 4 name: my-atlas-cluster 5 namespace: mongodb-atlas-system 6 spec: 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:1 apiVersion: atlas.mongodb.com/v1 2 kind: AtlasDeployment 3 metadata: 4 name: my-atlas-cluster 5 namespace: mongodb-atlas-system 6 spec: 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
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 umAtlasSearchIndexConfig
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:1 kubectl apply -f atlas-search-config.yaml
1 apiVersion: atlas.mongodb.com/v1 2 kind: AtlasSearchIndexConfig 3 metadata: 4 name: atlassearchindexconfig-sample 5 namespace: mongodb-atlas-system 6 spec: 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.
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:1 apiVersion: atlas.mongodb.com/v1 2 kind: AtlasDeployment 3 metadata: 4 name: my-atlas-cluster 5 namespace: mongodb-atlas-system 6 spec: 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
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 comovectorSearch
fields
: Define os campos a serem indexados como vetores. Neste exemplo, odescription
campo nosample_airbnb
conjunto de dados é indexado
Salve esta configuração em um arquivo YAML (por exemplo,
atlas-vector-search-config.yaml
) e aplique-a com:1 kubectl 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.
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 .
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.
- 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. - 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.
- 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. - 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. - 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 . - 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. - 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.
- 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.
Para adicionar nós de pesquisa, inclua o
searchNodes
campo na AtlasDeployment
configuração:1 apiVersion: atlas.mongodb.com/v1 2 kind: AtlasDeployment 3 metadata: 4 name: my-atlas-cluster 5 namespace: mongodb-atlas-system 6 spec: 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
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:1 kubectl 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.
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.