---
title: Embeddings
url: https://platform.claude.com/docs/es/build-with-claude/embeddings
description: Los embeddings de texto son representaciones numéricas del texto que permiten medir la similitud semántica. Esta guía presenta los embeddings, sus aplicaciones y cómo usar modelos de embeddings para tareas como búsqueda, recomendaciones y detección de anomalías.
---

## Antes de implementar embeddings

Al seleccionar un proveedor de "embeddings" (incrustaciones), 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 incrustar. 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 "latency" (latencia) de extremo a extremo. Esta es una consideración particularmente importante para despliegues 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 embeddings. Un proveedor de embeddings con una amplia variedad de modelos y capacidades es Voyage AI de MongoDB.

Voyage AI crea modelos de embeddings y "rerankers" (reordenadores). Sus modelos de embeddings incluyen modelos de propósito general, multimodales, contextualizados y específicos de dominio.

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

## Modelos disponibles

Voyage AI ofrece los siguientes modelos de embeddings de texto:

**Última generación**

| Modelo           | Longitud de contexto | Dimensión del embedding               | Descripción                                                                                                                                                                                                                                                                                                                                          |
| ---------------- | -------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voyage-4-large` | 32,000               | 1024 (predeterminado), 256, 512, 2048 | La mejor calidad de recuperación de propósito general y multilingüe. Consulta la [publicación del blog de Voyage 4](https://blog.voyageai.com/2026/01/15/voyage-4/) para más detalles.                                                                                                                                                               |
| `voyage-4`       | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Optimizado para calidad de recuperación de propósito general y multilingüe. Equilibra calidad y eficiencia. Consulta la [publicación del blog de Voyage 4](https://blog.voyageai.com/2026/01/15/voyage-4/) para más detalles.                                                                                                                        |
| `voyage-4-lite`  | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Optimizado para latencia y costo. Consulta la [publicación del blog de Voyage 4](https://blog.voyageai.com/2026/01/15/voyage-4/) para más detalles.                                                                                                                                                                                                  |
| `voyage-code-4`  | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Optimizado para la recuperación de **código** y aplicaciones de programación agéntica. Consulta la [publicación del blog de voyage-code-4](https://blog.voyageai.com/2026/08/13/voyage-code-4/) para obtener más detalles.                                                                                                                           |
| `voyage-4-nano`  | 32,000               | 2048 (predeterminado), 256, 512, 1024 | Modelo de pesos abiertos (licencia Apache 2.0) que descargas desde [Hugging Face](https://huggingface.co/voyageai/voyage-4-nano) y ejecutas tú mismo. No está disponible a través de la Atlas Embedding and Reranking API. Consulta la [publicación del blog de Voyage 4](https://blog.voyageai.com/2026/01/15/voyage-4/) para obtener más detalles. |

**Generación anterior**

Para conocer el estado del ciclo de vida de cada modelo y su reemplazo recomendado, consulta [Model deprecations, lifecycle states, and support](https://www.mongodb.com/docs/voyageai/models/lifecycle/) en la documentación de MongoDB.

| Modelo             | Longitud de contexto | Dimensión del embedding               | Descripción                                                                                                                                                                                                                                                                                                             |
| ------------------ | -------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voyage-3-large`   | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Generación anterior de `voyage-4-large`. Consulta la [publicación del blog de voyage-3-large](https://blog.voyageai.com/2025/01/07/voyage-3-large/) para obtener más detalles.                                                                                                                                          |
| `voyage-3.5`       | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Generación anterior de `voyage-4`. Consulta la [publicación del blog de voyage-3.5](https://blog.voyageai.com/2025/05/20/voyage-3-5/) para obtener más detalles.                                                                                                                                                        |
| `voyage-3.5-lite`  | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Generación anterior de `voyage-4-lite`. Consulta la [publicación del blog de voyage-3.5](https://blog.voyageai.com/2025/05/20/voyage-3-5/) para obtener más detalles.                                                                                                                                                   |
| `voyage-code-3`    | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Generación anterior de `voyage-code-4`. Consulta la [publicación del blog de voyage-code-3](https://blog.voyageai.com/2024/12/04/voyage-code-3/) para obtener más detalles.                                                                                                                                             |
| `voyage-finance-2` | 32,000               | 1024                                  | Optimizado para la recuperación en **finanzas** y "retrieval-augmented generation" (generación aumentada por recuperación), o RAG. Consulta la [publicación del blog de voyage-finance-2](https://blog.voyageai.com/2024/06/03/domain-specific-embeddings-finance-edition-voyage-finance-2/) para obtener más detalles. |
| `voyage-law-2`     | 16,000               | 1024                                  | Optimizado para la recuperación **legal** y RAG. Consulta la [publicación del blog de voyage-law-2](https://blog.voyageai.com/2024/04/15/domain-specific-embeddings-and-retrieval-legal-edition-voyage-law-2/) para obtener más detalles.                                                                               |

Además, Voyage AI ofrece los siguientes modelos de embeddings multimodales. Llama a estos modelos con `multimodal_embed()` en lugar de `embed()`:

| Modelo                  | Longitud de contexto | Dimensión del embedding               | Descripción                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------- | -------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voyage-multimodal-3.5` | 32,000               | 1024 (predeterminado), 256, 512, 2048 | Modelo de embeddings multimodal enriquecido que puede vectorizar texto, imágenes y videos intercalados. Incluye compatibilidad con video como el primer modelo de embeddings de video de nivel de producción. Consulta la [publicación del blog de voyage-multimodal-3.5](https://blog.voyageai.com/2026/01/15/voyage-multimodal-3-5/) para obtener más detalles. |
| `voyage-multimodal-3`   | 32,000               | 1024                                  | Generación anterior de `voyage-multimodal-3.5`. Vectoriza texto intercalado e imágenes ricas en contenido, como capturas de pantalla de PDF, diapositivas, tablas, figuras y más. Consulta la [publicación del blog de voyage-multimodal-3](https://blog.voyageai.com/2024/11/12/voyage-multimodal-3/) para obtener más detalles.                                 |

Los siguientes modelos de embeddings de fragmentos contextualizados producen vectores a nivel de fragmento que capturan el contexto completo del documento sin aumento manual de metadatos. Llama a estos modelos con `contextualized_embed()` en lugar de `embed()`:

| Modelo             | Longitud de contexto | Dimensión del embedding               | Descripción                                                                                                                                                                                                                                                         |
| ------------------ | -------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voyage-context-4` | 120,000              | 1024 (predeterminado), 256, 512, 2048 | Embeddings de fragmentos contextualizados optimizados para la calidad de recuperación de propósito general y multilingüe. Consulta la [publicación del blog de voyage-context-4](https://blog.voyageai.com/2026/06/29/voyage-context-4/) para obtener más detalles. |
| `voyage-context-3` | 120,000              | 1024 (predeterminado), 256, 512, 2048 | Generación anterior de `voyage-context-4`. Consulta la [publicación del blog de voyage-context-3](https://blog.voyageai.com/2025/07/23/voyage-context-3/) para obtener más detalles.                                                                                |

El límite de 120,000 tokens se aplica cuando estableces `enable_auto_chunking` en `true`. De lo contrario, el número total de tokens entre todas las entradas no puede superar los 32,000.

Voyage AI también ofrece "rerankers" (reordenadores), que toman una consulta y una lista de documentos y los devuelven ordenados por relevancia respecto a la consulta. Llama a estos modelos con `rerank()`:

| Modelo            | Longitud de contexto | Descripción                                                                                                                                                                                    |
| ----------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rerank-3`        | 32,000               | La mayor precisión. Recomendado para la mayoría de las aplicaciones. Consulta la [publicación del blog de rerank-3](https://blog.voyageai.com/2026/09/30/rerank-3/) para obtener más detalles. |
| `rerank-3-lite`   | 32,000               | Optimizado para latencia y costo. Consulta la [publicación del blog de rerank-3](https://blog.voyageai.com/2026/09/30/rerank-3/) para obtener más detalles.                                    |
| `rerank-2.5`      | 32,000               | Generación anterior de `rerank-3`. Consulta la [publicación del blog de rerank-2.5](https://blog.voyageai.com/2025/08/11/rerank-2-5/) para obtener más detalles.                               |
| `rerank-2.5-lite` | 32,000               | Generación anterior de `rerank-3-lite`. Consulta la [publicación del blog de rerank-2.5](https://blog.voyageai.com/2025/08/11/rerank-2-5/) para obtener más detalles.                          |

¿Necesitas ayuda para decidir qué modelo usar? Consulta [Voyage AI embedding and reranking models overview](https://www.mongodb.com/docs/voyageai/models/) en la documentación de MongoDB.

## Primeros pasos con Voyage AI

Para acceder a los modelos de Voyage AI, crea una clave de API de modelo en MongoDB Atlas:

1. Regístrate para obtener una cuenta de MongoDB Atlas o inicia sesión.
2. En tu proyecto de Atlas, selecciona **AI Model APIs** en la barra de navegación, haz clic en **Create model API key**, asigna un nombre a la clave y haz clic en **Create**.
3. Por comodidad, establece la clave de API como una variable de entorno:

```bash
export VOYAGE_API_KEY="<your model API key>"
```

Para obtener más detalles, consulta [Voyage AI quick start](https://www.mongodb.com/docs/voyageai/quickstart/) en la documentación de MongoDB.

Puedes obtener los embeddings usando el [paquete oficial de Python `voyageai`](https://github.com/voyage-ai/voyageai-python) o mediante solicitudes HTTP, como se describe en las siguientes secciones. Voyage AI también tiene un cliente oficial de TypeScript. Para usarlo con una clave de API de modelo de Atlas, establece su opción `environment` en `https://ai.mongodb.com/v1`, como se describe en [TypeScript client](https://www.mongodb.com/docs/voyageai/api-and-clients/#typescript-client) en la documentación de MongoDB.

### Biblioteca de Python de Voyage AI

Instala el paquete `voyageai` con el siguiente comando. Para usar una clave de API de modelo de Atlas, necesitas la versión 0.3.7 o posterior.

```bash
pip install -U voyageai
```

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

```python
import voyageai

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

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

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

`result.embeddings` es una lista de dos vectores de embeddings, cada uno con 1024 números de punto flotante. Después de ejecutar el código anterior, los dos embeddings se imprimen en la pantalla:

```text
[-0.013131560757756233, 0.019828535616397858, ...]   # embedding for "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...]  # embedding for "Sample text 2"
```

Al crear los embeddings, puedes especificar algunos otros argumentos para la función `embed()`.

Para obtener más información sobre el paquete de Python, consulta [Accessing Voyage AI models](https://www.mongodb.com/docs/voyageai/api-and-clients/) en la documentación de MongoDB.

### API HTTP de Voyage AI

También puedes obtener embeddings enviando solicitudes HTTP a la Atlas Embedding and Reranking API. Por ejemplo, puedes enviar una solicitud HTTP mediante el comando `curl` en una terminal:

```bash cURL
curl https://ai.mongodb.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VOYAGE_API_KEY" \
  -d '{
    "input": ["Sample text 1", "Sample text 2"],
    "model": "voyage-4",
    "input_type": "document"
  }'
```

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

```json
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [-0.013131560757756233, 0.019828535616397858 /* ... */],
      "index": 0
    },
    {
      "object": "embedding",
      "embedding": [-0.0069352793507277966, 0.020878976210951805 /* ... */],
      "index": 1
    }
  ],
  "model": "voyage-4",
  "usage": {
    "total_tokens": 10
  }
}
```

Las claves de API de modelo de Atlas funcionan con `ai.mongodb.com`, excepto las claves limitadas a una geografía, que usan el endpoint de esa geografía. Si en cambio tienes una clave de API de la plataforma de Voyage AI, consulta [Migrate your applications to use the Atlas Embedding and Reranking API](https://www.mongodb.com/docs/voyageai/tutorials/migrate-to-atlas/) en la documentación de MongoDB.

Para ver la referencia completa de solicitudes y respuestas, consulta [Create text embeddings](https://www.mongodb.com/docs/api/doc/atlas-embedding-and-reranking-api/operation/operation-createembedding) en la documentación de la Atlas Embedding and Reranking API.

### AWS Marketplace

Los modelos de Voyage AI también están disponibles en AWS Marketplace a través del [perfil de vendedor de MongoDB](https://aws.amazon.com/marketplace/seller-profile?id=c9032c7b-70dd-459f-834f-c1e23cf3d092). Para obtener instrucciones, consulta [Deploy Voyage AI models using AWS Marketplace](https://www.mongodb.com/docs/voyageai/management/aws-marketplace/) en la documentación de MongoDB.

## Ejemplo de inicio rápido

El siguiente ejemplo breve muestra cómo usar embeddings.

Supón que tienes un pequeño corpus de seis documentos de los cuales 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, usa Voyage AI para convertir cada documento en un vector de embedding.

```python
import voyageai

vo = voyageai.Client()

# Genera los embeddings de los documentos
doc_embds = vo.embed(documents, model="voyage-4", input_type="document").embeddings
```

Los embeddings te permiten hacer búsqueda / recuperación semántica en el espacio vectorial. Dada una consulta de ejemplo,

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

A continuación, conviértela en un embedding y realiza una búsqueda del vecino más cercano para encontrar el documento más relevante según la distancia en el espacio de embeddings.

```python
import numpy as np

# Genera el embedding de la consulta
query_embd = vo.embed([query], model="voyage-4", input_type="query").embeddings[0]

# Calcula la similitud
# Los embeddings de Voyage AI están normalizados a longitud 1, así que 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])
```

Ten en cuenta que `input_type="document"` e `input_type="query"` se usan para incrustar el documento y la consulta, respectivamente. Para obtener más información sobre `input_type`, consulta [¿Cuándo y cómo debería usar el parámetro input\_type?](https://platform.claude.com/docs/es/build-with-claude/embeddings#faq) en las preguntas frecuentes.

La salida es el quinto documento, que efectivamente es el más relevante para la consulta:

```text wrap
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 buscas un conjunto detallado de recetas sobre cómo hacer RAG con embeddings, incluidas bases de datos vectoriales, consulta la [receta de RAG](https://platform.claude.com/cookbook/third-party-pinecone-rag-using-pinecone).

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Por qué los embeddings de Voyage AI tienen una calidad superior?">
    Los modelos de embeddings se basan en potentes redes neuronales para capturar y comprimir el contexto semántico, de forma similar a los modelos generativos. El equipo de investigadores de IA experimentados de Voyage AI optimiza cada componente del proceso de embedding, incluidos:

    * Arquitectura del modelo
    * Recopilación de datos
    * Funciones de pérdida
    * Selección del optimizador

    Obtén más información sobre el enfoque técnico de Voyage AI en el [blog de Voyage AI](https://blog.voyageai.com/).
  </Accordion>

  <Accordion title="¿Qué modelos de embeddings están disponibles y cuál debería usar?">
    Para embeddings de propósito general, los modelos recomendados son:

    * `voyage-4-large`: Mejor calidad
    * `voyage-4-lite`: Menor latencia y costo
    * `voyage-4`: Rendimiento equilibrado

    Para recuperación, usa el parámetro `input_type` para especificar si el texto es de tipo consulta o documento.

    Modelos específicos de dominio:

    * Tareas legales: `voyage-law-2`
    * Recuperación de código y programación agéntica: `voyage-code-4`
    * Tareas relacionadas con finanzas: `voyage-finance-2`

    Para la recuperación a nivel de fragmento y a nivel de documento: `voyage-context-4`

    Para texto, imágenes y video: `voyage-multimodal-3.5`
  </Accordion>

  <Accordion title="¿Qué función de similitud debería usar?">
    Puedes usar los embeddings de Voyage AI con similitud de producto punto, similitud de coseno o distancia euclidiana. Para obtener una explicación sobre la similitud de embeddings, consulta esta [guía de similitud vectorial](https://www.pinecone.io/learn/vector-similarity/).

    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 esta última puede calcularse más rápidamente.
    * La similitud coseno y la distancia euclidiana producen clasificaciones idénticas.
  </Accordion>

  <Accordion title="¿Cuál es la relación entre caracteres, palabras y tokens?">
    Consulta [Tokenization](https://www.mongodb.com/docs/voyageai/tutorials/tokenization/) en la documentación de MongoDB.
  </Accordion>

  <Accordion title="¿Cuándo y cómo debería usar el parámetro input_type?">
    Para todas las tareas y casos de uso de recuperación (por ejemplo, RAG), usa el parámetro `input_type` para especificar si el texto de entrada es una consulta o un documento. No omitas `input_type` ni establezcas `input_type=None`. Especificar si el texto de entrada es una consulta o un documento puede crear mejores representaciones vectoriales densas para la recuperación, lo que puede conducir a una 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 con `input_type`**
    >
    > * Para una consulta, el prompt es `"Represent the query for retrieving supporting documents: "`.
    >
    > * Para un documento, el prompt es `"Represent the document for retrieval: "`.
    >
    > * Ejemplo
    >
    >   * Cuando `input_type="query"`, una consulta como "When is Apple's conference call scheduled?" se convertirá en "**Represent the query for retrieving supporting documents:** When is Apple's conference call scheduled?"
    >   * Cuando `input_type="document"`, un documento como "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." se convertirá en "**Represent the document for retrieval:** 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."
  </Accordion>

  <Accordion title="¿Qué opciones de cuantización están disponibles?">
    La "quantization" (cuantización) en los 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, lo que reduce el almacenamiento, la memoria y los costos en 4x y 32x, respectivamente. Los modelos de Voyage AI compatibles permiten 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 valor predeterminado y proporciona la mayor precisión / exactitud de recuperación.
    * `int8` y `uint8`: 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.
    * `binary` y `ubinary`: Cada embedding devuelto es una lista de enteros de 8 bits que representan valores de embedding cuantizados de un solo bit empaquetados en bits: `int8` para `binary` y `uint8` para `ubinary`. La longitud de la lista de enteros devuelta es 1/8 de la dimensión real del embedding. El tipo binario usa el método de binario desplazado, como muestra el siguiente ejemplo.

    > **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 la cuantización binaria, los valores menores o iguales a cero se cuantizarán a un cero binario, y los valores positivos a un uno binario, lo que da como resultado la siguiente secuencia binaria: 0, 1, 0, 0, 1, 1, 0, 1. Estos ocho bits se empaquetan luego en un único 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 mediante el método de binario desplazado (77 - 128 = -51).

    Para conocer los modelos que admiten cada tipo de datos, consulta [Create text embeddings](https://www.mongodb.com/docs/api/doc/atlas-embedding-and-reranking-api/operation/operation-createembedding) en la documentación de la Atlas Embedding and Reranking API.
  </Accordion>

  <Accordion title="¿Cómo puedo truncar embeddings Matryoshka?">
    El aprendizaje Matryoshka crea embeddings con representaciones de lo general a lo detallado dentro de un único vector. Los modelos de Voyage AI que admiten múltiples dimensiones de salida, como `voyage-code-4`, generan este tipo de embeddings Matryoshka. Para obtener vectores más cortos desde la API, pasa `output_dimension` (por ejemplo, `output_dimension=256`). Para acortar vectores que ya almacenaste, trúncalos conservando el subconjunto inicial de dimensiones y luego vuelve a normalizarlos. Por ejemplo, el siguiente código de Python muestra cómo truncar vectores de 1024 dimensiones a 256 dimensiones:

    ```python
    import voyageai
    import numpy as np


    def embd_normalize(v: np.ndarray) -> np.ndarray:
        """
        Normalize the rows of a 2D numpy array to unit vectors by dividing each row by its Euclidean
        norm. Raises a ValueError if any row has a norm of zero to prevent division by zero.
        """
        row_norms = np.linalg.norm(v, axis=1, keepdims=True)
        if np.any(row_norms == 0):
            raise ValueError("Cannot normalize rows with a norm of zero.")
        return v / row_norms


    vo = voyageai.Client()

    # Genera vectores voyage-code-4, que por defecto son números de punto flotante de 1024 dimensiones
    embd = vo.embed(["Sample text 1", "Sample text 2"], model="voyage-code-4").embeddings

    # Establece una dimensión más corta
    short_dim = 256

    # Redimensiona y normaliza los vectores a la dimensión más corta
    resized_embd = embd_normalize(np.array(embd)[:, :short_dim]).tolist()
    ```
  </Accordion>
</AccordionGroup>

## Precios

Para obtener los detalles de precios más actualizados, consulta [Model pricing](https://www.mongodb.com/docs/voyageai/management/billing/#model-pricing) en la documentación de MongoDB.
