Cloudflare Vector Store
The CloudflareVector class provides vector search using Cloudflare Vectorize, a vector database service integrated with Cloudflare’s edge network.
Constructor Options
accountId:
string
Cloudflare account ID
apiToken:
string
Cloudflare API token with Vectorize permissions
Methods
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()
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()
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()
Returns an array of index names as strings.
describeIndex()
indexName:
string
Name of the index to describe
Returns:
interface IndexStats {
dimension: number;
count: number;
metric: "cosine" | "euclidean" | "dotproduct";
}
deleteIndex()
indexName:
string
Name of the index to delete
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()
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()
Lists all metadata field indexes for an index.
indexName:
string
Name of the index to list metadata indexes for
Response Types
Query results are returned in this format:
interface QueryResult {
id: string;
score: number;
metadata: Record<string, any>;
}
Error Handling
The store throws typed errors that can be caught:
try {
await store.query("index_name", queryVector);
} catch (error) {
if (error instanceof VectorStoreError) {
console.log(error.code); // 'connection_failed' | 'invalid_dimension' | etc
console.log(error.details); // Additional error context
}
}
Environment Variables
Required environment variables:
CLOUDFLARE_ACCOUNT_ID
: Your Cloudflare account IDCLOUDFLARE_API_TOKEN
: Your Cloudflare API token with Vectorize permissions