Antes de implementar embeddings

Al seleccionar un proveedor de embeddings, hay varios factores que puedes considerar según tus necesidades y preferencias:

  • Tamaño del conjunto de datos y especificidad del dominio: tamaño del conjunto de datos de entrenamiento del modelo y su relevancia para el dominio que deseas embeber. Datos más grandes o más específicos del dominio generalmente producen mejores embeddings en el dominio
  • Rendimiento de inferencia: velocidad de búsqueda de embeddings y latencia de extremo a extremo. Esta es una consideración particularmente importante para implementaciones de producción a gran escala
  • Personalización: opciones para continuar el entrenamiento con datos privados o especialización de modelos para dominios muy específicos. Esto puede mejorar el rendimiento en vocabularios únicos

Cómo obtener embeddings con Anthropic

Anthropic no ofrece su propio modelo de embedding. Un proveedor de embeddings que tiene una amplia variedad de opciones y capacidades que abarcan todas las consideraciones anteriores es Voyage AI.

Voyage AI crea modelos de embedding de última generación y ofrece modelos personalizados para dominios industriales específicos como finanzas y salud, o modelos ajustados a medida para clientes individuales.

El resto de esta guía es para Voyage AI, pero te animamos a evaluar una variedad de proveedores de embeddings para encontrar el que mejor se adapte a tu caso de uso específico.


Comenzando con Voyage AI

Consulta nuestro notebook de embeddings para ver un ejemplo de implementación de Voyage AI.

Para acceder a los embeddings de Voyage:

  1. Regístrate en el sitio web de Voyage AI
  2. Obtén una clave API
  3. Configura la clave API como una variable de entorno para mayor comodidad:
Python
export VOYAGE_API_KEY="<your secret key>"

Puedes ejecutar los embeddings usando el paquete Python oficial voyageai o solicitudes HTTP, como se describe a continuación.

Paquete Python de Voyage

El paquete voyageai se puede instalar usando el siguiente comando:

Python
pip install -U voyageai

Luego, puedes crear un objeto cliente y comenzar a usarlo para embeber tus textos:

Python
import voyageai

vo = voyageai.Client()
# Esto usará automáticamente la variable de entorno VOYAGE_API_KEY.
# Alternativamente, puedes usar vo = voyageai.Client(api_key="<your secret key>")

texts = ["Sample text 1", "Sample text 2"]

result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings será una lista de dos vectores de embedding, cada uno conteniendo 1024 números de punto flotante.

Después de ejecutar el código anterior, los dos embeddings se imprimirán en la pantalla:

Python
[0.02012746, 0.01957859, ...]  # embedding para "Sample text 1"
[0.01429677, 0.03077182, ...]  # embedding para "Sample text 2"

Al crear los embeddings, puedes especificar algunos otros argumentos para la función embed(). Aquí está la especificación:

voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)

  • texts (List[str]) - Una lista de textos como lista de strings, como ["I like cats", "I also like dogs"]. Actualmente, la longitud máxima de la lista es 128, y el número total de tokens en la lista es como máximo 320K para voyage-2 y 120K para voyage-large-2/voyage-code-2.
  • model (str) - Nombre del modelo. Opciones recomendadas: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opcional, por defecto None) - Tipo del texto de entrada. Por defecto None. Otras opciones: query, document
    • Cuando input_type se establece en None, el texto de entrada será codificado directamente por el modelo de embedding de Voyage. Alternativamente, cuando las entradas son documentos o consultas, los usuarios pueden especificar input_type como query o document, respectivamente. En tales casos, Voyage antepondrá un prompt especial al texto de entrada y enviará las entradas extendidas al modelo de embedding
    • Para casos de uso de recuperación/búsqueda, recomendamos especificar este argumento al codificar consultas o documentos para mejorar la calidad de la recuperación. Los embeddings generados con y sin el argumento input_type son compatibles
  • truncation (bool, opcional, por defecto None) - Si se deben truncar los textos de entrada para que quepan dentro de la longitud del contexto.
    • Si es True, los textos de entrada que excedan la longitud se truncarán para que quepan dentro de la longitud del contexto, antes de ser vectorizados por el modelo de embedding
    • Si es False, se generará un error si algún texto dado excede la longitud del contexto
    • Si no se especifica (por defecto None), Voyage truncará el texto de entrada antes de enviarlo al modelo de embedding si excede ligeramente la longitud de la ventana de contexto. Si excede significativamente la longitud de la ventana de contexto, se generará un error

API HTTP de Voyage

También puedes obtener embeddings solicitando la API HTTP de Voyage. Por ejemplo, puedes enviar una solicitud HTTP a través del comando curl en una terminal:

Shell
curl https://api.voyageai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VOYAGE_API_KEY" \
  -d '{
    "input": ["Sample text 1", "Sample text 2"],
    "model": "voyage-2"
  }'

La respuesta que obtendrías es un objeto JSON que contiene los embeddings y el uso de tokens:

Shell
{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-2",
  "usage": {
    "total_tokens": 10
  }
}

