# Funciones de incrustación

NOTA

Esta función está disponible a partir de la versión 1.2.1.

La función EmbedText integra interfaces de API de incrustación de varios proveedores como Amazon Bedrock, Amazon SageMaker, Cohere, Gemini, HuggingFace, Jina AI, OpenAI y Voyage AI, simplificando la conversión de texto en vectores. Admite el procesamiento por lotes automático para un alto rendimiento y es útil tanto para la búsqueda en tiempo real como para el procesamiento por lotes.

Sintaxis

EmbedText(text, provider, base_url, api_key, others)

Argumentos

  • text (String): Una cadena no vacía que se convertirá en un vector.
  • provider (String): El proveedor del modelo de incrustación. Debe ser uno de los siguientes, sin distinguir mayúsculas y minúsculas: OpenAI, HuggingFace, Cohere, VoyageAI, Bedrock, SageMaker, Jina, Gemini.
  • base_url (String): La URL de la API de incrustación. Este parámetro es opcional para algunos proveedores.
  • api_key (String): Clave de API del proveedor de incrustación.
  • others (String): Parámetros adicionales opcionales para la solicitud de API de incrustación del proveedor. Debe proporcionarse como un mapa JSON y puede incluir:
    • batch_size: El número máximo de textos que se pueden incluir en cada solicitud de API varía según el modelo de incrustación utilizado. De forma predeterminada, este tamaño se establece en función de las capacidades y limitaciones específicas del modelo. Cuando la función EmbedText funciona en modo por lotes, consolida automáticamente varios textos en un lote. Este proceso de agregación se realiza internamente por la función antes de que los datos se envíen a la API de incrustación.
    • Parámetros adicionales específicos del proveedor, como se detalla en la documentación de su API respectiva.

Valor devuelto

  • La función devuelve un vector convertido a partir del texto de entrada. Este vector es una matriz de valores Float32, que representa la incrustación numérica del texto procesado por la API de incrustación del proveedor seleccionado.
  • Tipo: Array(Float32).

# Amazon Bedrock Embedding

Establecer el parámetro provider en Bedrock en EmbedText utiliza la API de incrustación de Amazon Bedrock Titan (opens new window) para la incrustación de texto.

Parámetros específicos del proveedor

  • base_url: No aplicable para este proveedor.
  • api_key: AWS secret_access_key. Requerido.
  • others:
    • batch_size: No relevante, ya que este proveedor no admite la incrustación por lotes.
    • model: ID del modelo a utilizar. Requerido.
    • access_key_id: AWS access_key_id. Requerido.
    • region_name: Nombre de la región de AWS. Requerido.

Ejemplos

SELECT EmbedText('YOUR_TEXT', 'Bedrock', '', 'SECRET_ACCESS_KEY', '{"model":"amazon.titan-embed-text-v1", "region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')

Uso simplificado con función personalizada:

CREATE FUNCTION BedrockEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'Bedrock', '', 'SECRET_ACCESS_KEY', '{"model":"amazon.titan-embed-text-v1", "region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID"}')
SELECT BedrockEmbedText('YOUR_TEXT')

# Amazon SageMaker Embedding

Establecer el parámetro provider en SageMaker en EmbedText utiliza los Amazon SageMaker Endpoints (opens new window) para la incrustación de texto.

Nota: Este proveedor está diseñado específicamente para modelos implementados en Amazon SageMaker con formatos de entrada y salida particulares. El formato de entrada esperado para la API de incrustación es un objeto JSON con "input_name" como un solo texto o una lista de textos. La respuesta de la API está estructurada como {"output_name": output}, donde 'output' es un solo vector de incrustación o una lista de vectores, según si la entrada es un solo texto o una lista.

Localizar modelos que cumplan con estos requisitos es sencillo en SageMaker JumpStart (opens new window). Un ejemplo de tales modelos se puede ver en la siguiente imagen:

sagemaker-deploy

Parámetros específicos del proveedor

  • base_url: Nombre del punto de conexión de SageMaker. Requerido.
  • api_key: AWS secret_access_key. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional, con un valor predeterminado de 50. Ajuste esto si no se admite la incrustación por lotes estableciéndolo en 1.
    • access_key_id: AWS access_key_id. Requerido.
    • region_name: Nombre de la región de AWS. Requerido.
    • input_name: Nombre de entrada de la API. Opcional. El valor predeterminado es 'text_inputs'.
    • output_name: Nombre de salida de la API. Opcional. El valor predeterminado es 'embedding'.
    • model_args: Parámetros opcionales específicos del punto de enlace de SageMaker que se está utilizando.

