Skip to main content
Mastra v1 is coming in January 2026. Get ahead by starting new projects with the beta or upgrade your existing project today.

Cloudflare Vector Store

The CloudflareVector class provides vector search using Cloudflare Vectorize, a vector database service integrated with Cloudflare's edge network.

Constructor OptionsDirect link to Constructor Options

accountId:

string
Cloudflare account ID

apiToken:

string
Cloudflare API token with Vectorize permissions

MethodsDirect link to Methods

createIndex()Direct link to createIndex()

indexName:

string
Name of the index to create

dimension:

number
Vector dimension (must match your embedding model)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Distance metric for similarity search (dotproduct maps to dot-product)

upsert()Direct link to upsert()

indexName:

string
Name of the index to upsert into

vectors:

number[][]
Array of embedding vectors

metadata?:

Record<string, any>[]
Metadata for each vector

ids?:

string[]
Optional vector IDs (auto-generated if not provided)

query()Direct link to query()

indexName:

string
Name of the index to query

queryVector:

number[]
Query vector to find similar vectors

topK?:

number
= 10
Number of results to return

filter?:

Record<string, any>
Metadata filters for the query

includeVector?:

boolean
= false
Whether to include vectors in the results

listIndexes()Direct link to listIndexes()

Returns an array of index names as strings.

describeIndex()Direct link to describeIndex()

indexName:

string
Name of the index to describe

Returns:

interface IndexStats {
dimension: number;
count: number;
metric: "cosine" | "euclidean" | "dotproduct";
}

deleteIndex()Direct link to deleteIndex()

indexName:

string
Name of the index to delete

createMetadataIndex()Direct link to createMetadataIndex()

Creates an index on a metadata field to enable filtering.

indexName:

string
Name of the index containing the metadata field

propertyName:

string
Name of the metadata field to index

indexType:

'string' | 'number' | 'boolean'
Type of the metadata field

deleteMetadataIndex()Direct link to deleteMetadataIndex()

Removes an index from a metadata field.

indexName:

string
Name of the index containing the metadata field

propertyName:

string
Name of the metadata field to remove indexing from

listMetadataIndexes()Direct link to listMetadataIndexes()

Lists all metadata field indexes for an index.

indexName:

string
Name of the index to list metadata indexes for

updateVector()Direct link to updateVector()

Updates a vector or metadata for a specific ID within an index.

indexName:

string
Name of the index containing the ID to update

id:

string
Unique identifier of the vector or metadata to update

update:

{ vector?: number[]; metadata?: Record<string, any>; }
Object containing the vector and/or metadata to update

deleteVector()Direct link to deleteVector()

Deletes a vector and its associated metadata for a specific ID within an index.

indexName:

string
Name of the index containing the ID to delete

id:

string
Unique identifier of the vector and metadata to delete

Response TypesDirect link to Response Types

Query results are returned in this format:

interface QueryResult {
id: string;
score: number;
metadata: Record<string, any>;
vector?: number[];
}

Error HandlingDirect link to Error Handling

The store throws typed errors that can be caught:

try {
await store.query({
indexName: "index_name",
queryVector: queryVector,
});
} catch (error) {
if (error instanceof VectorStoreError) {
console.log(error.code); // 'connection_failed' | 'invalid_dimension' | etc
console.log(error.details); // Additional error context
}
}

Environment VariablesDirect link to Environment Variables

Required environment variables:

  • CLOUDFLARE_ACCOUNT_ID: Your Cloudflare account ID
  • CLOUDFLARE_API_TOKEN: Your Cloudflare API token with Vectorize permissions