UNPKG

@jackhua/mini-langchain

Version:

A lightweight TypeScript implementation of LangChain with cost optimization features

58 lines 1.77 kB
"use strict"; /** * Fake embeddings for testing */ Object.defineProperty(exports, "__esModule", { value: true }); exports.FakeEmbeddings = void 0; const base_1 = require("./base"); /** * Fake embeddings that generate deterministic vectors */ class FakeEmbeddings extends base_1.BaseEmbeddings { constructor(size = 384) { super(); this.size = size; } /** * Embed a single query */ async embedQuery(text) { return this.embed(text); } /** * Embed multiple documents */ async embedDocuments(texts) { return texts.map(text => this.embed(text)); } /** * Generate fake embedding from text */ embed(text) { // Create deterministic embedding based on text const vector = new Array(this.size); // Use text length and character codes to generate values const seed = text.length; let hash = 0; for (let i = 0; i < text.length; i++) { hash = ((hash << 5) - hash) + text.charCodeAt(i); hash = hash & hash; // Convert to 32-bit integer } // Generate normalized vector for (let i = 0; i < this.size; i++) { // Use hash and position to generate pseudo-random values const value = Math.sin(hash * (i + 1) * 0.1) * Math.cos(seed * (i + 1) * 0.05); vector[i] = value; } // Normalize to unit vector const magnitude = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0)); if (magnitude > 0) { for (let i = 0; i < vector.length; i++) { vector[i] /= magnitude; } } return vector; } } exports.FakeEmbeddings = FakeEmbeddings; //# sourceMappingURL=fake.js.map