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. |
| 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. |
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:
voyageai o solicitudes HTTP, como se describe a continuación.
Biblioteca Python de Voyage
El paquetevoyageai se puede instalar usando el siguiente comando:
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:
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 comandocurl en una terminal:
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 recuperarinput_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:
FAQ
¿Por qué los embeddings de Voyage tienen calidad superior?
¿Por qué los embeddings de Voyage tienen calidad superior?
Los modelos de embedding dependen de redes neuronales poderosas para capturar y comprimir el contexto semántico, similar a los modelos generativos. El equipo de investigadores de IA experimentados de Voyage optimiza cada componente del proceso de embedding, incluyendo:
- Arquitectura del modelo
- Recolección de datos
- Funciones de pérdida
- Selección de optimizador
¿Qué modelos de embedding están disponibles y cuál debería usar?
¿Qué modelos de embedding están disponibles y cuál debería usar?
Para embedding de propósito general, recomendamos:
voyage-3-large: Mejor calidadvoyage-3.5-lite: Menor latencia y costovoyage-3.5: Rendimiento equilibrado con calidad de recuperación superior a un punto de precio competitivo
input_type para especificar si el texto es de tipo consulta o documento.Modelos específicos de dominio:- Tareas legales:
voyage-law-2 - Código y documentación de programación:
voyage-code-3 - Tareas relacionadas con finanzas:
voyage-finance-2
¿Qué función de similitud debería usar?
¿Qué función de similitud debería usar?
Puedes usar embeddings de Voyage con similitud de producto punto, similitud coseno o distancia euclidiana. Una explicación sobre similitud de embedding se puede encontrar aquí.Los embeddings de Voyage AI están normalizados a longitud 1, lo que significa que:
- La similitud coseno es equivalente a la similitud de producto punto, mientras que la última se puede calcular más rápidamente.
- La similitud coseno y la distancia euclidiana resultarán en clasificaciones idénticas.
¿Cuál es la relación entre caracteres, palabras y tokens?
¿Cuál es la relación entre caracteres, palabras y tokens?
Por favor consulta esta página.
¿Cuándo y cómo debería usar el parámetro input_type?
¿Cuándo y cómo debería usar el parámetro input_type?
Para todas las tareas de recuperación y casos de uso (ej., RAG), recomendamos que el parámetro
input_type se use para especificar si el texto de entrada es una consulta o documento. No omitas input_type o establezcas input_type=None. Especificar si el texto de entrada es una consulta o documento puede crear mejores representaciones vectoriales densas para recuperación, lo que puede llevar a mejor calidad de recuperación.Al usar el parámetro input_type, se anteponen prompts especiales al texto de entrada antes del embedding. Específicamente:📘 Prompts asociados coninput_type
- Para una consulta, el prompt es “Representa la consulta para recuperar documentos de apoyo: ”.
- Para un documento, el prompt es “Representa el documento para recuperación: ”.
- Ejemplo
- Cuando
input_type="query", una consulta como “¿Cuándo está programada la llamada de conferencia de Apple?” se convertirá en “Representa la consulta para recuperar documentos de apoyo: ¿Cuándo está programada la llamada de conferencia de Apple?”- Cuando
input_type="document", una consulta como “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.” se convertirá en “Representa el documento para recuperación: 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.”
voyage-large-2-instruct, como sugiere el nombre, está entrenado para ser responsivo a instrucciones adicionales que se anteponen al texto de entrada. Para clasificación, agrupamiento u otras subtareas de MTEB, por favor usa las instrucciones aquí.¿Qué opciones de cuantización están disponibles?
¿Qué opciones de cuantización están disponibles?
La cuantización en embeddings convierte valores de alta precisión, como números de punto flotante de precisión simple de 32 bits, a formatos de menor precisión como enteros de 8 bits o valores binarios de 1 bit, reduciendo el almacenamiento, memoria y costos en 4x y 32x, respectivamente. Los modelos de Voyage compatibles habilitan la cuantización especificando el tipo de datos de salida con el parámetro
output_dtype:float: Cada embedding devuelto es una lista de números de punto flotante de precisión simple de 32 bits (4 bytes). Este es el predeterminado y proporciona la mayor precisión / exactitud de recuperación.int8yuint8: Cada embedding devuelto es una lista de enteros de 8 bits (1 byte) que van de -128 a 127 y de 0 a 255, respectivamente.binaryyubinary: Cada embedding devuelto es una lista de enteros de 8 bits que representan valores de embedding cuantizados de un solo bit empaquetados en bits:int8parabinaryyuint8paraubinary. La longitud de la lista devuelta de enteros es 1/8 de la dimensión real del embedding. El tipo binario usa el método binario de desplazamiento, sobre el cual puedes aprender más en las FAQ a continuación.
Ejemplo de cuantización binaria Considera los siguientes ocho valores de embedding: -0.03955078, 0.006214142, -0.07446289, -0.039001465, 0.0046463013, 0.00030612946, -0.08496094, y 0.03994751. Con cuantización binaria, los valores menores o iguales a cero serán cuantizados a un cero binario, y los valores positivos a un uno binario, resultando en la siguiente secuencia binaria: 0, 1, 0, 0, 1, 1, 0, 1. Estos ocho bits se empaquetan luego en un solo entero de 8 bits, 01001101 (con el bit más a la izquierda como el bit más significativo).
ubinary: La secuencia binaria se convierte directamente y se representa como el entero sin signo (uint8) 77.binary: La secuencia binaria se representa como el entero con signo (int8) -51, calculado usando el método binario de desplazamiento (77 - 128 = -51).
¿Cómo puedo truncar embeddings Matryoshka?
¿Cómo puedo truncar embeddings Matryoshka?
El aprendizaje Matryoshka crea embeddings con representaciones de grueso a fino dentro de un solo vector. Los modelos de Voyage, como
voyage-code-3, que soportan múltiples dimensiones de salida generan tales embeddings Matryoshka. Puedes truncar estos vectores manteniendo el subconjunto principal de dimensiones. Por ejemplo, el siguiente código Python demuestra cómo truncar vectores de 1024 dimensiones a 256 dimensiones: