Embeddings
Antes de implementar embeddings
Al seleccionar un proveedor de embeddings, hay varios factores que puedes considerar dependiendo de 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 embebir. Los datos más grandes o más específicos del dominio generalmente producen mejores embeddings dentro del 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 entrenamiento continuo en 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 vanguardia y ofrece modelos personalizados para dominios industriales específicos como finanzas y atención médica, 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 mejor ajuste para tu caso de uso específico.
Modelos Disponibles
Voyage recomienda usar los siguientes modelos de embedding de texto:
| Modelo | Longitud de Contexto | Dimensión de Embedding | Descripción |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (predeterminado), 256, 512, 2048 | La mejor calidad de recuperación general y multilingüe. Ver publicación del blog para detalles. |
voyage-3.5 | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para calidad de recuperación general y multilingüe. Ver publicación del blog para detalles. |
voyage-3.5-lite | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para latencia y costo. Ver publicación del blog para detalles. |
voyage-code-3 | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para recuperación de código. Ver publicación del blog para detalles. |
voyage-finance-2 | 32,000 | 1024 | Optimizado para recuperación y RAG de finanzas. Ver publicación del blog para detalles. |
voyage-law-2 | 16,000 | 1024 | Optimizado para recuperación y RAG legal y de contexto largo. También mejoró el rendimiento en todos los dominios. Ver publicación del blog para detalles. |
Adicionalmente, se recomiendan los siguientes modelos de embedding multimodal:
| Modelo | Longitud de Contexto | Dimensión de Embedding | Descripción |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Modelo de embedding multimodal rico que puede vectorizar texto intercalado e imágenes ricas en contenido, como capturas de pantalla de PDFs, diapositivas, tablas, figuras y más. Ver publicación del blog para detalles. |
¿Necesitas ayuda para decidir qué modelo de embedding de texto usar? Consulta las FAQ.
Comenzando con Voyage AI
Para acceder a los embeddings de Voyage:
- Regístrate en el sitio web de Voyage AI
- Obtén una clave API
- Establece la clave API como una variable de entorno para conveniencia:
export VOYAGE_API_KEY="<tu clave secreta>"Puedes obtener los embeddings usando el paquete oficial de Python voyageai o solicitudes HTTP, como se describe a continuación.
Biblioteca Python de Voyage
El paquete voyageai se puede instalar usando el siguiente comando:
pip install -U voyageaiLuego, puedes crear un objeto cliente y comenzar a usarlo para embebir tus textos:
import voyageai
vo = voyageai.Client()
# Esto usará automáticamente la variable de entorno VOYAGE_API_KEY.
# Alternativamente, puedes usar vo = voyageai.Client(api_key="<tu clave secreta>")
texts = ["Texto de muestra 1", "Texto de muestra 2"]
result = vo.embed(texts, model="voyage-3.5", 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:
[-0.013131560757756233, 0.019828535616397858, ...] # embedding para "Texto de muestra 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding para "Texto de muestra 2"Al crear los embeddings, puedes especificar algunos otros argumentos para la función embed().
Para más información sobre el paquete Python de Voyage, consulta la documentación de Voyage.
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:
curl https://api.voyageai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VOYAGE_API_KEY" \
-d '{
"input": ["Texto de muestra 1", "Texto de muestra 2"],
"model": "voyage-3.5"
}'La respuesta que obtendrías es un objeto JSON que contiene los embeddings y el uso de tokens:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Para más información sobre la API HTTP de Voyage, consulta la documentación de Voyage.
AWS Marketplace
Los embeddings de Voyage están disponibles en AWS Marketplace. Las instrucciones para acceder a Voyage en AWS están disponibles aquí.
Ejemplo de inicio rápido
Ahora que sabemos cómo obtener embeddings, veamos un breve ejemplo.
Supongamos que tenemos un pequeño corpus de seis documentos de los cuales recuperar
documents = [
"La dieta mediterránea enfatiza el pescado, el aceite de oliva y las verduras, se cree que reduce las enfermedades crónicas.",
"La fotosíntesis en las plantas convierte la energía lumínica en glucosa y produce oxígeno esencial.",
"Las innovaciones del siglo XX, desde radios hasta teléfonos inteligentes, se centraron en avances electrónicos.",
"Los ríos proporcionan agua, irrigación y hábitat para especies acuáticas, vitales para los ecosistemas.",
"La llamada de conferencia de Apple para discutir los resultados del cuarto trimestre fiscal y actualizaciones comerciales está programada para el jueves 2 de noviembre de 2023 a las 2:00 p.m. PT / 5:00 p.m. ET.",
"Las obras de Shakespeare, como 'Hamlet' y 'Sueño de una noche de verano,' perduran en la literatura."
]
Primero usaremos Voyage para convertir cada uno de ellos en un vector de embedding
import voyageai
vo = voyageai.Client()
# Embebir los documentos
doc_embds = vo.embed(
documents, model="voyage-3.5", input_type="document"
).embeddingsLos embeddings nos permitirán hacer búsqueda semántica / recuperación en el espacio vectorial. Dada una consulta de ejemplo,
query = "¿Cuándo está programada la llamada de conferencia de Apple?"la convertimos en un embedding, y realizamos una búsqueda de vecino más cercano para encontrar el documento más relevante basado en la distancia en el espacio de embedding.
import numpy as np
# Embebir la consulta
query_embd = vo.embed(
[query], model="voyage-3.5", 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 coseno son lo mismo.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])Nota que usamos input_type="document" e input_type="query" para embebir el documento y la consulta, respectivamente. Más especificación se puede encontrar aquí.
La salida sería el 5º documento, que es efectivamente el más relevante para la consulta:
La llamada de conferencia de Apple para discutir los resultados del cuarto trimestre fiscal y actualizaciones comerciales está programada para el jueves 2 de noviembre de 2023 a las 2:00 p.m. PT / 5:00 p.m. ET.Si estás buscando un conjunto detallado de libros de cocina sobre cómo hacer RAG con embeddings, incluyendo bases de datos vectoriales, consulta nuestro libro de cocina RAG.
FAQ
Precios
Visita la página de precios de Voyage para los detalles de precios más actualizados.