Instala AlloyDB AI en AlloyDB Omni

En esta página, se muestra cómo instalar AlloyDB Omni y cómo integrar AlloyDB AI en él.

AlloyDB AI es un paquete de funciones que se incluye con AlloyDB Omni y que te permite crear aplicaciones de IA generativa empresarial. Para obtener más información sobre la funcionalidad de IA de AlloyDB, consulta Cómo compilar aplicaciones de IA generativa.

AlloyDB Omni con AlloyDB AI te permite consultar modelos de AA remotos para trabajar con predicciones en línea y embeddings de texto generados a partir de modelos de AA. AlloyDB Omni con AlloyDB AI también puede procesar incorporaciones de vectores de otro contenido, como una imagen, por ejemplo, si usas la interfaz google_ml.predict_row y haces la traducción tú mismo en la consulta.

Según el lugar en el que quieras instalar AlloyDB Omni con AlloyDB AI, selecciona una de las siguientes opciones:

Configura tu instancia de AlloyDB Omni para consultar modelos remotos

Para consultar modelos remotos con la administración de extremos de modelos, habilita googleMLExtension en el manifiesto de tu clúster de bases de datos.

De manera opcional, si deseas consultar modelos de Vertex AI, debes configurar la cuenta de servicio de AlloyDB con Vertex AI, crear un secreto de Kubernetes con la clave y establecerlo en el manifiesto del clúster de la base de datos.

Agrega los permisos de Vertex AI a la cuenta de servicio de AlloyDB

Para configurar AlloyDB Omni para consultar modelos remotos de Vertex AI, sigue estos pasos:

  1. Crea una cuenta de servicio con Google Cloud.

  2. Crea una clave de cuenta de servicio, guárdala en formato JSON en el archivo private-key.json y descárgala.

  3. Almacena la clave en una ubicación permanente en tu sistema de archivos. Reside en esta ubicación durante toda la vida útil de tu servidor de AlloyDB Omni.

    Anota su ubicación en el sistema de archivos, ya que la necesitarás para los pasos posteriores.

  4. Agrega permisos de Identity and Access Management (IAM) de Vertex AI al proyecto y a la cuenta de servicio adecuados.

       gcloud projects add-iam-policy-binding PROJECT_ID \
           --member="serviceAccount:SERVICE_ACCOUNT_ID" \
           --role="roles/aiplatform.user"

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.

    • SERVICE_ACCOUNT_ID: Es el ID de la cuenta de servicio que creaste en el paso anterior. Esto incluye el sufijo @PROJECT_ID.iam.gserviceaccount.com completo, por ejemplo, my-service@my-project.iam.gserviceaccount.com.

Crea un secreto de Kubernetes con la clave de la cuenta de servicio

Para crear un secreto de Kubernetes basado en la clave de la cuenta de servicio que se descargó en los pasos anteriores, ejecuta el siguiente comando:

   kubectl create secret generic SECRET_NAME \
   --from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
   -n NAMESPACE

Reemplaza lo siguiente:

  • SECRET_NAME: Es el nombre del secreto que se usa cuando creas un manifiesto DBCluster para permitir que AlloyDB Omni acceda a las funciones de AlloyDB AI. Por ejemplo, vertex-ai-key-alloydb.

  • PATH_TO_SERVICE_ACCOUNT_KEY: Es la ruta de acceso a la ubicación en la que descargaste la clave de la cuenta de servicio private-key.json.

  • NAMESPACE: Es el espacio de nombres del clúster de bases de datos.

Instala el operador de AlloyDB Omni

Instala el operador de AlloyDB Omni con los pasos que se indican en Cómo instalar el operador de AlloyDB Omni.

Crea un clúster de bases de datos con AlloyDB AI

  1. Crea un clúster de bases de datos con AlloyDB AI.

    Cuando configuras enabled en true en el campo googleMLExtension, te permite consultar modelos remotos. Establece el vertexAIKeyRef en el Secret de Kubernetes si deseas consultar modelos de Vertex AI.

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-DB_CLUSTER_NAME
    type: Opaque
    data:
      DB_CLUSTER_NAME: "ENCODED_PASSWORD"
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        adminUser:
          passwordRef:
            name: db-pw-DB_CLUSTER_NAME
        features:
          googleMLExtension:
            enabled: true
            config:
              vertexAIKeyRef: VERTEX_AI_SECRET_NAME
              vertexAIRegion: VERTEX_AI_REGION
        resources:
          cpu: CPU_COUNT
          memory: MEMORY_SIZE
          disks:
          - name: DataDisk
            size: DISK_SIZE
            storageClass: standard
    

    Reemplaza lo siguiente:

    • DB_CLUSTER_NAME: Es el nombre de este clúster de bases de datos, por ejemplo, my-db-cluster.

    • VERTEX_AI_SECRET_NAME (opcional): el secreto de Vertex AI que creaste en los pasos anteriores. Debes configurar esta opción si deseas llamar a modelos de Vertex AI.

    • VERTEX_AI_REGION (opcional): Es el extremo regional de Vertex AI al que deseas enviar tu solicitud, por ejemplo, us-west4. El valor predeterminado es us-central1.

    • ENCODED_PASSWORD: Es la contraseña de acceso a la base de datos del rol de usuario postgres predeterminado, codificada como una cadena base64, por ejemplo, Q2hhbmdlTWUxMjM= para ChangeMe123.

    • CPU_COUNT: Es la cantidad de CPUs disponibles para cada instancia de base de datos en este clúster de bases de datos.

    • MEMORY_SIZE: Es la cantidad de memoria por instancia de base de datos de este clúster de bases de datos. Te recomendamos que establezcas este valor en 8 gigabytes por CPU. Por ejemplo, si configuraste cpu en 2 antes en este manifiesto, te recomendamos que configures memory en 16Gi.

    • DISK_SIZE: El tamaño del disco por instancia de base de datos, por ejemplo, 10Gi.

  2. Aplica el manifiesto.

    kubectl apply -f DB_CLUSTER_YAML

    Reemplaza lo siguiente:

    • DB_CLUSTER_YAML: Es el nombre de este archivo de manifiesto del clúster de bases de datos, por ejemplo, alloydb-omni-db-cluster.yaml.

Conéctate con el psql preinstalado

Puedes establecer una conexión de prueba con un cliente psql que ya esté instalado en el pod que ejecuta la base de datos.

Para ello, ejecuta los siguientes comandos:

export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres

Reemplaza DB_CLUSTER_NAME por el nombre del clúster de tu base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

Después de ingresar el comando, el servidor de base de datos te solicitará una contraseña. Ingresa la contraseña cuya versión codificada en base64 proporcionaste como secreto de Kubernetes cuando creaste el clúster de bases de datos. Por ejemplo, si creaste el clúster de bases de datos con un secreto de Q2hhbmdlTWUxMjM=, la contraseña de acceso que debes usar aquí es ChangeMe123.

Verifica AlloyDB Omni con la instalación de AlloyDB AI

Para verificar que la instalación se realizó correctamente y usa la predicción del modelo, ingresa lo siguiente:

   CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

   SELECT array_dims(embedding( 'text-embedding-005', 'AlloyDB AI')::real[]);

El resultado es similar al siguiente:

      array_dims
      ------------
      [1:768]
      (1 row) 

En la consulta anterior, la llamada a embedding() genera incorporaciones para el texto de entrada AlloyDB AI. array_dims muestra las dimensiones del array que muestra embedding(). Dado que el modelo text-embedding-005 muestra un resultado con 768 dimensiones, el resultado es [768].

¿Qué sigue?