
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@crashbytes/semantic-text-toolkit
Advanced tools
Production-grade semantic text analysis with embeddings, similarity, and vector operations
Production-grade semantic text analysis with embeddings, similarity computation, and vector search operations.
Part of the CrashBytes npm ecosystem | Built by Blackhole Software, LLC
When building ML-powered production systems, prioritize:
npm install @crashbytes/semantic-text-toolkit
import { createSemanticEngine } from '@crashbytes/semantic-text-toolkit';
const engine = await createSemanticEngine();
const result = await engine.embed("Machine learning transforms data");
console.log(result.embedding); // 384-dimensional vector
const similarity = await engine.similarity(
"Artificial intelligence is fascinating",
"Machine learning is interesting"
);
console.log(similarity.score); // 0.78
Transform text into high-dimensional numerical vectors that capture semantic meaning, enabling:
Multiple metrics for domain-specific optimization:
Production-ready semantic search with:
Core engine for embedding generation and similarity computation.
new SemanticEngine(config?: ModelConfig)
Configuration Parameters:
modelName - Hugging Face model identifier (default: 'Xenova/all-MiniLM-L6-v2')maxLength - Maximum sequence length (default: 512)dtype - Model weight precision: 'fp32' | 'fp16' | 'q8' | 'q4' | 'q4f16' (default: 'q8' — 8-bit quantization)onProgress - Progress callback for model loadingasync initialize(): Promise<void>Initializes the model. Idempotent and concurrent-safe through promise caching.
async embed(text: string): Promise<EmbeddingResult>Generates embedding for single text input. Returns vector with metadata.
async embedBatch(texts: string[], options?: BatchOptions): Promise<EmbeddingResult[]>Batch processing with automatic batching and progress tracking.
async similarity(textA: string, textB: string, method?: 'cosine' | 'euclidean' | 'dot'): Promise<SimilarityResult>Computes semantic similarity using specified metric.
High-level search interface with indexing capabilities.
new SemanticSearch<T>(engine: SemanticEngine, config?: SearchConfig<T>)
Configuration Parameters:
topK - Number of results to return (default: 10)threshold - Minimum similarity score (default: 0)textExtractor - Function to extract text from custom objectsmetadataExtractor - Function to extract metadata for filteringasync index(items: T[], replace?: boolean): Promise<void>Indexes items for semantic search with optional index replacement.
async search(query: string, config?: Partial<SearchConfig<T>>): Promise<SearchResult<T>[]>Performs semantic search with configurable parameters.
async searchWithFilter(query: string, filter: (metadata: Record<string, unknown>) => boolean): Promise<SearchResult<T>[]>Searches with metadata filtering for complex queries.
interface Document {
id: string;
title: string;
content: string;
category: string;
}
const search = new SemanticSearch<Document>(engine, {
textExtractor: (doc) => `${doc.title} ${doc.content}`,
metadataExtractor: (doc) => ({ category: doc.category }),
});
await search.index(documents);
const results = await search.searchWithFilter(
"machine learning",
(metadata) => metadata.category === 'AI'
);
import { centroid, cosineSimilarity } from '@crashbytes/semantic-text-toolkit';
const embeddings = await Promise.all(
documents.map(doc => engine.embed(doc))
);
const clusterCenter = centroid(embeddings.map(r => r.embedding));
const distances = embeddings.map(result =>
cosineSimilarity(result.embedding, clusterCenter)
);
When optimizing for response time:
When managing resource limitations:
dtype: 'q8' is the default; 'q4' for further reduction)When scaling for volume:
Single Embedding Generation:
Batch Processing (100 texts):
Memory Profile:
dtype: 'q8'): ~23MBconst engine = new SemanticEngine({
modelName: 'Xenova/multilingual-e5-large',
maxLength: 512,
dtype: 'fp32'
});
const engine = new SemanticEngine({
modelName: 'Xenova/all-MiniLM-L6-v2',
dtype: 'q8',
onProgress: (progress) => {
if (progress.status === 'downloading') {
logger.info(`Model download: ${progress.progress}%`);
}
}
});
When contributing to this project:
npm run build
Generates:
dist/index.js (CommonJS)dist/index.mjs (ES Modules)dist/index.d.ts (TypeScript definitions)Contributions welcome. When contributing:
MIT License - see LICENSE file for details
Specializing in custom web and software solutions:
Visit us at blackholesoftware.com
Built with precision. Designed for production.
FAQs
Production-grade semantic text analysis with embeddings, similarity, and vector operations
The npm package @crashbytes/semantic-text-toolkit receives a total of 0 weekly downloads. As such, @crashbytes/semantic-text-toolkit popularity was classified as not popular.
We found that @crashbytes/semantic-text-toolkit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.