## Configure Vector Store

`client.VectorStores.Configure(ctx, vectorStoreName, body) (*VectorStore, error)`

**post** `/v5/vector-stores/{vector_store_name}/configure`

Update the indexed metadata fields configuration for a vector store.

This replaces the current set of indexed metadata fields. Only indexed fields can be used for
filtering during query, list, and count operations; non-indexed fields are still stored and
returned, but cannot be filtered on.

**Field Types:** Only STRING, NUMBER, and BOOLEAN fields can be indexed (maximum 20 fields).
OBJECT and LIST types are stored but cannot be indexed for filtering.

**Adding Fields:** New indexed fields can be added at any time. They are indexed for documents
upserted after the change; to make existing documents filterable on a new field, re-upsert them.

**Removing Fields:** Omitting a field removes it from this configuration, so it can no longer be
filtered on. The underlying index is append-only, so removal does not reclaim storage or reduce
write overhead; the field stays in the physical index until the store is recreated. Prefer
indexing only the fields you filter on.

**Note:** The `name` and `embedding_config` are immutable after creation.

### Parameters

- `vectorStoreName string`

  The name of the vector store

- `body VectorStoreConfigureParams`

  - `IndexedMetadataFields param.Field[map[string, string]]`

    Dictionary mapping metadata field names to their types. Only STRING, NUMBER, and BOOLEAN types can be indexed.

    - `const VectorStoreConfigureParamsIndexedMetadataFieldString VectorStoreConfigureParamsIndexedMetadataField = "string"`

    - `const VectorStoreConfigureParamsIndexedMetadataFieldNumber VectorStoreConfigureParamsIndexedMetadataField = "number"`

    - `const VectorStoreConfigureParamsIndexedMetadataFieldBoolean VectorStoreConfigureParamsIndexedMetadataField = "boolean"`

### Returns

- `type VectorStore struct{…}`

  Response model for vector store operations.

  - `ID string`

    The unique identifier of the vector store

  - `CreatedAt Time`

    Timestamp of creation

  - `EmbeddingDimensions int64`

    Dimensionality of the embedding vectors

  - `Name string`

    The name of the vector store

  - `UpdatedAt Time`

    Timestamp of last update

  - `EmbeddingConfig EmbeddingConfigUnion`

    Embedding configuration identifying the model and its type. None for raw-embedding-only stores.

    - `type EmbeddingConfigModelsAPI struct{…}`

      - `ModelDeploymentID string`

        The ID of the deployment of the created model in the Models API V3.

      - `Type ModelsAPI`

        The type of the embedding configuration.

        - `const ModelsAPIModelsAPI ModelsAPI = "models_api"`

    - `type EmbeddingConfigBase struct{…}`

      - `EmbeddingModel EmbeddingModelName`

        The name of the base embedding model to use. Either a known base model (EmbeddingModelName) or, in ray-serve deployments with NATIVE_OPENAI_EMBEDDING_GATEWAY enabled, any model id served by the OpenAI-compatible inference proxy (e.g. 'nomic-embed-text-v1.5'). For fully custom deployments, use type 'models_api' with a model_deployment_id.

        - `type EmbeddingModelName string`

          - `const EmbeddingModelNameSentenceTransformersAllMiniLmL12V2 EmbeddingModelName = "sentence-transformers/all-MiniLM-L12-v2"`

          - `const EmbeddingModelNameSentenceTransformersMultiQaDistilbertCosV1 EmbeddingModelName = "sentence-transformers/multi-qa-distilbert-cos-v1"`

          - `const EmbeddingModelNameOpenAITextEmbeddingAda002 EmbeddingModelName = "openai/text-embedding-ada-002"`

          - `const EmbeddingModelNameOpenAITextEmbedding3Small EmbeddingModelName = "openai/text-embedding-3-small"`

          - `const EmbeddingModelNameOpenAITextEmbedding3Large EmbeddingModelName = "openai/text-embedding-3-large"`

          - `const EmbeddingModelNameEmbedEnglishV3_0 EmbeddingModelName = "embed-english-v3.0"`

          - `const EmbeddingModelNameEmbedEnglishLightV3_0 EmbeddingModelName = "embed-english-light-v3.0"`

          - `const EmbeddingModelNameEmbedMultilingualV3_0 EmbeddingModelName = "embed-multilingual-v3.0"`

          - `const EmbeddingModelNameGeminiTextEmbedding005 EmbeddingModelName = "gemini/text-embedding-005"`

          - `const EmbeddingModelNameGeminiTextMultilingualEmbedding002 EmbeddingModelName = "gemini/text-multilingual-embedding-002"`

          - `const EmbeddingModelNameGeminiGeminiEmbedding001 EmbeddingModelName = "gemini/gemini-embedding-001"`

        - `string`

      - `Type EmbeddingConfigBaseType`

        The type of the embedding configuration.

        - `const EmbeddingConfigBaseTypeBase EmbeddingConfigBaseType = "base"`

  - `IndexedMetadataFields map[string, string]`

    Dictionary mapping metadata field names to their types

    - `const VectorStoreIndexedMetadataFieldString VectorStoreIndexedMetadataField = "string"`

    - `const VectorStoreIndexedMetadataFieldNumber VectorStoreIndexedMetadataField = "number"`

    - `const VectorStoreIndexedMetadataFieldBoolean VectorStoreIndexedMetadataField = "boolean"`

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/scaleapi/sgp-dev-go"
  "github.com/scaleapi/sgp-dev-go/option"
)

func main() {
  client := sgpdev.NewClient(
    option.WithAPIKey("My API Key"),
    option.WithAccountID("My Account ID"),
  )
  vectorStore, err := client.VectorStores.Configure(
    context.TODO(),
    "vector_store_name",
    sgpdev.VectorStoreConfigureParams{
      IndexedMetadataFields: map[string]string{
      "foo": "string",
      },
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", vectorStore.ID)
}
```

#### Response

```json
{
  "id": "id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "embedding_dimensions": 0,
  "name": "name",
  "updated_at": "2019-12-27T18:11:19.117Z",
  "embedding_config": {
    "model_deployment_id": "model_deployment_id",
    "type": "models_api"
  },
  "indexed_metadata_fields": {
    "foo": "string"
  }
}
```
