Al seleccionar un proveedor de incrustaciones, hay varios factores que puede considerar según sus necesidades y preferencias:
Anthropic no ofrece su propio modelo de incrustación. Un proveedor de incrustaciones que tiene una amplia variedad de opciones y capacidades que abarcan todas las consideraciones anteriores es Voyage AI.
Voyage AI crea modelos de incrustación de última generación 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 le recomendamos que evalúe una variedad de proveedores de incrustaciones para encontrar la mejor opción para su caso de uso específico.
Voyage recomienda utilizar los siguientes modelos de incrustación de texto:
| Modelo | Longitud de contexto | Dimensión de incrustación | Descripción |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (predeterminado), 256, 512, 2048 | La mejor calidad de recuperación general y multilingüe. Consulte entrada de blog para más detalles. |
voyage-3.5 | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para calidad de recuperación general y multilingüe. Consulte entrada de blog para más detalles. |
voyage-3.5-lite | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para latencia y costo. Consulte entrada de blog para más detalles. |
voyage-code-3 | 32,000 | 1024 (predeterminado), 256, 512, 2048 | Optimizado para recuperación de código. Consulte entrada de blog para más detalles. |
voyage-finance-2 | 32,000 | 1024 | Optimizado para recuperación y RAG de finanzas. Consulte entrada de blog para más 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. Consulte entrada de blog para más detalles. |
Además, se recomiendan los siguientes modelos de incrustación multimodal:
| Modelo | Longitud de contexto | Dimensión de incrustación | Descripción |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Modelo de incrustación multimodal enriquecido que puede vectorizar texto intercalado y imágenes ricas en contenido, como capturas de pantalla de PDF, diapositivas, tablas, figuras y más. Consulte entrada de blog para más detalles. |
¿Necesita ayuda para decidir qué modelo de incrustación de texto usar? Consulte las Preguntas frecuentes.
Para acceder a las incrustaciones de Voyage:
export VOYAGE_API_KEY="<your secret key>"Puede obtener las incrustaciones utilizando el paquete oficial de Python voyageai o solicitudes HTTP, como se describe a continuación.
El paquete voyageai se puede instalar usando el siguiente comando:
pip install -U voyageaiLuego, puede crear un objeto cliente y comenzar a usarlo para incrustar sus textos:
import voyageai
vo = voyageai.Client()
# This will automatically use the environment variable VOYAGE_API_KEY.
# Alternatively, you can use vo = voyageai.Client(api_key="<your secret key>")
texts = ["Sample text 1", "Sample text 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 incrustación, cada uno conteniendo 1024 números de punto flotante. Después de ejecutar el código anterior, las dos incrustaciones se imprimirán en la pantalla:
[-0.013131560757756233, 0.019828535616397858, ...] # embedding for "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding for "Sample text 2"Al crear las incrustaciones, puede especificar algunos otros argumentos para la función embed().
Para más información sobre el paquete de Python de Voyage, consulte la documentación de Voyage.
También puede obtener incrustaciones solicitando la API HTTP de Voyage. Por ejemplo, puede 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": ["Sample text 1", "Sample text 2"],
"model": "voyage-3.5"
}'La respuesta que obtendría es un objeto JSON que contiene las incrustaciones 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, consulte la documentación de Voyage.
Las incrustaciones de Voyage están disponibles en AWS Marketplace. Las instrucciones para acceder a Voyage en AWS están disponibles aquí.
Ahora que sabemos cómo obtener incrustaciones, veamos un breve ejemplo.
Supongamos que tenemos un pequeño corpus de seis documentos de los que recuperar
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 incrustación
import voyageai
vo = voyageai.Client()
# Embed the documents
doc_embds = vo.embed(
documents, model="voyage-3.5", input_type="document"
).embeddingsLas incrustaciones nos permitirán hacer búsqueda semántica / recuperación en el espacio vectorial. Dado un ejemplo de consulta,
query = "When is Apple's conference call scheduled?"lo convertimos en una incrustación y realizamos una búsqueda del vecino más cercano para encontrar el documento más relevante basado en la distancia en el espacio de incrustación.
import numpy as np
# Embed the query
query_embd = vo.embed(
[query], model="voyage-3.5", input_type="query"
).embeddings[0]
# Compute the similarity
# Voyage embeddings are normalized to length 1, therefore dot-product
# and cosine similarity are the same.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])Tenga en cuenta que usamos input_type="document" e input_type="query" para incrustar el documento y la consulta, respectivamente. Se puede encontrar más especificación aquí.
El resultado sería el 5º documento, que es de hecho 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.Si está buscando un conjunto detallado de libros de cocina sobre cómo hacer RAG con incrustaciones, incluidas bases de datos vectoriales, consulte nuestro libro de cocina de RAG.
Visite la página de precios de Voyage para obtener los detalles de precios más actualizados.
Was this page helpful?