Skip to main content

CreateIndexRequest

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

Properties

ParameterTypeRequiredDescription
indexConfigIndexConfigYesConfiguration model specifying index type and parameters
indexKeyUint8ArrayYes32-byte encryption key
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
    },
    indexKey: Client.generateKey(), // Uint8Array (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
queryVectorsnumber[] | number[][] | nullNo-Vector(s) for similarity search
queryContentsstring | nullNo-Text content for semantic search (requires embedding model)
topKnumberNoundefined (server default: 100)Number of nearest neighbors to return
nProbesnumberNoundefined (auto)Number of lists to probe during query. Auto-determined when undefined for optimal performance.
greedybooleanNofalseWhether to use greedy search algorithm
filtersobject | nullNoundefinedJSON-like dictionary for metadata filtering (no filtering when undefined)
includestring[]Noundefined (server default: ["distance", "metadata"])Fields to include in response. Note: id is always included.

Example Usage

import { QueryRequest } from 'cyborgdb';

const queryRequest: QueryRequest = {
    queryVectors: [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
topKnumberNoundefined (server default: 100)Number of nearest neighbors to return per query
nProbesnumberNoundefined (auto)Number of lists to probe during each query. Auto-determined when undefined.
greedybooleanNofalseWhether to use greedy search algorithm
filtersobjectNoundefinedJSON-like dictionary for metadata filtering (no filtering when undefined)
includestring[]Noundefined (server default: ["distance", "metadata"])Fields to include in response. Note: id is always included.

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[] | nullNo*Vector representation of the item. *Required for upsert operations unless using embedding model
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
type'ivf'Yes-Index type identifier
dimensionnumber | nullNo-Dimensionality of vector embeddings

Example Usage

import { IndexIVF } from 'cyborgdb';

const indexConfig: IndexIVF = {
    type: 'ivf',
    dimension: 768
};

IndexIVFFlat

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

Properties

ParameterTypeRequiredDefaultDescription
type'ivfflat'Yes-Index type identifier
dimensionnumber | nullNo-Dimensionality of vector embeddings

Example Usage

import { IndexIVFFlat } from 'cyborgdb';

const indexConfig: IndexIVFFlat = {
    type: 'ivfflat',
    dimension: 1536
};

IndexIVFPQ

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

Properties

ParameterTypeRequiredDefaultDescription
type'ivfpq'Yes-Index type identifier
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 = {
    type: 'ivfpq',
    pqDim: 64,
    pqBits: 8,
    dimension: 768
};

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.

Properties

ParameterTypeDescription
resultsQueryResultItem[] | QueryResultItem[][]Search results (flat array for single queries, nested array for batch queries)

Example Usage

import { QueryResponse } from 'cyborgdb';

function processQueryResults(response: QueryResponse) {
    // Check if batch response by inspecting the structure
    if (Array.isArray(response.results) &&
        response.results.length > 0 &&
        Array.isArray(response.results[0])) {
        // 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);
    }
}

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.