Skip to main content

Vector Store Configuration

Vector store settings determine where your document embeddings are stored and how they're accessed.

Select the project first, then choose a provider from the card grid. The selected card shows its supported embedding dimensions and distance metrics. Configure that provider below the grid, save its credential separately, and use Test Connection before syncing. Changing the provider does not move existing vectors; re-sync documents to populate the new destination.

Available Providers​

ProviderDescriptionSupported DimensionsBest For
SupabasePostgreSQL with pgvector extension1–2,000Integrated solution, SQL queries
PostgreSQL / pgvectorAny public PostgreSQL database with pgvector1–2,000Existing managed PostgreSQL accounts
PineconeManaged vector database1–4,096High scale, low latency
Cloudflare VectorizeGlobally distributed managed vector database1–1,536Cloudflare applications and edge retrieval
QdrantOpen-source vector database1–4,096Self-hosted, flexible deployment
MilvusOpen-source distributed vector database1–4,096Self-hosted or Zilliz Cloud

These ranges describe the configurations currently supported and tested by Vector Data Loader. The Supabase and generic PostgreSQL adapters create pgvector HNSW indexes over the vector type, so their current limit is 2,000 dimensions.

Provider compatibility is checked against the embedding model saved for the selected project. An existing index must use the same vector dimension; if it does not, choose a compatible model or initialize a separate index. Credentials and connection settings are scoped to the selected project.

Supabase Configuration​

When using Supabase (the default):

  1. Service URL: Your Supabase project URL
  2. Service Key: Service role key for server-side operations
  3. Table Name: Name of the table storing vectors (default: document_chunks)

Setup Status: Shows whether the required database table exists

Use the Project URL, not the MCP server URL

The Service URL must be your project's Data API endpoint — an origin with no path:

https://your-project-ref.supabase.co

Find it in Supabase under Project Settings → Data API → Project URL.

Other Supabase URLs will not work, even though they look similar. The most common mistake is pasting the MCP server URL:

https://mcp.supabase.com/project_ref=your-project-ref ❌ not a Data API endpoint

That address serves the Model Context Protocol, not PostgREST, so every read and write returns 404. Saving a URL with a path, query string, or the mcp.supabase.com host is now rejected with an explanatory error.

Initialize Database: Creates the necessary table and indexes if not present

Auto-Setup Limitation for External Supabase Projects

The Initialize Database button uses automatic setup, which requires the exec_sql helper function to be present on your Supabase database. This is a technical limitation of Supabase's REST API (PostgREST), which cannot execute DDL statements like CREATE TABLE directly.