El endpoint de embedding de Voyage AI es https://api.voyageai.com/v1/embeddings (POST). El encabezado de la solicitud debe contener la clave API. El cuerpo de la solicitud es un objeto JSON que contiene los siguientes argumentos:

  • input (str, List[str]) - Una cadena de texto única o una lista de textos como lista de strings. Actualmente, la longitud máxima de la lista es 128, y el número total de tokens en la lista es como máximo 320K para voyage-2 y 120K para voyage-large-2/voyage-code-2.
  • model (str) - Nombre del modelo. Opciones recomendadas: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, opcional, por defecto None) - Tipo del texto de entrada. Por defecto None. Otras opciones: query, document
  • truncation (bool, opcional, por defecto None) - Si se deben truncar los textos de entrada para que quepan dentro de la longitud del contexto
    • Si es True, los textos de entrada que excedan la longitud se truncarán para que quepan dentro de la longitud del contexto antes de ser vectorizados por el modelo de embedding
    • Si es False, se generará un error si algún texto dado excede la longitud del contexto
    • Si no se especifica (por defecto None), Voyage truncará el texto de entrada antes de enviarlo al modelo de embedding si excede ligeramente la longitud de la ventana de contexto. Si excede significativamente la longitud de la ventana de contexto, se generará un error
  • encoding_format (str, opcional, por defecto None) - Formato en el que se codifican los embeddings. Voyage actualmente admite dos opciones:
    • Si no se especifica (por defecto None): los embeddings se representan como listas de números de punto flotante
    • "base64": los embeddings se comprimen a codificaciones Base64

Ejemplo de embedding de Voyage

Ahora que sabemos cómo obtener embeddings con Voyage, veamos un breve ejemplo en acción.

Supongamos que tenemos un pequeño corpus de seis documentos para recuperar

Python
documents = [
    "The Mediterranean diet emphasizes fish, olive oil, and vegetables, believed to reduce chronic diseases.",
    "Photosynthesis in plants converts light energy into glucose and produces essential oxygen.",
    "20th-century innovations, from radios to smartphones, centered on electronic advancements.",
    "Rivers provide water, irrigation, and habitat for aquatic species, vital for ecosystems.",
    "Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.",
    "Shakespeare's works, like 'Hamlet' and 'A Midsummer Night's Dream,' endure in literature."
]

Primero usaremos Voyage para convertir cada uno de ellos en un vector de embedding

Python
import voyageai

vo = voyageai.Client()

# Embeber los documentos
doc_embds = vo.embed(
    documents, model="voyage-2", input_type="document"
).embeddings

Los embeddings nos permitirán hacer búsqueda semántica / recuperación en el espacio vectorial. Luego podemos convertir una consulta de ejemplo,

Python
query = "When is Apple's conference call scheduled?"

en un embedding, y luego realizar una búsqueda del vecino más cercano para encontrar el documento más relevante basado en la distancia en el espacio de embedding.

Python
import numpy as np

# Embeber la consulta
query_embd = vo.embed(
    [query], model="voyage-2", input_type="query"
).embeddings[0]

# Calcular la similitud
# Los embeddings de Voyage están normalizados a longitud 1, por lo tanto
# el producto punto y la similitud del coseno son lo mismo.
similarities = np.dot(doc_embds, query_embd)

retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])

Ten en cuenta que usamos input_type="document" y input_type="query" para embeber el documento y la consulta, respectivamente. Más especificaciones se pueden encontrar aquí.

La salida sería el quinto documento, que de hecho es el más relevante para la consulta:

Apple's conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.

Modelos Voyage disponibles

Voyage recomienda usar los siguientes modelos de embedding:

ModeloLongitud de ContextoDimensión de EmbeddingDescripción
voyage-large-2160001536El modelo de embedding generalista más potente de Voyage AI.
voyage-code-2160001536Optimizado para recuperación de código (17% mejor que las alternativas), y también estado del arte en corpus de propósito general. Ver este post del blog de Voyage para más detalles.
voyage-240001024Modelo de embedding generalista base optimizado tanto para latencia como para calidad.
voyage-lite-02-instruct40001024Ajustado con instrucciones para tareas de clasificación, agrupamiento y similitud textual de oraciones, que son los únicos casos de uso recomendados para este modelo.

voyage-2 y voyage-large-2 son modelos de embedding generalistas, que logran un rendimiento de última generación en todos los dominios y mantienen una alta eficiencia. voyage-code-2 está optimizado para el campo del código, ofreciendo 4 veces la longitud de contexto para un uso más flexible, aunque con una latencia relativamente más alta.

Voyage está desarrollando activamente modelos más avanzados y especializados, y también ofrece servicios de ajuste fino para personalizar modelos a medida para clientes individuales. Envía un correo electrónico a tu gerente de cuenta de Anthropic o comunícate con el soporte de Anthropic para obtener más información sobre modelos a medida.

  • voyage-finance-2: próximamente
  • voyage-law-2: próximamente
  • voyage-multilingual-2: próximamente
  • voyage-healthcare-2: próximamente

Voyage en AWS Marketplace

Los embeddings de Voyage también están disponibles en AWS Marketplace. Aquí están las instrucciones para acceder a Voyage en AWS:

  1. Suscríbete al paquete del modelo
    1. Navega a la página de listado del paquete del modelo y selecciona el modelo a implementar
    2. Haz clic en el botón Continue to subscribe
    3. Revisa cuidadosamente los detalles en la página Subscribe to this software. Si estás de acuerdo con el Acuerdo de Licencia de Usuario Final (EULA) estándar, los precios y los términos de soporte, haz clic en “Accept Offer”
    4. Después de seleccionar Continue to configuration y elegir una región, se te presentará un Product Arn. Este es el ARN del paquete del modelo requerido para crear un modelo implementable usando Boto3
      1. Copia el ARN que corresponde a tu región seleccionada y úsalo en la siguiente celda
  2. Implementa el paquete del modelo

A partir de aquí, crea un espacio JupyterLab en Sagemaker Studio, sube el notebook de Voyage y sigue las instrucciones dentro.


Preguntas frecuentes


Precios

Visita la página de precios de Voyage para obtener los detalles de precios más actualizados.