UNPKG

@mastra/core

Version:

Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.

201 lines (197 loc) • 7.49 kB
'use strict'; var chunk6XCINXZ7_cjs = require('../chunk-6XCINXZ7.cjs'); var chunkQJB2YTBM_cjs = require('../chunk-QJB2YTBM.cjs'); var chunkFCQNDFEW_cjs = require('../chunk-FCQNDFEW.cjs'); var chunkLKGJVPW6_cjs = require('../chunk-LKGJVPW6.cjs'); var chunkXDKZ76SF_cjs = require('../chunk-XDKZ76SF.cjs'); var chunkY3T2Q2HR_cjs = require('../chunk-Y3T2Q2HR.cjs'); var chunk4U7ZLI36_cjs = require('../chunk-4U7ZLI36.cjs'); // src/vector/vector.ts var supportedEmbeddingModelSpecifications = ["v2", "v3"]; var isSupportedEmbeddingModel = (model) => { return supportedEmbeddingModelSpecifications.includes( model.specificationVersion ); }; var MastraVector = class extends chunkFCQNDFEW_cjs.MastraBase { id; constructor({ id }) { if (!id || typeof id !== "string" || id.trim() === "") { throw new chunk4U7ZLI36_cjs.MastraError({ id: "VECTOR_INVALID_ID", text: "Vector id must be provided and cannot be empty", domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */ }); } super({ name: "MastraVector", component: "VECTOR" }); this.id = id; } get indexSeparator() { return "_"; } async validateExistingIndex(indexName, dimension, metric) { let info; try { info = await this.describeIndex({ indexName }); } catch (infoError) { const mastraError = new chunk4U7ZLI36_cjs.MastraError( { id: "VECTOR_VALIDATE_INDEX_FETCH_FAILED", text: `Index "${indexName}" already exists, but failed to fetch index info for dimension check.`, domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "SYSTEM" /* SYSTEM */, details: { indexName } }, infoError ); this.logger?.trackException(mastraError); throw mastraError; } const existingDim = info?.dimension; const existingMetric = info?.metric; if (existingDim === dimension) { this.logger?.info( `Index "${indexName}" already exists with ${existingDim} dimensions and metric ${existingMetric}, skipping creation.` ); if (existingMetric !== metric) { this.logger?.warn( `Attempted to create index with metric "${metric}", but index already exists with metric "${existingMetric}". To use a different metric, delete and recreate the index.` ); } } else if (info) { const mastraError = new chunk4U7ZLI36_cjs.MastraError({ id: "VECTOR_VALIDATE_INDEX_DIMENSION_MISMATCH", text: `Index "${indexName}" already exists with ${existingDim} dimensions, but ${dimension} dimensions were requested`, domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { indexName, existingDim, requestedDim: dimension } }); this.logger?.trackException(mastraError); throw mastraError; } else { const mastraError = new chunk4U7ZLI36_cjs.MastraError({ id: "VECTOR_VALIDATE_INDEX_NO_DIMENSION", text: `Index "${indexName}" already exists, but could not retrieve its dimensions for validation.`, domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "SYSTEM" /* SYSTEM */, details: { indexName } }); this.logger?.trackException(mastraError); throw mastraError; } } }; // src/vector/validation.ts function validateUpsertInput(storeName, vectors, metadata, ids) { if (!vectors || vectors.length === 0) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "UPSERT", "EMPTY_VECTORS"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: "Vectors array cannot be empty" } }); } if (metadata && metadata.length > 0 && metadata.length !== vectors.length) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "UPSERT", "METADATA_LENGTH_MISMATCH"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: "Metadata array length must match vectors array length", vectorsLength: vectors.length, metadataLength: metadata.length } }); } if (ids && ids.length !== vectors.length) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "UPSERT", "IDS_LENGTH_MISMATCH"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: "IDs array length must match vectors array length", vectorsLength: vectors.length, idsLength: ids.length } }); } } function validateTopK(storeName, topK) { if (!Number.isInteger(topK) || topK <= 0) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "QUERY", "INVALID_TOP_K"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: "topK must be a positive integer", topK } }); } } function validateVectorValues(storeName, vectors) { for (let i = 0; i < vectors.length; i++) { const vector = vectors[i]; if (!vector) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "UPSERT", "INVALID_VECTOR"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: `Vector at index ${i} is null or undefined`, vectorIndex: i } }); } for (let j = 0; j < vector.length; j++) { const value = vector[j]; if (value === null || value === void 0 || !Number.isFinite(value)) { throw new chunk4U7ZLI36_cjs.MastraError({ id: chunkQJB2YTBM_cjs.createVectorErrorId(storeName, "UPSERT", "INVALID_VECTOR_VALUE"), domain: "MASTRA_VECTOR" /* MASTRA_VECTOR */, category: "USER" /* USER */, details: { message: `Vector contains invalid value (null, undefined, NaN, or Infinity) at position [${i}][${j}]`, vectorIndex: i, componentIndex: j, value: String(value) } }); } } } } function validateUpsert(storeName, vectors, metadata, ids, validateValues = false) { validateUpsertInput(storeName, vectors, metadata, ids); if (validateValues && vectors) { validateVectorValues(storeName, vectors); } } Object.defineProperty(exports, "BaseFilterTranslator", { enumerable: true, get: function () { return chunk6XCINXZ7_cjs.BaseFilterTranslator; } }); Object.defineProperty(exports, "embedV2", { enumerable: true, get: function () { return chunkLKGJVPW6_cjs.embed; } }); Object.defineProperty(exports, "embedV3", { enumerable: true, get: function () { return chunkXDKZ76SF_cjs.embed; } }); Object.defineProperty(exports, "embedV1", { enumerable: true, get: function () { return chunkY3T2Q2HR_cjs.embed; } }); exports.MastraVector = MastraVector; exports.isSupportedEmbeddingModel = isSupportedEmbeddingModel; exports.supportedEmbeddingModelSpecifications = supportedEmbeddingModelSpecifications; exports.validateTopK = validateTopK; exports.validateUpsert = validateUpsert; exports.validateUpsertInput = validateUpsertInput; exports.validateVectorValues = validateVectorValues; //# sourceMappingURL=index.cjs.map //# sourceMappingURL=index.cjs.map