CreateIndexRequest

The CreateIndexRequest interface defines the parameters for creating a new encrypted index.

Properties

ParameterTypeRequiredDescription
indexConfigIndexConfigYesConfiguration model specifying index type and parameters
indexKeystringYes32-byte encryption key as hex string
indexNamestringYesUnique name/identifier for the index
embeddingModelstring | nullNoOptional 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'
};

IndexOperationRequest

Base interface for operations that require index identification and authentication.

Properties

ParameterTypeRequiredDescription
indexKeystringYes32-byte encryption key as hex string
indexNamestringYesName/identifier of the target index

Example Usage

import { IndexOperationRequest } from 'cyborgdb';

const operationRequest: IndexOperationRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index'
};

UpsertRequest

Interface for adding or updating vectors in an encrypted index.

Properties

ParameterTypeRequiredDescription
indexKeystringYes32-byte encryption key as hex string
indexNamestringYesName/identifier of the target index
itemsVectorItem[]YesArray of vector items to insert or update

Example Usage

import { UpsertRequest, VectorItem } from 'cyborgdb';

const upsertRequest: UpsertRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    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

ParameterTypeRequiredDefaultDescription
indexKeystringYes-32-byte encryption key as hex string
indexNamestringYes-Name/identifier of the target index
queryVectornumber[] | number[][] | nullNo-Vector(s) for similarity search
queryContentsstring | nullNo-Text content for semantic search (requires embedding model)
topKnumberNo100Number of nearest neighbors to return
nProbesnumberNo1Number of lists to probe during query
greedybooleanNofalseWhether to use greedy search algorithm
filtersobject | nullNo-JSON-like dictionary for metadata filtering
includestring[]No["distances"]Fields to include in response

Example Usage

import { QueryRequest } from 'cyborgdb';

const queryRequest: QueryRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    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

ParameterTypeRequiredDefaultDescription
indexKeystringYes-32-byte encryption key as hex string
indexNamestringYes-Name/identifier of the target index
queryVectorsnumber[][]Yes-Array of vectors for batch similarity search
topKnumberNo100Number of nearest neighbors to return per query
nProbesnumberNo1Number of lists to probe during each query
greedybooleanNofalseWhether to use greedy search algorithm
filtersobjectNo-JSON-like dictionary for metadata filtering
includestring[]No["distances"]Fields to include in response

Example Usage

import { BatchQueryRequest } from 'cyborgdb';

const batchQueryRequest: BatchQueryRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    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

ParameterTypeRequiredDefaultDescription
indexKeystringYes-32-byte encryption key as hex string
indexNamestringYes-Name/identifier of the target index
batchSizenumberNo2048Size of each batch for training
maxItersnumberNo100Maximum iterations for training
tolerancenumberNo1e-6Convergence tolerance for training
maxMemorynumberNo0Maximum memory usage in MB (0 = no limit)

Example Usage

import { TrainRequest } from 'cyborgdb';

const trainRequest: TrainRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    batchSize: 4096,
    maxIters: 150,
    tolerance: 1e-8,
    maxMemory: 8192
};

DeleteRequest

Interface for deleting vectors from the encrypted index.

Properties

ParameterTypeRequiredDescription
indexKeystringYes32-byte encryption key as hex string
indexNamestringYesName/identifier of the target index
idsstring[]YesArray of vector IDs to delete

Example Usage

import { DeleteRequest } from 'cyborgdb';

const deleteRequest: DeleteRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    ids: ['doc1', 'doc2', 'doc3']
};

GetRequest

Interface for retrieving specific vectors from the index.

Properties

ParameterTypeRequiredDefaultDescription
indexKeystringYes-32-byte encryption key as hex string
indexNamestringYes-Name/identifier of the target index
idsstring[]Yes-Array of vector IDs to retrieve
includestring[]No["vector", "contents", "metadata"]Fields to include in response

Example Usage

import { GetRequest } from 'cyborgdb';

const getRequest: GetRequest = {
    indexKey: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
    indexName: 'my-vector-index',
    ids: ['doc1', 'doc2'],
    include: ['vector', 'metadata']
};

VectorItem

Interface representing a vectorized item for storage in the encrypted index.

Properties

ParameterTypeRequiredDescription
idstringYesUnique identifier for the vector item
vectornumber[] | nullNoVector representation of the item
contentsstring | nullNoOriginal text or associated content
metadataobject | nullNoAdditional 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']
    }
};

IndexConfig

Base type for index configuration. Use one of the specific index types:

IndexIVF

Standard IVF (Inverted File) index configuration, ideal for balanced performance:
SpeedAccuracyMemory Usage
FastGoodMedium

Properties

ParameterTypeRequiredDefaultDescription
dimensionnumber | nullNo-Dimensionality of vector embeddings
nListsnumberYes-Number of inverted lists
metricstring | nullNo-Distance metric ('cosine', 'euclidean', etc.)
typestringNo'ivf'Index type identifier

Example Usage

import { IndexIVF } from 'cyborgdb';

const ivfConfig: IndexIVF = {
    type: 'ivf',
    dimension: 768,
    nLists: 1024,
    metric: 'cosine'
};

IndexIVFFlat

IVFFlat index configuration, suitable for highest accuracy requirements:
SpeedAccuracyMemory Usage
MediumHighestHigh

Properties

ParameterTypeRequiredDefaultDescription
dimensionnumber | nullNo-Dimensionality of vector embeddings
nListsnumberYes-Number of inverted lists
metricstring | nullNo-Distance metric
typestringNo'ivfflat'Index type identifier

Example Usage

import { IndexIVFFlat } from 'cyborgdb';

const flatConfig: IndexIVFFlat = {
    type: 'ivfflat',
    dimension: 512,
    nLists: 256,
    metric: 'euclidean'
};

IndexIVFPQ

IVFPQ (Product Quantization) index configuration, optimized for memory efficiency:
SpeedAccuracyMemory Usage
FastGoodLow

Properties

ParameterTypeRequiredDefaultDescription
dimensionnumber | nullNo-Dimensionality of vector embeddings
nListsnumberYes-Number of inverted lists
metricstring | nullNo-Distance metric
typestringNo'ivfpq'Index type identifier
pqDimnumberYes-Dimensionality after quantization
pqBitsnumberYes-Number of bits per quantizer (1-16)

Example Usage

import { IndexIVFPQ } from 'cyborgdb';

const pqConfig: IndexIVFPQ = {
    type: 'ivfpq',
    dimension: 1536,
    nLists: 2048,
    metric: 'cosine',
    pqDim: 64,
    pqBits: 8
};

Response Types

GetResponseModel

Response interface for vector retrieval operations.

Properties

ParameterTypeDescription
resultsGetResultItemModel[]Array of retrieved items with requested fields

QueryResponse

Response interface for similarity search operations with helper methods.

Properties

ParameterTypeDescription
resultsQueryResultItem[] | 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

Interface representing a single result from similarity search.

Properties

ParameterTypeDescription
idstringIdentifier of the retrieved item
distancenumber | nullDistance from query vector (lower = more similar)
metadataobject | nullAdditional metadata for the result
vectornumber[] | nullRetrieved vector (if included in response)

Error Types

ErrorResponseModel

Standard error response interface for API errors.

Properties

ParameterTypeDescription
statusCodenumberHTTP status code of the error
detailstringDetailed message describing the error

HTTPValidationError

Interface for validation errors with detailed field information.

Properties

ParameterTypeDescription
detailValidationError[]Array of validation errors with field details

Metadata Filtering

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.