@mastra/fastembed 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +6 -5
- package/dist/_tsup-dts-rollup.d.cts +0 -8
- package/dist/_tsup-dts-rollup.d.ts +0 -8
- package/dist/index.d.cts +0 -1
package/dist/index.cjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["path","os","fsp","FlagEmbedding","EmbeddingModel","experimental_customProvider"],"mappings":";;;;;;;;;;;;;;;AAMA,eAAe,iBAAA,GAAoB;AACjC,EAAA,MAAM,SAAA,GAAYA,sBAAK,IAAA,CAAKC,mBAAA,CAAG,SAAQ,EAAG,QAAA,EAAU,UAAU,kBAAkB,CAAA;AAChF,EAAA,MAAMC,qBAAI,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAC9C,EAAA,OAAO,SAAA;AACT;AAGA,eAAe,kBAAA,CAAmB,QAAkB,SAAA,EAA6C;AAC/F,EAAA,MAAM,KAAA,GAAQ,MAAMC,yBAAA,CAAc,IAAA,CAAK;AAAA,IACrC,KAAA,EAAOC,2BAAe,SAAS,CAAA;AAAA,IAC/B,QAAA,EAAU,MAAM,iBAAA;AAAkB,GACnC,CAAA;AAGD,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA;AAErC,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,WAAA,MAAiB,UAAU,UAAA,EAAY;AAGrC,IAAA,UAAA,CAAW,IAAA,CAAK,GAAG,MAAA,CAAO,GAAA,CAAI,eAAa,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAC,CAAA;AAAA,EACnE;AAEA,EAAA,IAAI,WAAW,MAAA,KAAW,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AACF;AAEA,IAAM,oBAAoBC,8BAAA,CAA4B;AAAA,EACpD,mBAAA,EAAqB;AAAA,IACnB,mBAAA,EAAqB;AAAA,MACnB,oBAAA,EAAsB,IAAA;AAAA,MACtB,QAAA,EAAU,WAAA;AAAA,MACV,OAAA,EAAS,mBAAA;AAAA,MACT,oBAAA,EAAsB,GAAA;AAAA,MACtB,qBAAA,EAAuB,IAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AACxB,QAAA,OAAO,kBAAA,CAAmB,QAAQ,eAAe,CAAA;AAAA,MACnD;AAAA,KACF;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,oBAAA,EAAsB,IAAA;AAAA,MACtB,QAAA,EAAU,WAAA;AAAA,MACV,OAAA,EAAS,kBAAA;AAAA,MACT,oBAAA,EAAsB,GAAA;AAAA,MACtB,qBAAA,EAAuB,IAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AACxB,QAAA,OAAO,kBAAA,CAAmB,QAAQ,cAAc,CAAA;AAAA,MAClD;AAAA;AACF;AAEJ,CAAC,CAAA;AAEM,IAAM,YAAY,MAAA,CAAO,MAAA,CAAO,iBAAA,CAAkB,kBAAA,CAAmB,mBAAmB,CAAA,EAAG;AAAA,EAChG,KAAA,EAAO,iBAAA,CAAkB,kBAAA,CAAmB,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAC/D,IAAA,EAAM,iBAAA,CAAkB,kBAAA,CAAmB,CAAA,gBAAA,CAAkB;AAC/D,CAAC","file":"index.cjs","sourcesContent":["import fsp from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { experimental_customProvider } from 'ai';\nimport { FlagEmbedding, EmbeddingModel } from 'fastembed';\n\nasync function getModelCachePath() {\n const cachePath = path.join(os.homedir(), '.cache', 'mastra', 'fastembed-models');\n await fsp.mkdir(cachePath, { recursive: true });\n return cachePath;\n}\n\n// Shared function to generate embeddings using fastembed\nasync function generateEmbeddings(values: string[], modelType: 'BGESmallENV15' | 'BGEBaseENV15') {\n const model = await FlagEmbedding.init({\n model: EmbeddingModel[modelType],\n cacheDir: await getModelCachePath(),\n });\n\n // model.embed() returns an AsyncGenerator that processes texts in batches (default size 256)\n const embeddings = model.embed(values);\n\n const allResults = [];\n for await (const result of embeddings) {\n // result is an array of embeddings, one for each text in the batch\n // We convert each Float32Array embedding to a regular number array\n allResults.push(...result.map(embedding => Array.from(embedding)));\n }\n\n if (allResults.length === 0) throw new Error('No embeddings generated');\n\n return {\n embeddings: allResults,\n };\n}\n\nconst fastEmbedProvider = experimental_customProvider({\n textEmbeddingModels: {\n 'bge-small-en-v1.5': {\n specificationVersion: 'v1',\n provider: 'fastembed',\n modelId: 'bge-small-en-v1.5',\n maxEmbeddingsPerCall: 256,\n supportsParallelCalls: true,\n async doEmbed({ values }) {\n return generateEmbeddings(values, 'BGESmallENV15');\n },\n },\n 'bge-base-en-v1.5': {\n specificationVersion: 'v1',\n provider: 'fastembed',\n modelId: 'bge-base-en-v1.5',\n maxEmbeddingsPerCall: 256,\n supportsParallelCalls: true,\n async doEmbed({ values }) {\n return generateEmbeddings(values, 'BGEBaseENV15');\n },\n },\n },\n});\n\nexport const fastembed = Object.assign(fastEmbedProvider.textEmbeddingModel(`bge-small-en-v1.5`), {\n small: fastEmbedProvider.textEmbeddingModel(`bge-small-en-v1.5`),\n base: fastEmbedProvider.textEmbeddingModel(`bge-base-en-v1.5`),\n});\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6DA,eAAO,MAAM,SAAS;;;CAGpB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;AAMA,eAAe,iBAAA,GAAoB;AACjC,EAAA,MAAM,SAAA,GAAY,KAAK,IAAA,CAAK,EAAA,CAAG,SAAQ,EAAG,QAAA,EAAU,UAAU,kBAAkB,CAAA;AAChF,EAAA,MAAM,IAAI,KAAA,CAAM,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAC9C,EAAA,OAAO,SAAA;AACT;AAGA,eAAe,kBAAA,CAAmB,QAAkB,SAAA,EAA6C;AAC/F,EAAA,MAAM,KAAA,GAAQ,MAAM,aAAA,CAAc,IAAA,CAAK;AAAA,IACrC,KAAA,EAAO,eAAe,SAAS,CAAA;AAAA,IAC/B,QAAA,EAAU,MAAM,iBAAA;AAAkB,GACnC,CAAA;AAGD,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA;AAErC,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,WAAA,MAAiB,UAAU,UAAA,EAAY;AAGrC,IAAA,UAAA,CAAW,IAAA,CAAK,GAAG,MAAA,CAAO,GAAA,CAAI,eAAa,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAC,CAAA;AAAA,EACnE;AAEA,EAAA,IAAI,WAAW,MAAA,KAAW,CAAA,EAAG,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AACF;AAEA,IAAM,oBAAoB,2BAAA,CAA4B;AAAA,EACpD,mBAAA,EAAqB;AAAA,IACnB,mBAAA,EAAqB;AAAA,MACnB,oBAAA,EAAsB,IAAA;AAAA,MACtB,QAAA,EAAU,WAAA;AAAA,MACV,OAAA,EAAS,mBAAA;AAAA,MACT,oBAAA,EAAsB,GAAA;AAAA,MACtB,qBAAA,EAAuB,IAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AACxB,QAAA,OAAO,kBAAA,CAAmB,QAAQ,eAAe,CAAA;AAAA,MACnD;AAAA,KACF;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,oBAAA,EAAsB,IAAA;AAAA,MACtB,QAAA,EAAU,WAAA;AAAA,MACV,OAAA,EAAS,kBAAA;AAAA,MACT,oBAAA,EAAsB,GAAA;AAAA,MACtB,qBAAA,EAAuB,IAAA;AAAA,MACvB,MAAM,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AACxB,QAAA,OAAO,kBAAA,CAAmB,QAAQ,cAAc,CAAA;AAAA,MAClD;AAAA;AACF;AAEJ,CAAC,CAAA;AAEM,IAAM,YAAY,MAAA,CAAO,MAAA,CAAO,iBAAA,CAAkB,kBAAA,CAAmB,mBAAmB,CAAA,EAAG;AAAA,EAChG,KAAA,EAAO,iBAAA,CAAkB,kBAAA,CAAmB,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAC/D,IAAA,EAAM,iBAAA,CAAkB,kBAAA,CAAmB,CAAA,gBAAA,CAAkB;AAC/D,CAAC","file":"index.js","sourcesContent":["import fsp from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { experimental_customProvider } from 'ai';\nimport { FlagEmbedding, EmbeddingModel } from 'fastembed';\n\nasync function getModelCachePath() {\n const cachePath = path.join(os.homedir(), '.cache', 'mastra', 'fastembed-models');\n await fsp.mkdir(cachePath, { recursive: true });\n return cachePath;\n}\n\n// Shared function to generate embeddings using fastembed\nasync function generateEmbeddings(values: string[], modelType: 'BGESmallENV15' | 'BGEBaseENV15') {\n const model = await FlagEmbedding.init({\n model: EmbeddingModel[modelType],\n cacheDir: await getModelCachePath(),\n });\n\n // model.embed() returns an AsyncGenerator that processes texts in batches (default size 256)\n const embeddings = model.embed(values);\n\n const allResults = [];\n for await (const result of embeddings) {\n // result is an array of embeddings, one for each text in the batch\n // We convert each Float32Array embedding to a regular number array\n allResults.push(...result.map(embedding => Array.from(embedding)));\n }\n\n if (allResults.length === 0) throw new Error('No embeddings generated');\n\n return {\n embeddings: allResults,\n };\n}\n\nconst fastEmbedProvider = experimental_customProvider({\n textEmbeddingModels: {\n 'bge-small-en-v1.5': {\n specificationVersion: 'v1',\n provider: 'fastembed',\n modelId: 'bge-small-en-v1.5',\n maxEmbeddingsPerCall: 256,\n supportsParallelCalls: true,\n async doEmbed({ values }) {\n return generateEmbeddings(values, 'BGESmallENV15');\n },\n },\n 'bge-base-en-v1.5': {\n specificationVersion: 'v1',\n provider: 'fastembed',\n modelId: 'bge-base-en-v1.5',\n maxEmbeddingsPerCall: 256,\n supportsParallelCalls: true,\n async doEmbed({ values }) {\n return generateEmbeddings(values, 'BGEBaseENV15');\n },\n },\n },\n});\n\nexport const fastembed = Object.assign(fastEmbedProvider.textEmbeddingModel(`bge-small-en-v1.5`), {\n small: fastEmbedProvider.textEmbeddingModel(`bge-small-en-v1.5`),\n base: fastEmbedProvider.textEmbeddingModel(`bge-base-en-v1.5`),\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/fastembed",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"require": {
|
|
15
|
-
"types": "./dist/index.d.
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
16
|
"default": "./dist/index.cjs"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
"tsup": "^8.5.0",
|
|
31
31
|
"typescript": "^5.8.3",
|
|
32
32
|
"vitest": "^3.2.4",
|
|
33
|
-
"@internal/lint": "0.0.
|
|
33
|
+
"@internal/lint": "0.0.27",
|
|
34
|
+
"@internal/types-builder": "0.0.2"
|
|
34
35
|
},
|
|
35
36
|
"scripts": {
|
|
36
|
-
"build": "tsup
|
|
37
|
-
"build:watch": "
|
|
37
|
+
"build": "tsup --silent --config tsup.config.ts",
|
|
38
|
+
"build:watch": "tsup --watch --silent --config tsup.config.ts",
|
|
38
39
|
"test": "vitest run"
|
|
39
40
|
}
|
|
40
41
|
}
|
package/dist/index.d.cts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { fastembed } from './_tsup-dts-rollup.cjs';
|