Skip to main content

Types

Core data types used across all implementations.

Configuration Types

LshConfig

Configuration parameters for LSH hashing algorithm.

pub struct LshConfig {
pub families: usize, // Number of hash families (default: 3)
pub bits: usize, // Bits per signature (default: 256)
pub bands: usize, // Number of bands (default: 16)
}

Fields:

  • families: Number of independent hash families to generate (increases recall)
  • bits: Number of bits per signature (increases precision, default 256 = 64 hex chars)
  • bands: Number of bands to divide signature into (for LSH bucketing)

Default: { families: 3, bits: 256, bands: 16 }


Version & Algorithm Types

SignatureVersion

Enumeration of supported signature versions. Each version corresponds to a specific embedding model.

pub enum SignatureVersion {
V0, // OpenAI text-embedding-3-large (1536 dims)
V1, // 0din-jailbreak-embeddings-small ONNX (1024 dims)
Latest, // Resolves to V1
}
Version Compatibility

V0 and V1 signatures are NOT comparable because they use different embedding models and dimensionalities. Always compare signatures from the same version.

HashAlgorithm

Algorithm identifier for hash method.

pub enum HashAlgorithm {
Lsh, // Generic LSH
OpenAI, // OpenAI embeddings (V0)
Onnx, // ONNX local embeddings (V1)
}

LSH Output Types

LshFamily

Result of LSH hashing for a single hash family.

pub struct LshFamily {
pub family: usize, // Family index (0, 1, 2 for default config)
pub bits: usize, // Number of bits (256 by default)
pub signature: String, // Hex-encoded signature (64 chars for 256 bits)
pub bands: Vec<String>, // Band slices (16 by default, 4 hex chars each)
}

Example:

{
"family": 0,
"bits": 256,
"signature": "8d000000ac854dae7f3b9c1e...",
"bands": ["8d00", "0000", "ac85", ...]
}

LshOutput

Complete LSH hashing result with all families.

pub struct LshOutput {
pub families: Vec<LshFamily>,
pub config: LshConfig,
pub normalized_embedding_sha256: String,
}

Signature Types

ParsedSignature

Result of parsing a signature string like "0din-v1:8d000000...".

pub struct ParsedSignature {
pub version: SignatureVersion,
pub signature: String, // Hex signature (family 0 only)
}

SignatureResult

Complete result from sign_text() / signText() including metadata.

pub struct SignatureResult {
pub signature_string: String, // Formatted: "0din-v1:..."
pub version: SignatureVersion,
pub algorithm: HashAlgorithm,
pub lsh: LshOutput,
pub embedding_result: EmbeddingResult,
}

Embedding Types

EmbeddingResult

Result from embedding generation (from provider).

pub struct EmbeddingResult {
pub embedding: Vec<f32>,
pub normalized_embedding: Vec<f32>,
pub normalized_embedding_sha256: String,
pub model: String,
pub dimensions: usize,
pub token_count: Option<usize>,
pub timing_ms: Option<f64>,
}

Fields:

  • embedding: Raw embedding vector from provider
  • normalized_embedding: L2-normalized embedding (unit length)
  • normalized_embedding_sha256: SHA256 hash of normalized embedding
  • model: Model identifier (e.g., "text-embedding-3-large", "Alibaba-NLP/gte-large-en-v1.5")
  • dimensions: Embedding dimensionality
  • token_count: Token count (if provider reports it)
  • timing_ms: Embedding generation time in milliseconds

Comparison Types

PromptInfo

Metadata about a single prompt in a comparison.

pub struct PromptInfo {
pub text: String,
pub signature: String,
pub embedding_sha256: String,
}

QualityStats

Quality metrics comparing estimated vs actual cosine similarity.

pub struct QualityStats {
pub absolute_error: f64,
pub signed_error: f64,
pub squared_error: f64,
pub quality_rating: String,
}

Quality Ratings:

  • "excellent": Error < 0.01
  • "good": Error < 0.05
  • "acceptable": Error < 0.10
  • "poor": Error ≥ 0.10

ComparisonResult

Complete comparison result between two prompts.

pub struct ComparisonResult {
pub prompt_a: PromptInfo,
pub prompt_b: PromptInfo,
pub hamming_distance: u32,
pub cosine_similarity: f64,
pub lsh_config: LshConfig,
pub quality_stats: Option<QualityStats>,
pub timing_ms: Option<f64>,
}

Hasher Types

Hasher

Protocol/trait/interface for pluggable hash algorithms.

pub trait Hasher {
fn hash(&self, normalized_vector: &[f32]) -> LshOutput;
fn algorithm(&self) -> HashAlgorithm;
}

Implementations:

  • SimHashLsh: Random Hyperplane LSH (default)
  • HybridCMLSH: Confidence Matrix LSH (advanced, includes confidence scores)

Error Types

SigError

Base error type for all library operations. See Error Handling for details.

pub enum SigError {
Config(String),
Provider(String),
Model(String),
Io(std::io::Error),
Serialization(serde_json::Error),
InvalidInput(String),
}

See Also