Nos complace anunciar la disponibilidad general (GA) de Couchbase Shell (cbsh)una potente herramienta de línea de comandos basada en nushell diseñado para hacer tus interacciones con Couchbase más fáciles y eficientes. Couchbase shell soporta potentes capacidades de búsqueda vectorial que puede utilizarse para potenciar las aplicaciones GenAI al permitir que las aplicaciones recuperen elementos semánticamente similares basándose en incrustación vectorial representaciones de los elementos en un espacio multidimensional. Con esta versión, cbsh introduce búsqueda vectorial que permite a los usuarios crear índices vectoriales y realizar búsquedas vectoriales (como la búsqueda de similitudes) directamente desde la línea de comandos. De este modo, los usuarios pueden probar y modificar los parámetros del modelo, realizar consultas vectoriales ad hoc y crear secuencias de comandos desde una sencilla interfaz de línea de comandos.
¿Qué es Couchbase Shell?
Couchbase Shell es una herramienta CLI de código abierto diseñada para desarrolladores y administradores que trabajan con Couchbase Capella y Couchbase Server. Permite a los usuarios supervisar, consultar, cargar datos, exportar datos y realizar búsquedas vectoriales completas de forma rápida a través de una sencilla herramienta de línea de comandos que es fácilmente ampliable y cuenta con funciones modernas como resaltado de sintaxis, autocompletado inteligente, ayuda contextual y mensajes de error.
La herramienta está disponible como Couchbase Apoyo comunitario proyecto.
Compatible con Linux, Mac y Windows (visite instalación para consultar la lista completa).
Características principales
-
- Canalización de comandos, resaltado de sintaxis y autocompletado
- Gestión de conexiones
- Carga de datos
- Exportación de datos
- Búsqueda vectorial
- Soporte de operaciones clave-valor (KV)
- Consulta de datos con SQL
Estas son algunas de las características más destacadas de Couchbase Shell.
Canalización de comandos, resaltado de sintaxis y autocompletado
En nushell, tuberías permiten la combinación de muchos comandos, similar a las tuberías de Linux (|). Cbsh se basa en esto añadiendo comandos personalizados de Couchbase para interactuar con tu cluster. Además, dependiendo de tu shell, habilitará el resaltado de sintaxis y te sugerirá auto-completar. Por ejemplo, lo siguiente usa comandos básicos de nushell para abrir un archivo local JSON, y luego formatearlo en una tabla:
Tenga en cuenta que el resaltado de sintaxis puede ser diferente según el shell que elija
1 2 3 4 5 6 7 8 9 |
> abra usuario.json | envolver contenido | insertar id {$en.contenido.id} ╭─────────┬─────────────────────────────╮ │ │ ╭────────────┬────────────╮ │ │ contenido │ │ id │ 20397 │ │ │ │ │ nombre de usuario │ Charlie │ │ │ │ ╰────────────┴────────────╯ │ │ id │ 20397 │ ╰─────────┴─────────────────────────────╯ |
Una vez con este formato puede canalizar el resultado en el cbsh personalizado comando doc upsert para insertar el JSON en tu cluster Couchbase. La tubería completa para abrir el documento, el formato y luego upsert es:
1 |
> abra usuario.json | envolver contenido | insertar id {$en.contenido.id} | doc upsert |
Gestión de las conexiones
Couchbase Shell simplifica gestión de conexionesCouchbase, lo que le permite establecer y gestionar conexiones a Couchbase con el mínimo esfuerzo. Los usuarios tienen dos opciones para conectarse a Couchbase:
Gestión de conexiones en línea (argumentos CLI)
Conectarse a Couchbase Shell mediante argumentos CLI es sencillo y te permite empezar a trabajar rápidamente con tus clusters de Couchbase desde la línea de comandos. Los argumentos principales que tendrás que proporcionar son la cadena de conexión del cluster, tu nombre de usuario y tu contraseña. Además, puedes especificar otros parámetros como el bucket con el que deseas interactuar, el ámbito específico y la colección, e incluso el mecanismo de autenticación si es necesario.
Ejemplo de conexión básica
A conectarse a un clúster Couchbasepuede utilizar el siguiente comando:
1 |
> ./cbsh --nombre de usuario Administrador --conexión 127.0.0.1 -p contraseña --desactivar-tls |
Conexión a un cubo específico
Para conectarse a un bucket en un cluster Couchbase, puede utilizar el siguiente comando:
1 |
> ./cbsh --nombre de usuario Administrador --conexión 127.0.0.1 -p contraseña --desactivar-tls -cubo mybucket -colección micolección |
Conexión mediante archivo de configuración
La primera vez que ejecute ./cbsh recibirá un mensaje preguntándole si desea crear un archivo de configuración. Si eliges "sí", el intérprete de comandos te ofrecerá una serie de preguntas para que proporciones información sobre tu clúster predeterminado. Si elige "no", intentará conectarse a un clúster local que se ejecute en localhost utilizando el nombre de usuario "Administrator" y la contraseña "password". El archivo de configuración debe llamarse config y se colocará en un .cbsh dot en su directorio personal o en el directorio desde el que se ejecuta el intérprete de órdenes. Encontrará más información en sitio web de documentación.
El siguiente ejemplo de configuración muestra cómo definir dos clústeres diferentes: uno en Capella y otro en un clúster local de Couchbase. Opcionalmente, los usuarios también pueden añadir una configuración de modelo de lenguaje grande (LLM) que describiremos más adelante en la sección Búsqueda vectorial.
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 |
versión = 1 [[grupo]] identificador = "capella" conexión = "couchbases://uri.cloud.couchbase.com" usuario-mostrar-nombre = "Vishal Dhiman" nombre de usuario = "vishal" contraseña = "contraseña" # Sustitúyalo por la contraseña de las credenciales de acceso a la base de datos [[grupo]] identificador = "local" conexión = "couchbase://127.0.0.1" por defecto-cubo = "viaje-muestra" nombre de usuario = "vishal" contraseña = "contraseña" datos-tiempo de espera = "5s" conecte-tiempo de espera = "1m 15s" busque en-tiempo de espera = "1m 15s" análisis-tiempo de espera = "1m 15s" gestión-tiempo de espera = "1m 15s" transacción-tiempo de espera = "1m 15s" tls-habilitado = falso [[llm]] identificador = "OpenAI-pequeño" proveedor = "OpenAI" modelo_incrustado = "text-embedding-3-small" modelo_de_chat = "gpt-4o-mini" clave_api = "clave_modelo" #[llm] #provider = "Gemini" #api_key = "gogetyourown" |
Carga de datos
Carga de datos en Couchbase usando Couchbase Shell es un proceso sencillo que te permite poblar rápidamente tu base de datos con opciones para cargar datos:
-
- Archivos JSON de documento único
- Ficheros JSON de varios documentos
- Archivos CSV
- Cualquier llamada a CLI que produzca texto estructurado soportado por nushell
Los usuarios pueden utilizar abra o de para cargar primero los datos en Couchbase Shell y enviarlos después a Couchbase Server utilizando importación de documentos o doc upsert comandos.
Visite nuestra documentación para muestras de código y cargar recetas de datos.
Exportar datos
Exportar datos desde Couchbase usando Couchbase Shell es una forma poderosa de hacer copias de seguridad de tus datos, moverlos entre entornos, o simplemente extraerlos para su análisis. La herramienta cbsh proporciona un comando directo para exportar datos directamente desde tu cluster de Couchbase a archivos JSON, facilitando el manejo de datos fuera del entorno de la base de datos. Las contrapartidas de exportación a abra y deson guardar y a. Puede utilizar ambos comandos para tomar datos tabulares del shell y almacenarlos en archivos del formato de destino necesario.
Visite nuestra documentación para muestras de código y exportar recetas de datos.
Búsqueda vectorial
La característica principal de esta versión es la compatibilidad con búsqueda vectorial. Esta capacidad le permite realizar búsquedas de similitud en un corpus determinado de documentos, todo desde una interfaz de línea de comandos (CLI). Esto es muy útil para probar sus modelos y realizar búsquedas vectoriales ad hoc fácilmente a través de la línea de comandos.
La búsqueda vectorial en Couchbase está potenciada por la integración de modelos AI/ML que convierten texto, imágenes u otros tipos de datos en vectores. Estos vectores pueden ser comparados para encontrar elementos similares, proporcionando una experiencia de búsqueda más relevante en comparación con los enfoques tradicionales basados en palabras clave.
Antes de iniciar la búsqueda vectorial, los usuarios deben definir qué modelo de lenguaje de gran tamaño (LLM) desean utilizar. Actualmente, cbsh admite los siguientes LLM:
-
- OpenAI
- Géminis (Google)
- Bedrock (AWS)
Visite el Documentación del LLM para ver ejemplos de configuración.
Normalmente, la búsqueda vectorial es un proceso de tres pasos:
1 - Generar incrustaciones para los campos de una colección
Esto suele hacerse cuando se crean o actualizan documentos, o si ya se dispone de un conjunto de datos, hacerlo como una operación masiva. Con cbsh, esto puede lograrse utilizando la función vector enriquecer-doc comando. Por ejemplo, el siguiente ejemplo tiene 3 partes canalizadas juntas:
-
- Consulta de documentos en la colección landmark.
- Envía el contenido de la parte anterior conjunto de resultados a LLM para generar incrustaciones vectoriales. En este paso se envía el campo especificado al endpoint de LLM y se captura la respuesta. Tenga en cuenta que debe tener configurada la definición de LLM en el archivo de configuración. Si tiene varios modelos con los que desea experimentar, puede definir varios LLM en el archivo de configuración y cambiar el LLM utilizando cb-env LLM <identifier> comando. Todos los LLM devuelven un número de dimensiones por defecto, pero se puede anular utilizando el comando -dimensiones opciones. Este comando, por defecto, almacena el vector en un campo llamado fieldVector, que es contentVector en nuestro ejemplo ya que el nombre de nuestro campo es contenido. Puede anular el nombre predeterminado del campo vectorial mediante la opción -campoVectorial opción.
- Guarda los vectores incrustados insertándolos de nuevo en la base de datos.
Este comando envía el campo especificado (contenido) al LLM definido en el archivo de configuración que genera y devuelve incrustaciones vectoriales. Las incrustaciones vectoriales devueltas se guardan en el documento, suponiendo que el documento canalizado tenga un campo de identificación y contenido. Si no es así, el usuario puede especificar un ID y un campo de contenido personalizados.
Tenga en cuenta que este comando asume que el cubo por defecto está configurado como muestra-viaje.
1 2 3 4 5 6 7 8 9 10 |
> consulta 'SELECT * FROM `viaje-muestra.inventario.hito`' | vector enriquecer-doc --dimensión 1024 contenido | doc upsert --cubo "viaje-muestra" --alcance "inventario" --colección "hito" Lote talla limitado a 2047 Inserción lote 1/3 Inserción lote 2/3 Inserción lote 3/3 ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ procesado │ éxito │ fracasado │ fracasos │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 4495 │ 4495 │ 0 │ │ capella │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
2 - Crear un índice vectorial para las incrustaciones guardadas
Siempre se ejecuta después del paso 1. Con cbsh, esto se puede lograr utilizando el comando crear-índice El siguiente comando creará un nuevo índice vectorial llamado landmark-contentVector-index sobre vectores de dimensión 1024. Tenga en cuenta que las dimensiones especificadas aquí deben coincidir con el valor de dimensiones del paso 1. Si utiliza el valor predeterminado de dimensión de su LLM, puede comprobar este número en la documentación de LLM o simplemente contar el número de elementos vectoriales que se generaron en el paso 1:
1 |
> vector crear-índice --cubo "viaje-muestra" --alcance "inventario" --colección "hito" hito-contentVector-índice contentVector 1024 |
3 - Generar la incrustación vectorial de la palabra clave buscada
Paso 3: Generar incrustación vectorial para una palabra clave de búsqueda utilizando vector enriquecer-texto y realice una búsqueda vectorial en el índice vectorial utilizando el comando búsqueda vectorial mando:
1 2 3 4 5 6 7 8 9 |
> "actividades físicas" | vector enriquecer-texto --dimensión 1024 | vector busque en hito-contentVector-índice contentVector Inserción lote 1/1 ╭───┬────────────────┬────────────┬─────────────────────╮ │ # │ id │ puntuación │ cluster │ ├───┼────────────────┼────────────┼─────────────────────┤ │ 0 │ hito_11956 │ 0.92583716 │ capella cbshtesting │ │ 1 │ hito_37999 │ 0.81547827 │ capella cbshtesting │ │ 2 │ hito_22054 │ 0.81547827 │ capella cbshtesting │ ╰───┴────────────────┴────────────┴─────────────────────╯ |
Por último, el resultado de una búsqueda vectorial puede introducirse en un documento o subdocumento consiga para recuperar el contenido de los documentos encontrados. Además, podemos hacer que la salida sea más bonita imprimiendo sólo los 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 |
> "actividades físicas" | vector enriquecer-texto --dimensión 1024 | vector busque en hito-contentVector-índice contentVector | subdoc consiga --colección hito [título, nombre, teléfono, correo electrónico, horas, dirección, contenido] | seleccione id contenido Inserción lote 1/1 ╭───┬────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ # │ id │ contenido │ ├───┼────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ 0 │ hito_11956 │ ╭─────────┬─────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Londres/Hornchurch │ │ │ │ │ │ nombre │ Hornchurch Deportes Centro │ │ │ │ │ │ teléfono │ │ │ │ │ │ │ correo electrónico │ │ │ │ │ │ │ horas │ │ │ │ │ │ │ dirección │ Hornchurch Carretera, Hornchurch, RM11 1JU │ │ │ │ │ │ contenido │ Usted puede encontrar varios actividades como natación, calabaza, cricket y gimnasio. │ │ │ │ │ ╰─────────┴─────────────────────────────────────────────────────────────────────────╯ │ │ 1 │ hito_22054 │ ╭─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Pembrokeshire │ │ │ │ │ │ nombre │ Celta Búsqueda Coasteering │ │ │ │ │ │ teléfono │ +44 1348 881530 │ │ │ │ │ │ correo electrónico │ información@celticquestcoasteering.com │ │ │ │ │ │ horas │ Abrir todos año, 9.30 h & 14h00 diario (Reservas es esencial) │ │ │ │ │ │ dirección │ │ │ │ │ │ │ contenido │ Agua-basado en aventura actividad que puede incluir acantilado saltando, aventura natación, revolver escalada y más. │ │ │ │ │ ╰─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ 2 │ hito_37999 │ ╭─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ │ │ título │ Abereiddy │ │ │ │ │ │ nombre │ Celta Búsqueda Coasteering │ │ │ │ │ │ teléfono │ +44 1348 881530 │ │ │ │ │ │ correo electrónico │ información@celticquestcoasteering.com │ │ │ │ │ │ horas │ Abrir todos año, 9.30 h & 14h00 diario (Reservas es esencial) │ │ │ │ │ │ dirección │ │ │ │ │ │ │ contenido │ Agua-basado en aventura actividad que puede incluir acantilado saltando, aventura natación, revolver escalada y más. │ │ │ │ │ ╰─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰───┴────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ |
Soporte de operaciones clave-valor (KV)
Couchbase shell soporta de forma nativa la realización de operaciones clave-valor. Las operaciones clave-valor son exclusivas de Couchbase y proporcionan operaciones CRUD muy rápidas para documentos almacenados en Couchbase.
Comando cbsh para leer documentos a través del servicio KV
Puede recuperar un documento con doc get:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
> doc consiga --colección aerolínea aerolínea_10 ╭───┬────────────┬──────────────────────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ contenido │ cas │ error │ cluster │ ├───┼────────────┼──────────────────────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ aerolínea_10 │ ╭──────────┬───────────────╮ │ 1722951864428789760 │ │ capella │ │ │ │ │ id │ 10 │ │ │ │ │ │ │ │ │ tipo │ aerolínea │ │ │ │ │ │ │ │ │ nombre │ 40-Milla Aire │ │ │ │ │ │ │ │ │ iata │ Q5 │ │ │ │ │ │ │ │ │ icao │ MLA │ │ │ │ │ │ │ │ │ Indicativo │ MILLA-AIRE │ │ │ │ │ │ │ │ │ país │ Estados Unidos Estados │ │ │ │ │ │ │ │ ╰──────────┴───────────────╯ │ │ │ │ ╰───┴────────────┴──────────────────────────────┴─────────────────────┴───────┴─────────╯ |
Para distinguir el contenido real de los metadatos, el contenido se anida en el campo de contenido. Si desea tenerlo todo en el nivel superior, puede utilizar el comando aplanar:
1 2 3 4 5 6 |
> doc consiga --colección aerolínea aerolínea_10 | aplanar ╭───┬────────────┬────────────┬─────────┬─────────────┬──────┬──────┬──────────┬───────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ content_id │ type │ name │ iata │ icao │ callsign │ country │ cas │ error │ cluster │ ├───┼────────────┼────────────┼─────────┼─────────────┼──────┼──────┼──────────┼───────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ aerolínea_10 │ 10 │ aerolínea │ 40-Milla Aire │ Q5 │ MLA │ MILLA-AIRE │ Estados Unidos Estados │ 1722951864428789760 │ │ capella │ ╰───┴────────────┴────────────┴─────────┴─────────────┴──────┴──────┴──────────┴───────────────┴─────────────────────┴───────┴─────────╯ |
Y puedes obtener múltiples documentos usando un comando como el siguiente:
1 2 3 4 5 6 7 8 |
> [aerolínea_10 aerolínea_10748 aerolínea_137] | envolver id | doc consiga | aplanar ╭───┬───────────────┬────────────┬─────────┬─────────────┬──────┬──────┬──────────┬───────────────┬─────────────────────┬───────┬─────────╮ │ # │ id │ content_id │ type │ name │ iata │ icao │ callsign │ country │ cas │ error │ cluster │ ├───┼───────────────┼────────────┼─────────┼─────────────┼──────┼──────┼──────────┼───────────────┼─────────────────────┼───────┼─────────┤ │ 0 │ aerolínea_10 │ 10 │ aerolínea │ 40-Milla Aire │ Q5 │ MLA │ MILLA-AIRE │ Estados Unidos Estados │ 1722951864428789760 │ │ capella │ │ 1 │ aerolínea_10748 │ 10748 │ aerolínea │ Locair │ ZQ │ LOC │ LOCAIR │ Estados Unidos Estados │ 1722951863465607168 │ │ capella │ │ 2 │ aerolínea_137 │ 137 │ aerolínea │ Aire Francia │ AF │ AFR │ AIRFRANS │ Francia │ 1722951862822764544 │ │ capella │ ╰───┴───────────────┴────────────┴─────────┴─────────────┴──────┴──────┴──────────┴───────────────┴─────────────────────┴───────┴─────────╯ |
Comando cbsh para escribir documentos a través del servicio KV
Los documentos pueden mutarse con insertar documento, doc upsert y reemplazar doc.
Estos tres comandos toman argumentos similares. Si sólo desea modificar un único documento, lo más sencillo es introducir el ID y el contenido como argumentos:
1 2 3 4 5 6 |
> doc upsert mi-doc {"hola": "mundo"} ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ procesado │ éxito │ fracasado │ fracasos │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 1 │ 1 │ 0 │ │ capella │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
Los documentos pueden eliminarse con doc eliminar.
1 2 3 4 5 6 |
> doc eliminar mi-doc ╭───┬───────────┬─────────┬────────┬──────────┬─────────╮ │ # │ procesado │ éxito │ fracasado │ fracasos │ cluster │ ├───┼───────────┼─────────┼────────┼──────────┼─────────┤ │ 0 │ 1 │ 1 │ 0 │ │ capella │ ╰───┴───────────┴─────────┴────────┴──────────┴─────────╯ |
Hay muchas más operaciones KV que puede realizar, como por ejemplo subdoc get. Visite nuestra documentación para obtener más información sobre las operaciones de KV.
Consulta de datos con SQL
Ejecutar Consultas SQL utilizando el Shell de Couchbase es una de las características más potentes de la herramienta, permitiéndote interactuar con tus datos de Couchbase de una manera flexible y eficiente. SQL++, una extensión de SQL diseñada para datos JSON, te permite realizar consultas complejas, incluidas uniones, agregados y subconsultas, directamente desde la línea de comandos con cbsh.
Por ejemplo, podemos ver cuántas aerolíneas operan en "Francia" en los datos de la muestra de viajes:
1 2 3 4 5 6 |
> consulta "select count(*) as french_airlines_count from airline where country='France'" ╭───┬───────────────────────┬─────────╮ │ # │ french_airlines_count │ cluster │ ├───┼───────────────────────┼─────────┤ │ 0 │ 21 │ capella │ ╰───┴───────────────────────┴─────────╯ |
SQL++ es aún más potente, ya que los usuarios pueden utilizar parámetros con nombre y también utilizar canalizaciones (|) para redirigir el conjunto de resultados del comando de consulta a otros comandos. Visite nuestro documentación para más detalles.
Empezar
Para ayudarle a empezar a utilizar cbsh, hemos preparado una guía de iniciación detallada en nuestra sección documentación sitio web. Aquí tienes un breve resumen de cómo empezar:
-
- Obtener cbsh: Descargue cbsh para su sistema operativo desde la página Sitio web shell de Couchbase.
- Conéctese a su clúster: La forma recomendada es crear un archivo de configuración como se especifica en archivo de configuración documentación.
- Realizar operaciones CRUD, ejecutar consultaso Búsqueda vectorialy aprovechar las potentes características de Couchbase. Para que puedas empezar muy rápidamente, nuestra documentación proporciona recetas para algunos casos de uso común.
Apoyo comunitario y de código abierto
Creemos en el poder de la comunidad y el desarrollo de código abierto. Couchbase cbsh es de código abiertoy le animamos a que contribuya, aporte sus comentarios y se una a la conversación. Únete a Foros de Couchbase o Couchbase Discord.
Para saber más
Para más información, consulte nuestro sitio web de documentación. Entra en más detalles sobre varios comandos y configuraciones compatibles, especialmente en torno a las credenciales de conexión, y ejemplos de combinación de comandos para lograr los resultados deseados.
-
- Descargar e instalar Couchbase Shell - cbsh
- Sistemas operativos compatibles figuran en nuestro sitio web de documentación
¡Feliz concha de mando!
El equipo de Couchbase