É com grande satisfação que anunciamos a disponibilidade geral (GA) do Shell do Couchbase (cbsh)uma poderosa ferramenta de linha de comando criada com base no nushell projetado para tornar suas interações com o Couchbase mais fáceis e eficientes. O shell do Couchbase oferece suporte a recursos de pesquisa vetorial que pode ser usado para potencializar os aplicativos GenAI, permitindo que os aplicativos recuperem itens semanticamente semelhantes com base em incorporação de vetores representações dos itens em um espaço multidimensional. Com essa versão, a cbsh apresenta pesquisa vetorial permitindo que os usuários criem índices vetoriais e realizem pesquisas vetoriais (como pesquisa de similaridade) diretamente da linha de comando. Isso permite muitos casos de uso para os usuários, como teste e modificação de parâmetros de modelo, consulta de vetores ad hoc e criação de scripts a partir de uma interface de linha de comando simples.
O que é o Couchbase Shell?
O Couchbase Shell é uma ferramenta CLI de código aberto adaptada para desenvolvedores e administradores que trabalham com Couchbase Capella e Couchbase Server. Ele permite que os usuários monitorem, consultem, carreguem dados, exportem dados e realizem pesquisas vetoriais completas rapidamente por meio de uma ferramenta de linha de comando simples, facilmente extensível e com recursos modernos, como realce de sintaxe, preenchimento automático inteligente, ajuda contextual e mensagens de erro.
A ferramenta está disponível como um Couchbase Apoio da comunidade projeto.
Compatível com Linux, Mac, Windows (visite instalação para obter a lista completa).
Principais recursos
-
- Pipelines de comando, realce de sintaxe e completador automático
- Gerenciamento de conexões
- Carregando dados
- Exportação de dados
- Pesquisa de vetores
- Suporte à operação de chave-valor (KV)
- Consulta de dados usando SQL++
Aqui estão alguns dos recursos de destaque do Couchbase Shell.
Pipelines de comando, realce de sintaxe e completador automático
Em resumo, dutos permitem a combinação de vários comandos, semelhante aos pipes (|) do Linux. O Cbsh se baseia nisso adicionando comandos personalizados do Couchbase para interagir com seu cluster. Além disso, dependendo do seu shell, ele ativará o destaque de sintaxe e sugerirá o preenchimento automático. Por exemplo, o seguinte usa comandos básicos do nushell para abrir um arquivo JSON local e, em seguida, formatá-lo em uma tabela:
Observe que o realce da sintaxe pode ser diferente para você com base no shell de sua escolha
1 2 3 4 5 6 7 8 9 |
> aberto usuário.json | envoltório conteúdo | inserir id {$em.conteúdo.id} ╭─────────┬─────────────────────────────╮ │ │ ╭────────────┬────────────╮ │ │ conteúdo │ │ id │ 20397 │ │ │ │ │ nome de usuário │ Charlie │ │ │ │ ╰────────────┴────────────╯ │ │ id │ 20397 │ ╰─────────┴─────────────────────────────╯ |
Uma vez formatado da seguinte maneira você pode canalizar o resultado para o cbsh personalizado comando doc upsert para inserir o JSON em seu cluster do Couchbase. O pipeline completo para abrir o documento, formatar e depois inserir é:
1 |
> aberto usuário.json | envoltório conteúdo | inserir id {$em.conteúdo.id} | doc upsert |
Gerenciamento de conexões
O Couchbase Shell simplifica gerenciamento de conexõespermitindo que você estabeleça e gerencie conexões com o Couchbase com o mínimo de esforço. Os usuários têm duas opções para se conectar ao Couchbase:
Gerenciamento de conexão em linha de comando (argumentos da CLI)
Conectar-se ao Couchbase Shell por meio de argumentos da CLI é simples e permite que você comece a trabalhar rapidamente com seus clusters do Couchbase a partir da linha de comando. Os principais argumentos que você precisará fornecer são a string de conexão do cluster, seu nome de usuário e sua senha. Além disso, você pode especificar outros parâmetros, como o bucket com o qual deseja interagir, o escopo e a coleção específicos e até mesmo o mecanismo de autenticação, se necessário.
Exemplo de conexão básica
Para conectar-se a um cluster do CouchbaseVocê pode usar o seguinte comando:
1 |
> ./cbsh --nome de usuário Administrador --conector 127.0.0.1 -p senha --desativar-tls |
Conexão a um bucket específico
Para se conectar a um bucket em um cluster do Couchbase, você pode usar o seguinte comando:
1 |
> ./cbsh --nome de usuário Administrador --conector 127.0.0.1 -p senha --desativar-tls -balde meu cesto -coleção mycollection |
Conexão via arquivo de configuração
Na primeira vez em que você executar o ./cbsh você receberá um prompt perguntando se deseja criar um arquivo de configuração. Se você escolher "yes", o shell apresentará uma série de solicitações para fornecer informações sobre o cluster padrão. Se você escolher "no", ele tentará se conectar a um cluster local em execução no localhost usando o nome de usuário "Administrator" e a senha "password". O arquivo de configuração deve ser chamado de configuração e ser colocado em um .cbsh no seu diretório pessoal ou no diretório a partir do qual o shell está sendo executado. Mais detalhes podem ser encontrados em nosso site de documentação.
O exemplo de configuração abaixo mostra como definir dois clusters diferentes - um no Capella e outro em um cluster local do Couchbase. Opcionalmente, os usuários também podem adicionar uma configuração de modelo de linguagem grande (LLM) que descreveremos mais tarde na seção Pesquisa de vetores.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
versão = 1 [[agrupamento]] identificador = "capella" conector = "couchbases://uri.cloud.couchbase.com" usuário-exibição-nome = "Vishal Dhiman" nome de usuário = "vishal" senha = "senha" # Substitua esse valor pela senha das credenciais de acesso ao banco de dados [[agrupamento]] identificador = "local" conector = "couchbase://127.0.0.1" padrão-balde = "amostra de viagem" nome de usuário = "vishal" senha = "senha" dados-tempo limite = "5s" conectar-tempo limite = "1m 15s" pesquisa-tempo limite = "1m 15s" análises-tempo limite = "1m 15s" gerenciamento-tempo limite = "1m 15s" transação-tempo limite = "1m 15s" tls-habilitado = falso [[lm]] identificador = "OpenAI-small" provedor = "OpenAI" embed_model = "text-embedding-3-small" chat_model = "gpt-4o-mini" chave api = "model_key" #[llm] #provider = "Gemini" #api_key = "gogetyourown" |
Carregando dados
Carregando dados no Couchbase usando o Couchbase Shell é um processo simples que permite preencher rapidamente o banco de dados com opções para carregar dados:
-
- Arquivos JSON de documento único
- Arquivos JSON de vários documentos
- Arquivos CSV
- Qualquer chamada à CLI que produza texto estruturado compatível com o nushell
Os usuários podem usar aberto ou de para primeiro carregar dados no Couchbase Shell, que podem ser enviados ao Couchbase Server usando importação de documentos ou inserção de documentos comandos.
Visite nossa documentação para amostras de código e carregar receitas de dados.
Exportação de dados
A exportação de dados do Couchbase usando o Couchbase Shell é uma maneira eficiente de fazer backup dos dados, movê-los entre ambientes ou simplesmente extraí-los para análise. A ferramenta cbsh fornece um comando simples para exportar dados diretamente do cluster do Couchbase para arquivos JSON, facilitando o manuseio de dados fora do ambiente do banco de dados. As contrapartidas de exportação para aberto e de, são salvar e para. Você pode usar os dois comandos para obter dados tabulares do shell e armazená-los em arquivos com o formato de destino necessário.
Visite nossa documentação para amostras de código e exportar receitas de dados.
Pesquisa vetorial
O principal recurso dessa versão é o suporte para pesquisa vetorial. Esse recurso permite que você realize pesquisas de similaridade em um determinado corpus de documentos, tudo a partir de uma interface de linha de comando (CLI). Isso é muito útil para experimentar e testar seus modelos e realizar pesquisas vetoriais ad-hoc facilmente por meio da linha de comando.
A pesquisa vetorial no Couchbase é alimentada pela integração de modelos de IA/ML que convertem texto, imagens ou outros tipos de dados em vetores. Esses vetores podem então ser comparados para encontrar itens semelhantes, proporcionando uma experiência de pesquisa mais relevante em comparação com as abordagens tradicionais baseadas em palavras-chave.
Antes de iniciar a pesquisa de vetores, os usuários precisam definir qual modelo de linguagem grande (LLM) desejam usar. Atualmente, o cbsh é compatível com os seguintes LLMs:
-
- OpenAI
- Gemini (Google)
- Bedrock (AWS)
Visite o Documentação do LLM para amostras de configuração.
Normalmente, a pesquisa de vetores é um processo de três etapas:
1 - Gerar embeddings para campos em uma coleção
Normalmente, isso é feito quando os documentos são criados ou atualizados ou, se já houver um conjunto de dados existente, é feito como uma operação em massa. Com o cbsh, isso pode ser feito usando o comando vetor enrich-doc comando. Por exemplo, o exemplo a seguir tem 3 partes canalizadas juntas:
-
- Consulta de documentos na coleção de referência.
- Enviar o conteúdo da parte anterior do campo conjunto de resultados para o LLM para gerar embeddings de vetores. Nessa etapa, o campo especificado é enviado ao ponto de extremidade do LLM e a resposta é capturada. Observe que você deve ter a definição do LLM configurada no arquivo de configuração. Se você tiver vários modelos que deseja experimentar, poderá definir vários LLMs no arquivo de configuração e alternar o LLM usando cb-env LLM <identifier> comando. Todos os LLMs retornam um número padrão de dimensões, mas você pode substituí-lo usando o comando -dimensões opções. Esse comando, por padrão, armazena o vetor em um campo chamado fieldVector, que é contentVector em nosso exemplo, já que o nome do nosso campo é conteúdo. Você pode substituir o nome padrão do campo vetorial usando o parâmetro -vectorField opção.
- Salve os embeddings de vetor inserindo-os novamente no banco de dados.
Esse comando envia o campo especificado (conteúdo) para o LLM definido no arquivo de configuração, que gera e retorna embeddings de vetor. Os embeddings de vetor retornados são salvos no documento, supondo que o documento canalizado tenha um campo de identificação e conteúdo. Caso contrário, o usuário pode especificar um ID e um campo de conteúdo personalizados.
Observe que esse comando pressupõe que o bucket padrão esteja definido como amostra de viagem.
1 2 3 4 5 6 7 8 9 10 |
> consulta 'SELECT * FROM `travel-sample.inventory.landmark`' | vetor enriquecer-doc --dimensão 1024 conteúdo | doc upsert --balde "amostra de viagem" --escopo "inventário" --coleção "marco" Lote tamanho limitado para 2047 Incorporação lote 1/3 Incorporação lote 2/3 Incorporação lote 3/3 ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ processado │ sucesso │ falha │ falhas │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 4495 │ 4495 │ 0 │ │ capela │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
2 - Criar um índice vetorial para as incorporações salvas
Isso é sempre executado após a etapa 1. Com o cbsh, isso pode ser feito usando o comando criar índice O comando a seguir criará um novo índice de vetor chamado índice do vetor de conteúdo de referência sobre vetores com dimensão 1024. Observe que as dimensões especificadas aqui devem corresponder ao valor das dimensões na etapa 1. Se você usar o valor padrão de dimensão do seu LLM, poderá verificar esse número na documentação do LLM ou simplesmente contar o número de elementos do vetor que foram gerados na etapa 1:
1 |
> vetor criar-índice --balde "amostra de viagem" --escopo "inventário" --coleção "marco" marco histórico-contentVector-índice contentVector 1024 |
3 - Gerar incorporação de vetor para a palavra-chave de pesquisa
Etapa 3: Gerar incorporação de vetor para uma palavra-chave de pesquisa usando vetor enriquecer-texto e realizar uma pesquisa vetorial no índice vetorial usando o comando pesquisa vetorial comando:
1 2 3 4 5 6 7 8 9 |
> "atividades físicas" | vetor enriquecer-texto --dimensão 1024 | vetor pesquisa marco histórico-contentVector-índice contentVector Incorporação lote 1/1 ╭───┬────────────────┬────────────┬─────────────────────╮ │ # │ id │ score │ cluster │ ├───┼────────────────┼────────────┼─────────────────────┤ │ 0 │ marco histórico_11956 │ 0.92583716 │ capela teste de cbs │ │ 1 │ marco histórico_37999 │ 0.81547827 │ capela teste de cbs │ │ 2 │ marco histórico_22054 │ 0.81547827 │ capela teste de cbs │ ╰───┴────────────────┴────────────┴─────────────────────╯ |
Por fim, o resultado de uma pesquisa vetorial pode ser canalizado para um documento ou subdoc obter para recuperar o conteúdo dos documentos encontrados. Além disso, podemos tornar a saída mais bonita imprimindo apenas os campos relevantes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
> "atividades físicas" | vetor enriquecer-texto --dimensão 1024 | vetor pesquisa marco histórico-contentVector-índice contentVector | subdoc obter --coleção marco histórico [título, nome, telefone, e-mail, horas, endereço, conteúdo] | selecionar id conteúdo Incorporação lote 1/1 ╭───┬────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ # │ id │ content │ ├───┼────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 0 │ marco histórico_11956 │ ╭─────────┬─────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Londres/Hornchurch │ │ │ │ │ │ nome │ Hornchurch Esportes Centro │ │ │ │ │ │ telefone │ │ │ │ │ │ │ e-mail │ │ │ │ │ │ │ horas │ │ │ │ │ │ │ endereço │ Hornchurch Estrada, Hornchurch, RM11 1JU │ │ │ │ │ │ conteúdo │ Você pode encontrar vários atividades como natação, abóbora, cricket e academia. │ │ │ │ │ ╰─────────┴─────────────────────────────────────────────────────────────────────────╯ │ │ 1 │ marco histórico_22054 │ ╭─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Pembrokeshire │ │ │ │ │ │ nome │ Celta Busca Coasteering │ │ │ │ │ │ telefone │ +44 1348 881530 │ │ │ │ │ │ e-mail │ informações@celticquestcoasteering.com │ │ │ │ │ │ horas │ Aberto todos ano, 9h30 & 14h diário (Reserva é essenciais) │ │ │ │ │ │ endereço │ │ │ │ │ │ │ conteúdo │ Água-com base aventura atividade que pode incluir penhasco saltar, aventura natação, embaralhar escalada e mais. │ │ │ │ │ ╰─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ 2 │ marco histórico_37999 │ ╭─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Abereiddy │ │ │ │ │ │ nome │ Celta Busca Coasteering │ │ │ │ │ │ telefone │ +44 1348 881530 │ │ │ │ │ │ e-mail │ informações@celticquestcoasteering.com │ │ │ │ │ │ horas │ Aberto todos ano, 9h30 & 14h diário (Reserva é essenciais) │ │ │ │ │ │ endereço │ │ │ │ │ │ │ conteúdo │ Água-com base aventura atividade que pode incluir penhasco saltar, aventura natação, embaralhar escalada e mais. │ │ │ │ │ ╰─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰───┴────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ |
Suporte à operação Key-Value (KV)
O shell do Couchbase suporta nativamente a execução de operações de valor-chave. As operações de valor-chave são exclusivas do Couchbase e fornecem operações CRUD muito rápidas para documentos armazenados no Couchbase.
Comando cbsh para ler documentos por meio do serviço KV
Você pode recuperar um documento com doc get:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
> doc obter --coleção companhia aérea companhia aérea_10 ╭───┬────────────┬──────────────────────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ content │ cas │ error │ cluster │ ├───┼────────────┼──────────────────────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ companhia aérea_10 │ ╭──────────┬───────────────╮ │ 1722951864428789760 │ │ capela │ │ │ │ │ id │ 10 │ │ │ │ │ │ │ │ │ tipo │ companhia aérea │ │ │ │ │ │ │ │ │ nome │ 40-Milha Ar │ │ │ │ │ │ │ │ │ iata │ Q5 │ │ │ │ │ │ │ │ │ icao │ MLA │ │ │ │ │ │ │ │ │ indicativo │ MILHA-AR │ │ │ │ │ │ │ │ │ país │ Unidos Estados │ │ │ │ │ │ │ │ ╰──────────┴───────────────╯ │ │ │ │ ╰───┴────────────┴──────────────────────────────┴─────────────────────┴───────┴─────────╯ |
Para distinguir o conteúdo real dos metadados, o conteúdo é aninhado no campo de conteúdo. Se você quiser ter tudo no nível superior, poderá usar o pipe para o comando flatten:
1 2 3 4 5 6 |
> doc obter --coleção companhia aérea companhia aérea_10 | achatar ╭───┬────────────┬────────────┬─────────┬─────────────┬──────┬──────┬──────────┬───────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ content_id │ type │ name │ iata │ icao │ callsign │ country │ cas │ error │ cluster │ ├───┼────────────┼────────────┼─────────┼─────────────┼──────┼──────┼──────────┼───────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ companhia aérea_10 │ 10 │ companhia aérea │ 40-Milha Ar │ Q5 │ MLA │ MILHA-AR │ Unidos Estados │ 1722951864428789760 │ │ capela │ ╰───┴────────────┴────────────┴─────────┴─────────────┴──────┴──────┴──────────┴───────────────┴─────────────────────┴───────┴─────────╯ |
E você pode obter vários documentos usando um comando como o abaixo:
1 2 3 4 5 6 7 8 |
> [companhia aérea_10 companhia aérea_10748 companhia aérea_137] | envoltório id | doc obter | achatar ╭───┬───────────────┬────────────┬─────────┬─────────────┬──────┬──────┬──────────┬───────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ content_id │ type │ name │ iata │ icao │ callsign │ country │ cas │ error │ cluster │ ├───┼───────────────┼────────────┼─────────┼─────────────┼──────┼──────┼──────────┼───────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ companhia aérea_10 │ 10 │ companhia aérea │ 40-Milha Ar │ Q5 │ MLA │ MILHA-AR │ Unidos Estados │ 1722951864428789760 │ │ capela │ │ 1 │ companhia aérea_10748 │ 10748 │ companhia aérea │ Locair │ ZQ │ LOC │ LOCAIR │ Unidos Estados │ 1722951863465607168 │ │ capela │ │ 2 │ companhia aérea_137 │ 137 │ companhia aérea │ Ar França │ AF │ AFR │ AERONAVES │ França │ 1722951862822764544 │ │ capela │ ╰───┴───────────────┴────────────┴─────────┴─────────────┴──────┴──────┴──────────┴───────────────┴─────────────────────┴───────┴─────────╯ |
Comando cbsh para gravar documentos por meio do serviço KV
Os documentos podem ser alterados com inserção de documentos, inserção de documentos e doc replace.
Todos esses três comandos recebem argumentos semelhantes. Se você quiser alterar apenas um único documento, passar o ID e o conteúdo como argumentos é a maneira mais simples:
1 2 3 4 5 6 |
> doc upsert meu-doc {"hello": "mundo"} ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ processado │ sucesso │ falha │ falhas │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 1 │ 1 │ 0 │ │ capela │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
Os documentos podem ser removidos com remoção de documentos.
1 2 3 4 5 6 |
> doc remover meu-doc ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ processado │ sucesso │ falha │ falhas │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 1 │ 1 │ 0 │ │ capela │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
Há muitas outras operações de KV que você pode fazer, como subdoc get. Acesse nossa documentação para saber mais sobre as operações do KV.
Consultar dados usando SQL++
Em execução Consultas SQL++ usando o Shell do Couchbase é um dos recursos mais avançados da ferramenta, permitindo que você interaja com os dados do Couchbase de maneira flexível e eficiente. O SQL++, uma extensão do SQL projetada para dados JSON, permite que você realize consultas complexas, inclusive uniões, agregações e subconsultas, diretamente da linha de comando com o cbsh.
Por exemplo, podemos ver quantas companhias aéreas estão operando na "França" nos dados da amostra de viagens:
1 2 3 4 5 6 |
> consulta "select count(*) as french_airlines_count from airline where country='France'" ╭───┬───────────────────────┬─────────╮ │ # │ french_airlines_count │ cluster │ ├───┼───────────────────────┼─────────┤ │ 0 │ 21 │ capela │ ╰───┴───────────────────────┴─────────╯ |
O SQL++ é ainda mais avançado, pois os usuários podem usar parâmetros nomeados e também usar piping (|) para redirecionar o conjunto de resultados do comando de consulta para outros comandos. Visite nosso documentação para obter mais detalhes.
Comece a usar
Para ajudá-lo a começar a usar o cbsh, preparamos um guia de introdução detalhado em nosso documentação site. Aqui está uma visão geral rápida de como começar:
-
- Obtendo o cbsh: Faça o download do cbsh para seu sistema operacional no site Site do shell do Couchbase.
- Conecte-se ao seu cluster: A maneira recomendada é criar um arquivo de configuração conforme especificado em arquivo de configuração documentação.
- Executar operações CRUD, executar consultasou Pesquisa de vetorese aproveitar os recursos avançados do Couchbase. Para que você possa começar rapidamente, nossa documentação fornece receitas para alguns casos de uso comuns.
Suporte à comunidade e ao código aberto
Acreditamos no poder da comunidade e no desenvolvimento de código aberto. Couchbase cbsh é de código abertoe incentivamos você a contribuir, fornecer feedback e participar da conversa. Participe do Fóruns do Couchbase ou Discórdia do Couchbase.
Leitura adicional
Para saber mais, confira nosso site de documentação. Ele entra em mais detalhes sobre vários comandos e configurações suportados, especialmente em relação às credenciais de conexão, e exemplos de comandos de piping juntos para alcançar os resultados desejados.
-
- Faça o download e instale o Couchbase Shell - cbsh
- Sistemas operacionais suportados estão listados em nosso site de documentação
Feliz shell de comando!
A equipe do Couchbase