For external Supabase projects (not the app's built-in database):

  1. Click Initialize Database - it will attempt auto-setup
  2. If it fails, a Manual Setup SQL box will appear
  3. Copy the SQL and run it in your Supabase project's SQL Editor
  4. Click Test Connection to verify the setup succeeded

This is a one-time setup. Once the table and functions are created, everything works automatically.

PostgreSQL / pgvector Configuration​

Use this provider to connect a PostgreSQL database that is independent of Supabase. Configure:

  1. Host and Port: A public PostgreSQL endpoint and its TCP port. Enter the hostname only, without a URL scheme or credentials.
  2. Database and Username: The target database and a dedicated database role.
  3. Database Password: Saved separately, encrypted at rest, and never returned to the browser.
  4. Table Name: The table used for chunks (default: document_chunks).
  5. TLS Certificate Validation: Use Verify certificate whenever the provider has a publicly trusted certificate. Use Require encryption only when the provider requires TLS but does not present a verifiable certificate chain.

Save the connection and password, then choose Test Connection. If pgvector, the table, or the cosine HNSW index is missing, choose Initialize Database. The database role must be allowed to create the vector extension, table, and indexes. If it lacks those privileges, copy the generated SQL and have a database administrator run it.

Public endpoints and tenant filters

The current release rejects localhost, private IP ranges, and internal hostnames. PostgreSQL traffic always uses TLS. Vector Data Loader filters every data operation by organization_id and project_id; external applications must apply both filters as well.

Auto-Setup Comparison​

ProviderAuto-SetupNotes
Pinecone✅ WorksNative SDK supports index creation
Cloudflare Vectorize✅ WorksCreates the index and required tenant metadata indexes through the Cloudflare API
Qdrant✅ WorksREST API supports collection creation
Milvus✅ WorksREST API v2 supports collection creation
PostgreSQL / pgvector✅ WorksRequires a role that can create the extension, table, and indexes
Supabase⚠️ ManualRequires SQL execution in Supabase Dashboard

Pinecone Configuration​

For Pinecone:

  1. API Key: Your Pinecone API key
  2. Index Name: Name of your Pinecone dense-vector index
  3. Namespace: Optional namespace within the index

The index dimension must match the embedding model configured for the project. Use Test Connection to verify the saved key and index before syncing documents.

Cloudflare Vectorize Configuration​

Configure the following values from the Cloudflare dashboard:

  1. Account ID: The 32-character identifier for the Cloudflare account that owns the index.
  2. Index Name: An existing Vectorize V2 index, or the name to create during initialization.
  3. API Token: A scoped token with Vectorize Read and Vectorize Write permissions. The token is encrypted at rest and never returned to the browser.

Choose Test Connection to inspect the index and tenant metadata indexes. Choose Initialize Vectorize to create a missing index using the current project's embedding dimensions and cosine metric, then create string metadata indexes for organization_id and project_id.

Tenant isolation and asynchronous writes

Vector Data Loader derives a namespace from the authenticated organization and selected project. Searches also require matching organization_id and project_id metadata. Vectorize mutations are asynchronous, so newly synced or deleted vectors can take a few seconds to appear in queries.

Vectorize currently supports up to 1,536 dimensions. Select an embedding model at or below that limit before saving or initializing this provider. External clients must reproduce the application's namespace derivation and apply both metadata filters; Connection Details does not expose the namespace hash or an API token.

Qdrant Configuration​

For Qdrant:

  1. API Key: Authentication key required by the current initial-sync flow
  2. Server URL: Qdrant server endpoint
  3. Collection Name: Target collection for vectors

Milvus Configuration​

Milvus is an open-source distributed vector database designed for high-performance similarity search. It supports both self-hosted deployment and Zilliz Cloud, the fully managed Milvus service.

Configuration fields:

  1. Address: Milvus server URL. For self-hosted Milvus, use an authenticated endpoint reachable from the hosted app. Zilliz Cloud: your cluster's Public Endpoint (e.g. https://in03-xxxx.serverless.aws-us-east-1.cloud.zilliz.com).
  2. Collection Name: Name of the collection to store vectors (default: document_chunks). The collection is created automatically when you click Initialize.
  3. Token: Authentication token. Required by the current initial-sync flow for both Zilliz Cloud and self-hosted deployments.

Getting Started with Milvus​

Self-hosted (Docker):

  1. Start Milvus standalone:
    docker run -d --name milvus-standalone -p 19530:19530 milvusdb/milvus:latest standalone
  2. Enter the authenticated server endpoint reachable from Vector Data Loader as the Address. localhost on your computer is not reachable from the hosted app.
  3. Enter the authentication Token. Connection testing alone does not confirm that initial sync will accept an unauthenticated configuration.
  4. Click Initialize — the collection is created automatically.

Zilliz Cloud (managed Milvus):

  1. Create a cluster at cloud.zilliz.com.
  2. Copy the Public Endpoint URL and paste it as the Address.
  3. Copy the API Key and paste it as the Token.
  4. Click Initialize — the collection is created automatically.
Initialize Database

Unlike Supabase, Milvus auto-setup works out of the box. The collection is created automatically via the Milvus REST API v2 when you click Initialize. No manual SQL execution is required.

Troubleshooting Milvus
  • Connection refused: Verify Milvus is running and port 19530 is accessible from the server.
  • Unauthorized: Check that your token is correct. Zilliz Cloud always requires a token; self-hosted without authentication should have a blank token.
  • Collection not found: Click Initialize to create the collection automatically.

Testing Connection​

Click Test Connection to verify your configuration:

  • Checks connectivity to the provider
  • Validates credentials
  • Confirms collection/table existence

Embedding Compatibility​

Vector Data Loader checks the vector-store provider against the embedding model selected for the current project. It blocks settings or initialization when the embedding dimensions exceed the adapter's supported range. When the provider exposes index metadata, it also compares the live index dimension with the embedding model dimension.

The compatibility panel reports one of these states:

  • Compatible: The live index and embedding model use the same dimensions.
  • Incompatible: The provider limit or live index dimension conflicts with the embedding model. Choose a compatible embedding dimension or create a matching index before syncing.
  • Unverified: The provider cannot report a dimension yet, which is common for an empty Supabase table. Compatibility is checked again after vectors exist.

Initialization always uses the saved embedding configuration for the current project. A browser request cannot override the dimension.

Index Information​

After a successful connection test, an Index Information card appears showing:

FieldDescription
DimensionVector dimension (e.g., 1536 for OpenAI text-embedding-3-small)
Distance MetricSimilarity algorithm used (Cosine, Euclidean, or Dot Product)
StatusCurrent index status (Ready, Initializing, Error, or Unknown)
VectorsTotal number of vector embeddings stored

Project-Scoped Configuration​

Vector store settings are configured per-project. This allows different projects to use different vector stores or configurations, enabling:

  • Separation of data by client or use case
  • Different performance configurations
  • Testing environments