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'
};

UpsertRequest

Interface for adding or updating vectors in an encrypted index.

Properties

ParameterTypeRequiredDescription
itemsVectorItem[]YesArray 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

ParameterTypeRequiredDefaultDescription
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 = {
    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
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 = {
    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

ParameterTypeRequiredDescription
nListsnumberNoNumber of inverted lists for indexing
batchSizenumberNoSize of each batch for training
maxItersnumberNoMaximum iterations for training
tolerancenumberNoConvergence 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

ParameterTypeRequiredDescription
idsstring[]YesArray 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

ParameterTypeRequiredDefaultDescription
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 = {
    ids: ['doc1', 'doc2'],
    include: ['vector', 'metadata']
};

VectorItem

Class 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']
    }
};

Index Configuration Types

IndexIVF

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

Properties

ParameterTypeRequiredDefaultDescription
dimensionnumber | nullNo-Dimensionality of vector embeddings

Example Usage

import { IndexIVF } from 'cyborgdb';

const indexConfig: IndexIVF = new IndexIVF();

IndexIVFFlat

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

Properties

ParameterTypeRequiredDefaultDescription
dimensionnumber | nullNo-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:
SpeedAccuracyMemory Usage
FastGoodLow

Properties

ParameterTypeRequiredDefaultDescription
pqDimnumberYes-Dimensionality after quantization
pqBitsnumberYes-Number of bits per quantizer (1-16)
dimensionnumber | nullNo-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

ParameterTypeDescription
resultsGetResultItemModel[]Array of retrieved items with requested fields

QueryResponse

Response class 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

Class 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 class for API errors.

Properties

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

HTTPValidationError

Class 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.