Obtener incorporaciones de texto

En este documento, se describe cómo crear un embedding de texto con la API de incorporaciones de texto de Vertex AI.

Las incorporaciones de texto son representaciones vectoriales densas de texto. Por ejemplo, el modelo gemini-embedding-001 genera vectores de 3072 dimensiones para un fragmento de texto determinado. Estas incorporaciones de vectores densos se crean con métodos de aprendizaje profundo similares a los que usan los modelos de lenguaje grandes.

A diferencia de los vectores dispersos que asignan palabras a números, los vectores densos están diseñados para representar el significado semántico del texto. El beneficio principal de usar incorporaciones de vectores densos es la capacidad de realizar búsquedas semánticas. En lugar de buscar coincidencias de palabras o sintaxis directas, puedes buscar pasajes de texto que se alineen con el significado de tu consulta, incluso si los pasajes no usan la misma frase.

Los vectores de incorporación están normalizados, por lo que puedes usar la similitud coseno, el producto punto o la distancia euclidiana para obtener las mismas clasificaciones de similitud.

Las preguntas y sus respuestas no son semánticamente similares
Figura 1: Obtén la incorporación de texto.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. Elige un tipo de tarea para tu trabajo de embeddings.
  7. Modelos compatibles

    Puedes obtener incorporaciones de texto con los siguientes modelos:

    Nombre del modelo Descripción Dimensiones de salida Longitud máxima de la secuencia Lenguajes de texto admitidos
    gemini-embedding-001 Rendimiento de vanguardia en tareas de código, inglés y varios idiomas. Unifica los modelos especializados anteriores, como text-embedding-005 y text-multilingual-embedding-002, y logra un mejor rendimiento en sus respectivos dominios. Para obtener más detalles, lee nuestro Informe técnico. hasta 3,072 2,048 tokens Lenguajes de texto admitidos
    text-embedding-005 Se especializa en tareas de código y en inglés. hasta 768 2,048 tokens Inglés
    text-multilingual-embedding-002 Se especializan en tareas multilingües. hasta 768 2,048 tokens Lenguajes de texto admitidos

    Para obtener una calidad de incorporación superior, gemini-embedding-001 es nuestro modelo grande diseñado para proporcionar el mayor rendimiento. Ten en cuenta que gemini-embedding-001 admite una instancia por solicitud.

    Obtén incorporaciones de texto para un fragmento de texto

    Puedes obtener incorporaciones de texto para un fragmento de texto mediante la API de Vertex AI o el SDK de Vertex AI para Python.

    Límites de API

    Para cada solicitud, tienes un límite de 250 textos de entrada para modelos que no sean de Gemini y un solo texto de entrada para modelos de incorporación de Gemini. La API tiene un límite máximo de tokens de entrada de 20,000. Las entradas que superen este límite generarán un error 400. Cada texto de entrada individual se limita a 2,048 tokens. El exceso se trunca de forma silenciosa. También puedes inhabilitar la truncación silenciosa configurando autoTruncate como false.

    Para obtener más información, consulta Límites de incorporación de texto.

    Elige una dimensión de incorporación

    Todos los modelos producen un vector de incorporación de longitud completa de forma predeterminada. Para gemini-embedding-001, este vector tiene 3,072 dimensiones, y otros modelos producen vectores de 768 dimensiones. Sin embargo, con el parámetro output_dimensionality, los usuarios pueden controlar el tamaño del vector de incorporación de salida. Seleccionar una dimensionalidad de salida más pequeña puede ahorrar espacio de almacenamiento y aumentar la eficiencia computacional para las aplicaciones descendentes, a la vez que se sacrifica poco en términos de calidad.

    En los siguientes ejemplos, se usa el modelo gemini-embedding-001.

    Gen AI SDK for Python

    Instalar

    pip install --upgrade google-genai

    Para obtener más información, consulta la documentación de referencia del SDK.

    Establece variables de entorno para usar el SDK de Gen AI con Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=global
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import EmbedContentConfig
    
    client = genai.Client()
    response = client.models.embed_content(
        model="gemini-embedding-001",
        contents="How do I get a driver's license/learner's permit?",
        config=EmbedContentConfig(
            task_type="RETRIEVAL_DOCUMENT",  # Optional
            output_dimensionality=3072,  # Optional
            title="Driver's License",  # Optional
        ),
    )
    print(response)
    # Example response:
    # embeddings=[ContentEmbedding(values=[-0.06302902102470398, 0.00928034819662571, 0.014716853387653828, -0.028747491538524628, ... ],
    # statistics=ContentEmbeddingStatistics(truncated=False, token_count=13.0))]
    # metadata=EmbedContentMetadata(billable_character_count=112)

    Agrega una incorporación a una base de datos vectorial

    Después de generar tu incorporación, puedes agregar incorporaciones a una base de datos vectorial, como Vector Search. Esto permite una recuperación de latencia baja y es fundamental a medida que aumenta el tamaño de los datos.

    Para obtener más información sobre Vector Search, consulta Descripción general de Vector Search.

    ¿Qué sigue?