Catalog npm
PACKAGE EXPLORERView in registry

@0din/prompt-toolkit

npm

Multi-language SDK for LSH signature generation for AI prompt similarity detection

aiembeddingslocality-sensitive-hashinglshsimilaritytypescript
Versions collected7
Direct dependencies15From release 0.9.8
Last observed20 Oct, 22:07 UTC

README

Current package documentation

@0din/prompt-toolkit (TypeScript)

Multi-language SDK for LSH (Locality-Sensitive Hashing) signature generation for AI prompt similarity detection.

This is the TypeScript implementation of the odin-prompt-toolkit algorithm, also available in Rust and Python.

Installation

From Git (Development)

npm install git+https://github.com/0din-ai/prompt-toolkit#main:typescript
# or
yarn add git+https://github.com/0din-ai/prompt-toolkit#main:typescript
# or
pnpm add git+https://github.com/0din-ai/prompt-toolkit#main:typescript

Quick Start

Basic LSH Signatures

import { simhashLshMulti, normalizeVector } from '@0din/prompt-toolkit';

// Your embedding vector (must be L2-normalized)
const vector = [0.5, 0.5, 0.5, 0.5];
const normalized = normalizeVector(vector);

// Generate LSH signatures (3 families, 256 bits, 16 bands)
const families = simhashLshMulti(normalized);

console.log(`Signature: ${families[0].signature}`);
console.log(`Bands: ${families[0].bands}`);

Similarity Comparison

import { 
  simhashLshMulti, 
  hammingDistanceHex, 
  cosineFromHamming 
} from '@0din/prompt-toolkit';

// Generate signatures for two vectors
const families1 = simhashLshMulti(vector1);
const families2 = simhashLshMulti(vector2);

// Compute Hamming distance
const distance = hammingDistanceHex(
  families1[0].signature, 
  families2[0].signature
);

// Estimate cosine similarity
const similarity = cosineFromHamming(distance, 256);
console.log(`Estimated cosine similarity: ${similarity.toFixed(3)}`);

Versioned Signatures

import { 
  signatureString, 
  parseSignatureString,
  SignatureVersion 
} from '@0din/prompt-toolkit';

// Format signature with version
const versionedSig = signatureString(SignatureVersion.V1, signature);
console.log(versionedSig); // "0din-v1:abcd1234..."

// Parse signature string
const parsed = parseSignatureString('0din-v1:abcd1234');
console.log(parsed.version); // 'v1'
console.log(parsed.signature); // 'abcd1234'

API Reference

Core Functions

simhashLshMulti(vector, config?)

Generate LSH signatures for a normalized vector.

Parameters:

  • vector: number[] - L2-normalized embedding vector
  • config?: LshConfig - Optional configuration
    • families?: number - Number of hash families (default: 3)
    • bits?: number - Bits per signature (default: 256)
    • bands?: number - Number of bands (default: 16)

Returns: LSHFamily[] - Array of signatures, one per family

hammingDistanceHex(a, b)

Compute Hamming distance between two hex signatures.

Parameters:

  • a: string - First hex signature
  • b: string - Second hex signature

Returns: number - Hamming distance in bits

cosineFromHamming(distance, totalBits)

Estimate cosine similarity from Hamming distance.

Parameters:

  • distance: number - Hamming distance in bits
  • totalBits: number - Total bits in signature

Returns: number - Estimated cosine similarity [-1, 1]

normalizeVector(vector)

L2-normalize a vector to unit length.

Parameters:

  • vector: number[] - Input vector

Returns: number[] - Normalized vector

Type Definitions

interface LSHFamily {
  family: number;
  bits: number;
  signature: string; // hex string
  bands: string[]; // band slices
}

interface LshConfig {
  families?: number;
  bits?: number;
  bands?: number;
}

enum SignatureVersion {
  V0 = 'v0', // OpenAI (1536 dims)
  V1 = 'v1', // ONNX (1024 dims)
  LATEST = 'latest', // Resolves to V1
}

Signature Versions

  • V0: OpenAI text-embedding-3-large (1536 dimensions, API-based)
  • V1: 0din-jailbreak-embeddings-small ONNX (1024 dimensions, local)
  • Latest: Resolves to V1

Important: V0 and V1 signatures are not comparable due to different embedding spaces.

Algorithm

SimHash via Random Hyperplane LSH (Charikar 2002):

  • Deterministic hyperplanes via SplitMix64 PRNG
  • Default: 3 families × 256 bits × 16 bands
  • Hex-encoded signatures (64 hex chars = 256 bits)
  • Hamming distance → cosine similarity via cos(π × d/n)

See the specification for complete algorithm details.

Development

Setup

cd typescript
npm install

Build

npm run build

Run Tests

npm test

Linting & Formatting

npm run lint
npm run format

License

Apache License 2.0

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 7

Collected releases
VersionPublishedDirect dependenciesOpen version
0.9.8Registry latest14 Oct 202615
0.9.717 Sept 202615
0.9.62 Sept 202615
0.9.52 Sept 202615
0.9.429 Aug 202615
0.9.328 Aug 202615
0.9.026 Aug 202615

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
0din-ai/prompt-toolkit

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:07 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:ba332f7448cc726266f34cdd596f055c29eb091bd23451ecc644d037c7257cee