> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cyborg.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Train

Trains the index to optimize it for efficient similarity search queries. Training is essential for IVF-based indexes to achieve optimal query performance and accuracy.

```python theme={null}
index.train(
    batch_size=2048,
    max_iters=100,
    tolerance=1e-6,
    max_memory=0
)
```

### Parameters

| Parameter    | Type    | Default | Description                                     |
| ------------ | ------- | ------- | ----------------------------------------------- |
| `batch_size` | `int`   | `2048`  | Number of vectors to process per training batch |
| `max_iters`  | `int`   | `100`   | Maximum number of training iterations           |
| `tolerance`  | `float` | `1e-6`  | Convergence tolerance for training completion   |
| `max_memory` | `int`   | `0`     | Maximum memory usage in MB (0 = unlimited)      |

<Note>Training is a compute-intensive operation that may take several seconds to minutes depending on the index size and configuration.</Note>

### Returns

`None`

### Exceptions

<AccordionGroup>
  <Accordion title="Error">
    * Throws if the API request fails due to network connectivity issues.
    * Throws if authentication fails (invalid API key).
    * Throws if the encryption key is invalid for the specified index.
    * Throws if there are insufficient resources to complete training.
  </Accordion>

  <Accordion title="Training Errors">
    * Throws if the index has no vectors to train on.
    * Throws if the index configuration is incompatible with training.
    * Throws if training parameters are out of valid ranges.
    * Throws if training fails to converge within the specified parameters.
  </Accordion>
</AccordionGroup>

### Example Usage

#### Basic Index Training

```python theme={null}
# Train the index after adding the data
index.train()
```

#### Custom Training Parameters

```python theme={null}
# Train with custom parameters for large dataset
index.train(
    batch_size=4096,     # Larger batches for better performance
    max_iters=200,       # More iterations for better convergence
    tolerance=1e-7,      # Stricter convergence criteria
    max_memory=2048      # Limit memory usage to 2GB
)
```
