> ## 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.

# Getters

`EncryptedIndex` exposes index settings as properties, plus two training-status methods. Every getter except `index_name` calls the service's describe or training-status endpoint.

On HTTP errors, getters raise the same [`CyborgDBError`](./errors) subclasses as the other methods, for example `NotFoundError` if the index was deleted.

## index\_name

```python theme={null}
@property
index_name: str
```

The index's name. Read locally, with no network call.

```python theme={null}
print(index.index_name)
# Output: my-vectors
```

***

## dimension

```python theme={null}
@property
dimension: int
```

Vector dimensionality. Returns `0` if the index was created without a `dimension` and nothing has been upserted yet. Once non-zero, the value is cached and later reads don't call the service.

```python theme={null}
print(index.dimension)
# Output: 384
```

***

## metric

```python theme={null}
@property
metric: str
```

Distance metric: `"euclidean"`, `"squared_euclidean"`, or `"cosine"`. Cached after the first read.

```python theme={null}
print(index.metric)
# Output: euclidean
```

***

## n\_lists

```python theme={null}
@property
n_lists: int
```

Number of IVF lists. `1` for an untrained index; the trained list count after [`train()`](./encrypted-index/train). Fetched from the service on every read.

```python theme={null}
print(index.n_lists)
# Output: 1
```

***

## metadata\_schema

```python theme={null}
@property
metadata_schema: Dict[str, Dict[str, bool]]
```

The per-field indexing policy set with `metadata_schema` or `text_fields` in [`create_index()`](./client/create-index#metadata-schema). Each entry has `filterable`, `pattern`, and `full_text`. `{}` when the index uses the default policy. Fetched on every read.

```python theme={null}
print(index.metadata_schema)
# Output: {'body': {'filterable': False, 'pattern': False, 'full_text': True}}
```

***

## bm25

```python theme={null}
@property
bm25: Optional[Dict[str, Any]]
```

The index's BM25 settings, or `None` when it has no full-text fields.

| Key | Type | Description |
| - | - | - |
| `k1` | `float` | Term-frequency saturation. |
| `b` | `float` | Length normalization. |
| `analyzer_version` | `str` or `None` | Text analyzer the index was built with. |

```python theme={null}
print(index.bm25)
# Output: {'k1': 1.2, 'b': 0.75, 'analyzer_version': 'en/1;sw=2de831ef7be676b6;snowball-english-utf8-3.0.1'}
```

***

## is\_trained

```python theme={null}
index.is_trained() -> bool
```

`True` if the index has been trained. Raises a [`CyborgDBError`](./errors) subclass if the describe request fails, for example `NotFoundError` if the index was deleted.

```python theme={null}
if not index.is_trained():
    index.train()
```

***

## is\_training

```python theme={null}
index.is_training() -> bool
```

`True` while the service is training this index or has it queued for training. Requires the root key: with a per-user key the service returns HTTP `403` and the SDK raises `cyborgdb.AuthenticationError`.

```python theme={null}
import time

while index.is_training():
    time.sleep(5)
print(index.is_trained())
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.