Documentation Index
Fetch the complete documentation index at: https://docs.cyborg.co/llms.txt
Use this file to discover all available pages before exploring further.
CreateIndexRequest
The CreateIndexRequest interface defines the parameters for creating a new encrypted index.
Properties
| Parameter | Type | Required | Description |
indexConfig | IndexConfig | Yes | Configuration model specifying index type and parameters |
indexKey | string | Yes | 32-byte encryption key as hex string |
indexName | string | Yes | Unique name/identifier for the index |
embeddingModel | string | null | No | Optional embedding model name for automatic vector generation |
Example Usage
import { CreateIndexRequest, IndexIVF } from 'cyborgdb';
const createRequest: CreateIndexRequest = {
indexConfig: {
type: 'ivf',
dimension: 768,
nLists: 1024,
metric: 'cosine'
},
indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', // 64 hex chars (32 bytes)
indexName: 'my-vector-index',
embeddingModel: 'text-embedding-3-small'
};
UpsertRequest
Interface for adding or updating vectors in an encrypted index.
Properties
| Parameter | Type | Required | Description |
items | VectorItem[] | Yes | Array of vector items to insert or update |
Example Usage
import { UpsertRequest, VectorItem } from 'cyborgdb';
const upsertRequest: UpsertRequest = {
items: [
{
id: 'doc1',
vector: [0.1, 0.2, 0.3, /* ... */],
contents: 'Document content',
metadata: { title: 'Document 1', category: 'research' }
}
]
};
QueryRequest
Interface for performing similarity search in the encrypted index.
Properties
| Parameter | Type | Required | Default | Description |
queryVector | number[] | number[][] | null | No | - | Vector(s) for similarity search |
queryContents | string | null | No | - | Text content for semantic search (requires embedding model) |
topK | number | No | 100 | Number of nearest neighbors to return |
nProbes | number | No | 1 | Number of lists to probe during query |
greedy | boolean | No | false | Whether to use greedy search algorithm |
filters | object | null | No | - | JSON-like dictionary for metadata filtering |
include | string[] | No | ["distances"] | Fields to include in response |
Example Usage
import { QueryRequest } from 'cyborgdb';
const queryRequest: QueryRequest = {
queryVector: [0.1, 0.2, 0.3, /* ... */],
topK: 10,
nProbes: 5,
greedy: false,
filters: { category: 'research' },
include: ['distance', 'metadata', 'vector']
};
BatchQueryRequest
Interface for performing batch similarity searches with multiple vectors.
Properties
| Parameter | Type | Required | Default | Description |
queryVectors | number[][] | Yes | - | Array of vectors for batch similarity search |
topK | number | No | 100 | Number of nearest neighbors to return per query |
nProbes | number | No | 1 | Number of lists to probe during each query |
greedy | boolean | No | false | Whether to use greedy search algorithm |
filters | object | No | - | JSON-like dictionary for metadata filtering |
include | string[] | No | ["distances"] | Fields to include in response |
Example Usage
import { BatchQueryRequest } from 'cyborgdb';
const batchQueryRequest: BatchQueryRequest = {
queryVectors: [
[0.1, 0.2, 0.3, /* ... */],
[0.4, 0.5, 0.6, /* ... */],
[0.7, 0.8, 0.9, /* ... */]
],
topK: 5,
nProbes: 3,
filters: { status: 'published' },
include: ['distance', 'metadata']
};
TrainRequest
Interface for training an index to optimize query performance.
Properties
| Parameter | Type | Required | Description |
nLists | number | No | Number of inverted lists for indexing |
batchSize | number | No | Size of each batch for training |
maxIters | number | No | Maximum iterations for training |
tolerance | number | No | Convergence tolerance for training |
Example Usage
import { TrainRequest } from 'cyborgdb';
const trainRequest: TrainRequest = {
nLists: 8192
batchSize: 4096,
maxIters: 150,
tolerance: 1e-8,
};
DeleteRequest
Interface for deleting vectors from the encrypted index.
Properties
| Parameter | Type | Required | Description |
ids | string[] | Yes | Array of vector IDs to delete |
Example Usage
import { DeleteRequest } from 'cyborgdb';
const deleteRequest: DeleteRequest = {
ids: ['doc1', 'doc2', 'doc3']
};
GetRequest
Interface for retrieving specific vectors from the index.
Properties
| Parameter | Type | Required | Default | Description |
ids | string[] | Yes | - | Array of vector IDs to retrieve |
include | string[] | No | ["vector", "contents", "metadata"] | Fields to include in response |
Example Usage
import { GetRequest } from 'cyborgdb';
const getRequest: GetRequest = {
ids: ['doc1', 'doc2'],
include: ['vector', 'metadata']
};
VectorItem
Class representing a vectorized item for storage in the encrypted index.
Properties
| Parameter | Type | Required | Description |
id | string | Yes | Unique identifier for the vector item |
vector | number[] | null | No | Vector representation of the item |
contents | string | null | No | Original text or associated content |
metadata | object | null | No | Additional structured metadata |
Example Usage
import { VectorItem } from 'cyborgdb';
const vectorItem: VectorItem = {
id: 'article_123',
vector: [0.1, 0.2, 0.3, /* ... 768 dimensions */],
contents: 'This is the content of the article...',
metadata: {
title: 'Introduction to Vector Databases',
author: 'Dr. Smith',
published_date: '2024-01-15',
category: 'technology',
tags: ['vectors', 'database', 'ai']
}
};
Index Configuration Types
IndexIVF
Standard IVF (Inverted File) index configuration, ideal for balanced performance:
| Speed | Accuracy | Memory Usage |
| Fast | Good | Medium |
Properties
| Parameter | Type | Required | Default | Description |
dimension | number | null | No | - | Dimensionality of vector embeddings |
Example Usage
import { IndexIVF } from 'cyborgdb';
const indexConfig: IndexIVF = new IndexIVF();
IndexIVFFlat
IVFFlat index configuration, suitable for highest accuracy requirements:
| Speed | Accuracy | Memory Usage |
| Medium | Highest | High |
Properties
| Parameter | Type | Required | Default | Description |
dimension | number | null | No | - | Dimensionality of vector embeddings |
Example Usage
import { IndexIVFFlat } from 'cyborgdb';
const indexConfig: IndexIVFFlat = new IndexIVFFlat();
IndexIVFPQ
IVFPQ (Product Quantization) index configuration, optimized for memory efficiency:
| Speed | Accuracy | Memory Usage |
| Fast | Good | Low |
Properties
| Parameter | Type | Required | Default | Description |
pqDim | number | Yes | - | Dimensionality after quantization |
pqBits | number | Yes | - | Number of bits per quantizer (1-16) |
dimension | number | null | No | - | Dimensionality of vector embeddings |
Example Usage
import { IndexIVFPQ } from 'cyborgdb';
const indexConfig: IndexIVFPQ = new IndexIVFPQ({
pqDim: 64,
pqBits: 8
});
Response Types
GetResponseModel
Response class for vector retrieval operations.
Properties
| Parameter | Type | Description |
results | GetResultItemModel[] | Array of retrieved items with requested fields |
QueryResponse
Response class for similarity search operations with helper methods.
Properties
| Parameter | Type | Description |
results | QueryResultItem[] | QueryResultItem[][] | Search results (flat for single queries, nested for batch) |
Helper Methods
isBatchResponse(): boolean: Determines if response contains batch results
getFirstResultSet(): QueryResultItem[]: Returns first result set from response
Example Usage
import { QueryResponse } from 'cyborgdb';
function processQueryResults(response: QueryResponse) {
if (response.isBatchResponse()) {
// Handle batch results
const batchResults = response.results as QueryResultItem[][];
batchResults.forEach((batch, index) => {
console.log(`Batch ${index}:`, batch);
});
} else {
// Handle single query results
const singleResults = response.results as QueryResultItem[];
console.log('Results:', singleResults);
}
// Always get first result set
const firstResults = response.getFirstResultSet();
console.log('First result:', firstResults[0]);
}
QueryResultItem
Class representing a single result from similarity search.
Properties
| Parameter | Type | Description |
id | string | Identifier of the retrieved item |
distance | number | null | Distance from query vector (lower = more similar) |
metadata | object | null | Additional metadata for the result |
vector | number[] | null | Retrieved vector (if included in response) |
Error Types
ErrorResponseModel
Standard error response class for API errors.
Properties
| Parameter | Type | Description |
statusCode | number | HTTP status code of the error |
detail | string | Detailed message describing the error |
HTTPValidationError
Class for validation errors with detailed field information.
Properties
| Parameter | Type | Description |
detail | ValidationError[] | Array of validation errors with field details |
The filters parameter in query operations supports a subset of MongoDB query operators for flexible metadata filtering:
Supported Operators
$eq: Equality ({ "category": "research" })
$ne: Not equal ({ "status": { "$ne": "draft" } })
$gt: Greater than ({ "score": { "$gt": 0.8 } })
$gte: Greater than or equal ({ "year": { "$gte": 2020 } })
$lt: Less than ({ "price": { "$lt": 100 } })
$lte: Less than or equal ({ "rating": { "$lte": 4.5 } })
$in: In array ({ "tag": { "$in": ["ai", "ml"] } })
$nin: Not in array ({ "category": { "$nin": ["spam", "deleted"] } })
$and: Logical AND ({ "$and": [{"a": 1}, {"b": 2}] })
$or: Logical OR ({ "$or": [{"x": 1}, {"y": 2}] })
Filter Examples
// Simple equality filter
const simpleFilter = { "category": "research" };
// Range filter
const rangeFilter = {
"published_year": { "$gte": 2020, "$lte": 2024 }
};
// Complex compound filter
const complexFilter = {
"$and": [
{ "category": "research" },
{ "confidence": { "$gte": 0.9 } },
{ "$or": [
{ "language": "en" },
{ "translated": true }
]}
]
};
For more information on metadata filtering, see Metadata Filtering.
Field Selection
Many operations support field selection through the include parameter:
Available Fields
vector: The vector data itself
contents: Text or binary content associated with the vector
metadata: Structured metadata object
distance: Similarity distance (query operations only)
Example Usage
// Include only metadata (efficient for existence checks)
const metadataOnly = { include: ['metadata'] };
// Include vectors and distances (for similarity analysis)
const vectorsAndDistances = { include: ['vector', 'distance'] };
// Include all available fields
const allFields = { include: ['vector', 'contents', 'metadata', 'distance'] };
Selecting only necessary fields improves performance by reducing data transfer and processing overhead.