Ejemplos Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'SageMaker', 'SAGEMAKER_ENDPOINT', 'SECRET_ACCESS_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID", "model_args":{"mode":"embedding"}}')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'SageMaker', 'SAGEMAKER_ENDPOINT', 'SECRET_ACCESS_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID", "model_args":{"mode":"embedding"}, "input_name":"inputs", "output_name":"embedding"}')

Uso simplificado con función personalizada:

CREATE FUNCTION SageMakerEmbedText ON CLUSTER '{cluster}' AS (x)-> EmbedText(x, 'SageMaker', 'SAGEMAKER_ENDPOINT', 'SECRET_ACCESS_KEY', '{"region_name":"us-east-1", "access_key_id":"ACCESS_KEY_ID", "model_args":{"mode":"embedding"}}')
SELECT SageMakerEmbedText('YOUR_TEXT')

# Cohere Embedding

Establecer el parámetro provider en Cohere en EmbedText utiliza la API de incrustación de Cohere (opens new window) para la incrustación de texto.

Parámetros específicos del proveedor

  • base_url: URL de la API de incrustación de Cohere. Opcional. El valor predeterminado es https://api.cohere.ai/v1/embed (opens new window).
  • api_key: Clave de API de Cohere. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 50.
    • model: ID del modelo a utilizar. Opcional. El valor predeterminado es embed-english-v2.0.
    • input_type: El tipo de texto de entrada. Opcional.
    • truncate: Opcional. Uno de NONE|START|END para especificar cómo la API manejará las entradas más largas que la longitud máxima de token.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'Cohere', '', 'COHERE_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'Cohere', 'YOUR_EMBEDDING_API_URL', 'COHERE_API_KEY', '{"model":"YOUR_MODEL_ID", "batch_size":YOUR_BATCH_SIZE, "input_type":"search_query", "truncate":"END"}')

Uso simplificado con función personalizada:

CREATE FUNCTION CohereEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'Cohere', '', 'COHERE_API_KEY', '')
SELECT CohereEmbedText('YOUR_TEXT')

# Gemini Embedding

Establecer el parámetro provider en Gemini en EmbedText utiliza la API de incrustación de Gemini (opens new window) para la incrustación de texto.

Parámetros específicos del proveedor

  • base_url: URL de la API de incrustación de Gemini. Opcional. El valor predeterminado es https://generativelanguage.googleapis.com/v1beta (opens new window).
  • api_key: Clave de API de Gemini. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 50.
    • model: ID del modelo a utilizar. Opcional. El valor predeterminado es models/embedding-001.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'Gemini', '', 'GEMINI_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'Gemini', 'YOUR_EMBEDDING_API_URL', 'GEMINI_API_KEY', '{"model":"YOUR_MODEL_ID", "batch_size":YOUR_BATCH_SIZE}')

Uso simplificado con función personalizada:

CREATE FUNCTION GeminiEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'Gemini', '', 'GEMINI_API_KEY', '')
SELECT GeminiEmbedText('YOUR_TEXT')

# HuggingFace Embedding

Establecer el parámetro provider en HuggingFace en EmbedText utiliza la API de inferencia de HuggingFace/Endpoint de inferencia (opens new window) para la incrustación de texto.

Nota: Es compatible específicamente con API que siguen un cierto formato de entrada y salida, como las API de incrustación de BAAI/BGE (opens new window). El formato de entrada esperado para la API de incrustación es un objeto JSON con "inputs" como un solo texto o una lista de textos. La respuesta de esta API será un vector de incrustación o una lista de vectores de incrustación, según la entrada proporcionada. Si no se admite la incrustación por lotes, es necesario establecer batch_size en 1 en el parámetro others.

Parámetros específicos del proveedor

  • base_url: URL de la API de incrustación de HuggingFace. Requerido.
  • api_key: Clave de API de HuggingFace. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 32.
    • model_args: Parámetros opcionales específicos del modelo de HuggingFace que se está utilizando.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'HuggingFace', 'API_URL', 'HUGGINGFACE_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'HuggingFace', 'API_URL', 'HUGGINGFACE_API_KEY', '{"model_args":{"parameters": {"truncation":true}}}')

