VectorMock
Mock vector database server for testing RAG pipelines and embedding-based retrieval. Supports Pinecone, Qdrant, and ChromaDB API formats with collection management, upsert, query, and delete operations.
Quick Start
Standalone mode typescript
import { VectorMock } from "@copilotkit/aimock";
const vector = new VectorMock();
vector.addCollection("docs", { dimension: 1536 });
vector.onQuery("docs", [
{ id: "doc-1", score: 0.95, metadata: { title: "Getting Started" } },
{ id: "doc-2", score: 0.87, metadata: { title: "API Reference" } },
]);
const url = await vector.start();
// Point your vector DB client at `url`
Mounted Mode
Mount VectorMock onto an LLMock server to share a single port with LLM mocking and other services:
Mount on LLMock typescript
import { LLMock, VectorMock } from "@copilotkit/aimock";
const llm = new LLMock({ port: 5555 });
const vector = new VectorMock();
vector.addCollection("embeddings", { dimension: 768 });
vector.onQuery("embeddings", [{ id: "v1", score: 0.9 }]);
llm.mount("/vector", vector);
await llm.start();
// Vector API at http://127.0.0.1:5555/vector
Collection Management
Collections API typescript
// Create a collection with a dimension
vector.addCollection("products", { dimension: 384 });
// Upsert vectors into a collection
vector.upsert("products", [
{ id: "p1", values: [0.1, 0.2, ...], metadata: { name: "Widget" } },
{ id: "p2", values: [0.3, 0.4, ...], metadata: { name: "Gadget" } },
]);
// Delete a collection
vector.deleteCollection("products");
Query Handlers
Register static results or dynamic handlers for query responses:
onQuery API typescript
// Static results — always returns these
vector.onQuery("docs", [
{ id: "d1", score: 0.95, metadata: { topic: "setup" } },
]);
// Dynamic handler — receives the query, returns results
vector.onQuery("docs", (query) => {
const topK = query.topK ?? 10;
return Array.from({ length: topK }, (_, i) => ({
id: `result-${i}`,
score: 1 - i * 0.1,
}));
});
Pinecone-Compatible Endpoints
| Method | Path | Description |
|---|---|---|
POST |
/query |
Query vectors by namespace |
POST |
/vectors/upsert |
Upsert vectors into a namespace |
POST |
/vectors/delete |
Delete vectors by ID |
GET |
/describe-index-stats |
Get index statistics |
Qdrant-Compatible Endpoints
| Method | Path | Description |
|---|---|---|
POST |
/collections/{name}/points/search |
Search points in a collection |
PUT |
/collections/{name}/points |
Upsert points into a collection |
POST |
/collections/{name}/points/delete |
Delete points by ID |
ChromaDB-Compatible Endpoints
| Method | Path | Description |
|---|---|---|
POST |
/api/v1/collections/{id}/query |
Query a collection |
POST |
/api/v1/collections/{id}/add |
Add embeddings to a collection |
GET |
/api/v1/collections |
List all collections |
DELETE |
/api/v1/collections/{id} |
Delete a collection |
Config File
VectorMock can be configured via the aimock JSON config file:
aimock.json json
{
"vector": {
"path": "/vector",
"collections": [
{
"name": "docs",
"dimension": 1536,
"vectors": [
{ "id": "v1", "values": [0.1, 0.2], "metadata": { "title": "Intro" } }
],
"queryResults": [
{ "id": "v1", "score": 0.95, "metadata": { "title": "Intro" } }
]
}
]
}
}
Inspection
Inspection API typescript
vector.health(); // { status: "ok", collections: 2 }
vector.getRequests(); // Journal entries (when mounted with shared journal)
vector.reset(); // Clears all collections and query handlers