Core LangChain.js abstractions and schemas for building applications with Large Language Models
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Embedding model abstractions for converting text to vector representations. Embeddings enable semantic search and similarity comparisons by transforming text into high-dimensional numerical vectors.
Abstract base class for all embedding implementations.
/**
* Abstract base class for embedding models
*/
abstract class Embeddings {
/** Async caller for managing API requests */
caller: AsyncCaller;
constructor(params: EmbeddingsParams);
/** Embed multiple documents */
abstract embedDocuments(documents: string[]): Promise<number[][]>;
/** Embed a single query */
abstract embedQuery(document: string): Promise<number[]>;
}Usage Examples:
import { Embeddings } from "@langchain/core/embeddings";
// Example embedding implementation
class MyEmbeddings extends Embeddings {
async embedDocuments(texts: string[]): Promise<number[][]> {
// Implementation would call embedding API
return texts.map(text => this.generateVector(text));
}
async embedQuery(text: string): Promise<number[]> {
// Single text embedding
return this.generateVector(text);
}
private generateVector(text: string): number[] {
// Placeholder - real implementation would use ML model
return new Array(384).fill(0).map(() => Math.random());
}
}
// Usage
const embeddings = new MyEmbeddings();
// Embed documents for vector store
const docVectors = await embeddings.embedDocuments([
"LangChain is a framework for building LLM applications",
"Vector stores enable semantic search over documents"
]);
// Embed query for similarity search
const queryVector = await embeddings.embedQuery("What is LangChain?");interface EmbeddingsInterface {
embedDocuments(documents: string[]): Promise<number[][]>;
embedQuery(document: string): Promise<number[]>;
}
interface EmbeddingsParams extends AsyncCallerParams {
/** Maximum number of documents to embed at once */
maxConcurrency?: number;
/** Maximum number of retries for failed requests */
maxRetries?: number;
}
interface AsyncCallerParams {
/** Maximum number of concurrent requests */
maxConcurrency?: number;
/** Maximum number of retries */
maxRetries?: number;
/** Base delay between retries (ms) */
onFailedAttempt?: (error: Error) => void;
}