Uso simplificado con función personalizada:

CREATE FUNCTION HuggingFaceEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'HuggingFace', 'API_URL', 'HUGGINGFACE_API_KEY', '')
SELECT HuggingFaceEmbedText('YOUR_TEXT')

# Jina AI Embedding

Establecer el parámetro provider en Jina en EmbedText utiliza la API de incrustación de Jina AI (opens new window) para la incrustación de texto.

  • base_url: URL de la API de incrustación de Jina AI. Opcional. El valor predeterminado es https://api.jina.ai/v1/embeddings (opens new window).
  • api_key: Clave de API de Jina AI. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 50.
    • model: ID del modelo a utilizar. Opcional. El valor predeterminado es jina-embeddings-v2-base-en.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'Jina', '', 'JINAAI_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'Jina', 'YOUR_EMBEDDING_API_URL', 'JINAAI_API_KEY', '{"model":"YOUR_MODEL_ID", "batch_size":YOUR_BATCH_SIZE}')

Uso simplificado con función personalizada:

CREATE FUNCTION JinaAIEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'Jina', '', 'JINAAI_API_KEY', '')
SELECT JinaAIEmbedText('YOUR_TEXT')

# OpenAI Embedding

Establecer el parámetro provider en OpenAI en EmbedText utiliza la API de incrustación de OpenAI (opens new window) para la incrustación de texto.

Parámetros específicos del proveedor

  • base_url: URL de la API de incrustación de OpenAI. Opcional. El valor predeterminado es https://api.openai.com/v1/embeddings (opens new window).
  • api_key: Clave de API de OpenAI. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 50.
    • model: ID del modelo a utilizar. Opcional. Los modelos compatibles incluyen text-embedding-ada-002, text-embedding-3-small y text-embedding-3-large. El valor predeterminado es text-embedding-ada-002 para versiones anteriores a la 1.3.0, y text-embedding-3-small a partir de la versión 1.3.0.
    • dimensions: El número de dimensiones que deben tener los embeddings de salida resultantes. Es opcional y está disponible desde la versión 1.3.0.
    • user: Un identificador único opcional para su usuario final, que ayuda a OpenAI en la supervisión y detección de abusos.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'OpenAI', '', 'OPENAI_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'OpenAI', 'YOUR_EMBEDDING_API_URL', 'OPENAI_API_KEY', '{"model":"YOUR_MODEL_ID", "batch_size":YOUR_BATCH_SIZE, "user":"YOUR_USER_ID"}')

Uso simplificado con función personalizada:

CREATE FUNCTION OpenAIEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'OpenAI', '', 'OPENAI_API_KEY', '')
SELECT OpenAIEmbedText('YOUR_TEXT')

# Voyage AI Embedding

Parámetros específicos del proveedor

Establecer el parámetro provider en VoyageAI en EmbedText utiliza la API de incrustación de Voyage AI (opens new window) para la incrustación de texto.

  • base_url: URL de la API de incrustación de Voyage AI. Opcional. El valor predeterminado es https://api.voyageai.com/v1/embeddings (opens new window).
  • api_key: Clave de API de Voyage AI. Requerido.
  • others:
    • batch_size: Número máximo de textos en cada solicitud de API. Opcional. El valor predeterminado es 8.
    • model: ID del modelo a utilizar. Opcional. El valor predeterminado es voyage-01.

Ejemplos

Usando los valores predeterminados:

SELECT EmbedText('YOUR_TEXT', 'VoyageAI', '', 'VOYAGEAI_API_KEY', '')

Usando valores personalizados:

SELECT EmbedText('YOUR_TEXT', 'VoyageAI', 'YOUR_EMBEDDING_API_URL', 'VOYAGEAI_API_KEY', '{"model":"YOUR_MODEL_ID", "batch_size":YOUR_BATCH_SIZE}')

Uso simplificado con función personalizada:

CREATE FUNCTION VoyageAIEmbedText ON CLUSTER '{cluster}' AS (x) -> EmbedText(x, 'VoyageAI', '', 'VOYAGEAI_API_KEY', '')
SELECT VoyageAIEmbedText('YOUR_TEXT')
Last Updated: Thu Apr 11 2024 02:40:52 GMT+0000