modelfusion 0.32.0 → 0.33.1
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/README.md +7 -6
- package/core/api/postToApi.d.ts +1 -1
- package/index.cjs +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/model-function/synthesize-speech/SpeechSynthesisEvent.d.ts +1 -1
- package/model-function/synthesize-speech/SpeechSynthesisModel.d.ts +1 -1
- package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
- package/model-provider/elevenlabs/ElevenLabsSpeechSynthesisModel.d.ts +1 -1
- package/model-provider/huggingface/HuggingFaceImageDescriptionModel.d.ts +1 -1
- package/model-provider/lmnt/LmntSpeechSynthesisModel.d.ts +1 -1
- package/model-provider/openai/OpenAITranscriptionModel.d.ts +1 -1
- package/package.json +4 -4
- package/retriever/Retriever.d.ts +7 -0
- package/retriever/index.cjs +18 -0
- package/retriever/index.d.ts +2 -0
- package/retriever/index.js +2 -0
- package/retriever/retrieve.cjs +9 -0
- package/retriever/retrieve.d.ts +3 -0
- package/retriever/retrieve.js +5 -0
- package/text-chunk/index.cjs +0 -4
- package/text-chunk/index.d.ts +0 -4
- package/text-chunk/index.js +0 -4
- package/{text-chunk/SimilarTextChunksFromVectorIndexRetriever.cjs → vector-index/VectorIndexRetriever.cjs} +6 -6
- package/vector-index/VectorIndexRetriever.d.ts +19 -0
- package/{text-chunk/SimilarTextChunksFromVectorIndexRetriever.js → vector-index/VectorIndexRetriever.js} +4 -4
- package/vector-index/index.cjs +2 -0
- package/vector-index/index.d.ts +2 -0
- package/vector-index/index.js +2 -0
- package/vector-index/upsertIntoVectorIndex.cjs +15 -0
- package/vector-index/upsertIntoVectorIndex.d.ts +11 -0
- package/vector-index/upsertIntoVectorIndex.js +11 -0
- package/text-chunk/SimilarTextChunksFromVectorIndexRetriever.d.ts +0 -20
- package/text-chunk/retrieve-text-chunks/TextChunkRetriever.d.ts +0 -8
- package/text-chunk/retrieve-text-chunks/retrieveTextChunks.cjs +0 -10
- package/text-chunk/retrieve-text-chunks/retrieveTextChunks.d.ts +0 -6
- package/text-chunk/retrieve-text-chunks/retrieveTextChunks.js +0 -6
- package/text-chunk/upsertTextChunks.cjs +0 -15
- package/text-chunk/upsertTextChunks.d.ts +0 -11
- package/text-chunk/upsertTextChunks.js +0 -11
- /package/{text-chunk/retrieve-text-chunks/TextChunkRetriever.cjs → retriever/Retriever.cjs} +0 -0
- /package/{text-chunk/retrieve-text-chunks/TextChunkRetriever.js → retriever/Retriever.js} +0 -0
package/README.md
CHANGED
@@ -365,7 +365,7 @@ const reconstructedText = await tokenizer.detokenize(tokens);
|
|
365
365
|
|
366
366
|
Providers: [OpenAI](https://modelfusion.dev/integration/model-provider/openai), [Cohere](https://modelfusion.dev/integration/model-provider/cohere), [Llama.cpp](https://modelfusion.dev/integration/model-provider/llamacpp)
|
367
367
|
|
368
|
-
### [Upserting and Retrieving
|
368
|
+
### [Upserting and Retrieving Objects from Vector Indices](https://modelfusion.dev/guide/vector-index)
|
369
369
|
|
370
370
|
```ts
|
371
371
|
const texts = [
|
@@ -374,21 +374,22 @@ const texts = [
|
|
374
374
|
// ...
|
375
375
|
];
|
376
376
|
|
377
|
-
const vectorIndex = new MemoryVectorIndex<
|
377
|
+
const vectorIndex = new MemoryVectorIndex<string>();
|
378
378
|
const embeddingModel = new OpenAITextEmbeddingModel({
|
379
379
|
model: "text-embedding-ada-002",
|
380
380
|
});
|
381
381
|
|
382
382
|
// update an index - usually done as part of an ingestion process:
|
383
|
-
await
|
383
|
+
await upsertIntoVectorIndex({
|
384
384
|
vectorIndex,
|
385
385
|
embeddingModel,
|
386
|
-
|
386
|
+
objects: texts,
|
387
|
+
getValueToEmbed: (text) => text,
|
387
388
|
});
|
388
389
|
|
389
390
|
// retrieve text chunks from the vector index - usually done at query time:
|
390
|
-
const
|
391
|
-
new
|
391
|
+
const retrievedTexts = await retrieve(
|
392
|
+
new VectorIndexRetriever({
|
392
393
|
vectorIndex,
|
393
394
|
embeddingModel,
|
394
395
|
maxResults: 3,
|
package/core/api/postToApi.d.ts
CHANGED
package/index.cjs
CHANGED
@@ -21,6 +21,7 @@ __exportStar(require("./model-function/index.cjs"), exports);
|
|
21
21
|
__exportStar(require("./model-provider/index.cjs"), exports);
|
22
22
|
__exportStar(require("./observability/index.cjs"), exports);
|
23
23
|
__exportStar(require("./prompt/index.cjs"), exports);
|
24
|
+
__exportStar(require("./retriever/index.cjs"), exports);
|
24
25
|
__exportStar(require("./text-chunk/index.cjs"), exports);
|
25
26
|
__exportStar(require("./tool/index.cjs"), exports);
|
26
27
|
__exportStar(require("./util/index.cjs"), exports);
|
package/index.d.ts
CHANGED
@@ -5,6 +5,7 @@ export * from "./model-function/index.js";
|
|
5
5
|
export * from "./model-provider/index.js";
|
6
6
|
export * from "./observability/index.js";
|
7
7
|
export * from "./prompt/index.js";
|
8
|
+
export * from "./retriever/index.js";
|
8
9
|
export * from "./text-chunk/index.js";
|
9
10
|
export * from "./tool/index.js";
|
10
11
|
export * from "./util/index.js";
|
package/index.js
CHANGED
@@ -5,6 +5,7 @@ export * from "./model-function/index.js";
|
|
5
5
|
export * from "./model-provider/index.js";
|
6
6
|
export * from "./observability/index.js";
|
7
7
|
export * from "./prompt/index.js";
|
8
|
+
export * from "./retriever/index.js";
|
8
9
|
export * from "./text-chunk/index.js";
|
9
10
|
export * from "./tool/index.js";
|
10
11
|
export * from "./util/index.js";
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/// <reference types="node"
|
1
|
+
/// <reference types="node" />
|
2
2
|
import { BaseModelCallFinishedEvent, BaseModelCallStartedEvent } from "../ModelCallEvent.js";
|
3
3
|
export interface SpeechSynthesisStartedEvent extends BaseModelCallStartedEvent {
|
4
4
|
functionType: "speech-synthesis";
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/// <reference types="node"
|
1
|
+
/// <reference types="node" />
|
2
2
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
3
3
|
import { Model, ModelSettings } from "../Model.js";
|
4
4
|
export interface SpeechSynthesisModelSettings extends ModelSettings {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/// <reference types="node"
|
1
|
+
/// <reference types="node" />
|
2
2
|
import { ModelFunctionOptions } from "../ModelFunctionOptions.js";
|
3
3
|
import { ModelFunctionPromise } from "../executeCall.js";
|
4
4
|
import { SpeechSynthesisModel, SpeechSynthesisModelSettings } from "./SpeechSynthesisModel.js";
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/// <reference types="node"
|
1
|
+
/// <reference types="node" />
|
2
2
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
3
3
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
4
4
|
import { ModelFunctionOptions } from "../../model-function/ModelFunctionOptions.js";
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/// <reference types="node"
|
1
|
+
/// <reference types="node" />
|
2
2
|
import { AbstractModel } from "../../model-function/AbstractModel.js";
|
3
3
|
import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
|
4
4
|
import { ModelFunctionOptions } from "../../model-function/ModelFunctionOptions.js";
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "modelfusion",
|
3
3
|
"description": "Build multimodal applications, chatbots, and agents with JavaScript and TypeScript.",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.33.1",
|
5
5
|
"author": "Lars Grammel",
|
6
6
|
"license": "MIT",
|
7
7
|
"keywords": [
|
@@ -60,7 +60,7 @@
|
|
60
60
|
},
|
61
61
|
"devDependencies": {
|
62
62
|
"@pinecone-database/pinecone": "^0.1.6",
|
63
|
-
"@tsconfig/recommended": "1.0.
|
63
|
+
"@tsconfig/recommended": "1.0.3",
|
64
64
|
"@types/node": "18.11.9",
|
65
65
|
"@typescript-eslint/eslint-plugin": "^6.1.0",
|
66
66
|
"@typescript-eslint/parser": "^6.1.0",
|
@@ -71,10 +71,10 @@
|
|
71
71
|
"lint-staged": "14.0.1",
|
72
72
|
"prettier": "3.0.3",
|
73
73
|
"rimraf": "5.0.1",
|
74
|
-
"typescript": "5.
|
74
|
+
"typescript": "5.2.2"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
|
-
"@pinecone-database/pinecone": "
|
77
|
+
"@pinecone-database/pinecone": "0.1.6"
|
78
78
|
},
|
79
79
|
"peerDependenciesMeta": {
|
80
80
|
"@pinecone-database/pinecone": {
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
+
export interface RetrieverSettings {
|
3
|
+
}
|
4
|
+
export interface Retriever<OBJECT, QUERY, SETTINGS extends RetrieverSettings> {
|
5
|
+
retrieve(query: QUERY, options?: ModelFunctionOptions<RetrieverSettings>): Promise<OBJECT[]>;
|
6
|
+
withSettings(additionalSettings: Partial<SETTINGS>): this;
|
7
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./Retriever.cjs"), exports);
|
18
|
+
__exportStar(require("./retrieve.cjs"), exports);
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.retrieve = void 0;
|
4
|
+
async function retrieve(retriever, query, options) {
|
5
|
+
// TODO add error handling, events, duration tracking, etc.
|
6
|
+
// TODO metadata handling
|
7
|
+
return retriever.retrieve(query, options);
|
8
|
+
}
|
9
|
+
exports.retrieve = retrieve;
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
+
import { Retriever, RetrieverSettings } from "./Retriever.js";
|
3
|
+
export declare function retrieve<OBJECT, QUERY, SETTINGS extends RetrieverSettings>(retriever: Retriever<OBJECT, QUERY, SETTINGS>, query: QUERY, options?: ModelFunctionOptions<SETTINGS>): Promise<OBJECT[]>;
|
package/text-chunk/index.cjs
CHANGED
@@ -14,12 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./SimilarTextChunksFromVectorIndexRetriever.cjs"), exports);
|
18
17
|
__exportStar(require("./TextChunk.cjs"), exports);
|
19
|
-
__exportStar(require("./retrieve-text-chunks/TextChunkRetriever.cjs"), exports);
|
20
|
-
__exportStar(require("./retrieve-text-chunks/retrieveTextChunks.cjs"), exports);
|
21
18
|
__exportStar(require("./split/SplitFunction.cjs"), exports);
|
22
19
|
__exportStar(require("./split/splitOnSeparator.cjs"), exports);
|
23
20
|
__exportStar(require("./split/splitRecursively.cjs"), exports);
|
24
21
|
__exportStar(require("./split/splitTextChunks.cjs"), exports);
|
25
|
-
__exportStar(require("./upsertTextChunks.cjs"), exports);
|
package/text-chunk/index.d.ts
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
export * from "./SimilarTextChunksFromVectorIndexRetriever.js";
|
2
1
|
export * from "./TextChunk.js";
|
3
|
-
export * from "./retrieve-text-chunks/TextChunkRetriever.js";
|
4
|
-
export * from "./retrieve-text-chunks/retrieveTextChunks.js";
|
5
2
|
export * from "./split/SplitFunction.js";
|
6
3
|
export * from "./split/splitOnSeparator.js";
|
7
4
|
export * from "./split/splitRecursively.js";
|
8
5
|
export * from "./split/splitTextChunks.js";
|
9
|
-
export * from "./upsertTextChunks.js";
|
package/text-chunk/index.js
CHANGED
@@ -1,9 +1,5 @@
|
|
1
|
-
export * from "./SimilarTextChunksFromVectorIndexRetriever.js";
|
2
1
|
export * from "./TextChunk.js";
|
3
|
-
export * from "./retrieve-text-chunks/TextChunkRetriever.js";
|
4
|
-
export * from "./retrieve-text-chunks/retrieveTextChunks.js";
|
5
2
|
export * from "./split/SplitFunction.js";
|
6
3
|
export * from "./split/splitOnSeparator.js";
|
7
4
|
export * from "./split/splitRecursively.js";
|
8
5
|
export * from "./split/splitTextChunks.js";
|
9
|
-
export * from "./upsertTextChunks.js";
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.VectorIndexRetriever = void 0;
|
4
4
|
const embedText_js_1 = require("../model-function/embed-text/embedText.cjs");
|
5
|
-
class
|
5
|
+
class VectorIndexRetriever {
|
6
6
|
constructor({ vectorIndex, embeddingModel, maxResults, similarityThreshold, }) {
|
7
7
|
Object.defineProperty(this, "vectorIndex", {
|
8
8
|
enumerable: true,
|
@@ -29,9 +29,9 @@ class SimilarTextChunksFromVectorIndexRetriever {
|
|
29
29
|
similarityThreshold,
|
30
30
|
};
|
31
31
|
}
|
32
|
-
async
|
32
|
+
async retrieve(query, options) {
|
33
33
|
if (options?.settings != null) {
|
34
|
-
return this.withSettings(options.settings).
|
34
|
+
return this.withSettings(options.settings).retrieve(query, {
|
35
35
|
functionId: options.functionId,
|
36
36
|
observers: options.observers,
|
37
37
|
run: options.run,
|
@@ -49,10 +49,10 @@ class SimilarTextChunksFromVectorIndexRetriever {
|
|
49
49
|
return queryResult.map((item) => item.data);
|
50
50
|
}
|
51
51
|
withSettings(additionalSettings) {
|
52
|
-
return new
|
52
|
+
return new VectorIndexRetriever(Object.assign({}, this.settings, additionalSettings, {
|
53
53
|
vectorIndex: this.vectorIndex,
|
54
54
|
embeddingModel: this.embeddingModel,
|
55
55
|
}));
|
56
56
|
}
|
57
57
|
}
|
58
|
-
exports.
|
58
|
+
exports.VectorIndexRetriever = VectorIndexRetriever;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
+
import { TextEmbeddingModel, TextEmbeddingModelSettings } from "../model-function/embed-text/TextEmbeddingModel.js";
|
3
|
+
import { Retriever, RetrieverSettings } from "../retriever/Retriever.js";
|
4
|
+
import { VectorIndex } from "./VectorIndex.js";
|
5
|
+
export interface VectorIndexRetrieverSettings {
|
6
|
+
maxResults?: number;
|
7
|
+
similarityThreshold?: number;
|
8
|
+
}
|
9
|
+
export declare class VectorIndexRetriever<OBJECT, INDEX> implements Retriever<OBJECT, string, VectorIndexRetrieverSettings> {
|
10
|
+
private readonly vectorIndex;
|
11
|
+
private readonly embeddingModel;
|
12
|
+
private readonly settings;
|
13
|
+
constructor({ vectorIndex, embeddingModel, maxResults, similarityThreshold, }: {
|
14
|
+
vectorIndex: VectorIndex<OBJECT, INDEX>;
|
15
|
+
embeddingModel: TextEmbeddingModel<unknown, TextEmbeddingModelSettings>;
|
16
|
+
} & VectorIndexRetrieverSettings);
|
17
|
+
retrieve(query: string, options?: ModelFunctionOptions<RetrieverSettings>): Promise<OBJECT[]>;
|
18
|
+
withSettings(additionalSettings: Partial<VectorIndexRetrieverSettings>): this;
|
19
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { embedText } from "../model-function/embed-text/embedText.js";
|
2
|
-
export class
|
2
|
+
export class VectorIndexRetriever {
|
3
3
|
constructor({ vectorIndex, embeddingModel, maxResults, similarityThreshold, }) {
|
4
4
|
Object.defineProperty(this, "vectorIndex", {
|
5
5
|
enumerable: true,
|
@@ -26,9 +26,9 @@ export class SimilarTextChunksFromVectorIndexRetriever {
|
|
26
26
|
similarityThreshold,
|
27
27
|
};
|
28
28
|
}
|
29
|
-
async
|
29
|
+
async retrieve(query, options) {
|
30
30
|
if (options?.settings != null) {
|
31
|
-
return this.withSettings(options.settings).
|
31
|
+
return this.withSettings(options.settings).retrieve(query, {
|
32
32
|
functionId: options.functionId,
|
33
33
|
observers: options.observers,
|
34
34
|
run: options.run,
|
@@ -46,7 +46,7 @@ export class SimilarTextChunksFromVectorIndexRetriever {
|
|
46
46
|
return queryResult.map((item) => item.data);
|
47
47
|
}
|
48
48
|
withSettings(additionalSettings) {
|
49
|
-
return new
|
49
|
+
return new VectorIndexRetriever(Object.assign({}, this.settings, additionalSettings, {
|
50
50
|
vectorIndex: this.vectorIndex,
|
51
51
|
embeddingModel: this.embeddingModel,
|
52
52
|
}));
|
package/vector-index/index.cjs
CHANGED
@@ -15,5 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
__exportStar(require("./VectorIndex.cjs"), exports);
|
18
|
+
__exportStar(require("./VectorIndexRetriever.cjs"), exports);
|
18
19
|
__exportStar(require("./memory/MemoryVectorIndex.cjs"), exports);
|
19
20
|
__exportStar(require("./pinecone/PineconeVectorIndex.cjs"), exports);
|
21
|
+
__exportStar(require("./upsertIntoVectorIndex.cjs"), exports);
|
package/vector-index/index.d.ts
CHANGED
package/vector-index/index.js
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.upsertIntoVectorIndex = void 0;
|
4
|
+
const nanoid_1 = require("nanoid");
|
5
|
+
const embedText_js_1 = require("../model-function/embed-text/embedText.cjs");
|
6
|
+
async function upsertIntoVectorIndex({ vectorIndex, embeddingModel, generateId = nanoid_1.nanoid, objects, getValueToEmbed, getId, }, options) {
|
7
|
+
// many embedding models support bulk embedding, so we first embed all texts:
|
8
|
+
const embeddings = await (0, embedText_js_1.embedTexts)(embeddingModel, objects.map(getValueToEmbed), options);
|
9
|
+
await vectorIndex.upsertMany(objects.map((object, i) => ({
|
10
|
+
id: getId?.(object, i) ?? generateId(),
|
11
|
+
vector: embeddings[i],
|
12
|
+
data: object,
|
13
|
+
})));
|
14
|
+
}
|
15
|
+
exports.upsertIntoVectorIndex = upsertIntoVectorIndex;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
+
import { TextEmbeddingModel, TextEmbeddingModelSettings } from "../model-function/embed-text/TextEmbeddingModel.js";
|
3
|
+
import { VectorIndex } from "./VectorIndex.js";
|
4
|
+
export declare function upsertIntoVectorIndex<OBJECT, SETTINGS extends TextEmbeddingModelSettings>({ vectorIndex, embeddingModel, generateId, objects, getValueToEmbed, getId, }: {
|
5
|
+
vectorIndex: VectorIndex<OBJECT, unknown>;
|
6
|
+
embeddingModel: TextEmbeddingModel<unknown, SETTINGS>;
|
7
|
+
generateId?: () => string;
|
8
|
+
objects: OBJECT[];
|
9
|
+
getValueToEmbed: (object: OBJECT, index: number) => string;
|
10
|
+
getId?: (object: OBJECT, index: number) => string | undefined;
|
11
|
+
}, options?: ModelFunctionOptions<SETTINGS>): Promise<void>;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { nanoid as createId } from "nanoid";
|
2
|
+
import { embedTexts } from "../model-function/embed-text/embedText.js";
|
3
|
+
export async function upsertIntoVectorIndex({ vectorIndex, embeddingModel, generateId = createId, objects, getValueToEmbed, getId, }, options) {
|
4
|
+
// many embedding models support bulk embedding, so we first embed all texts:
|
5
|
+
const embeddings = await embedTexts(embeddingModel, objects.map(getValueToEmbed), options);
|
6
|
+
await vectorIndex.upsertMany(objects.map((object, i) => ({
|
7
|
+
id: getId?.(object, i) ?? generateId(),
|
8
|
+
vector: embeddings[i],
|
9
|
+
data: object,
|
10
|
+
})));
|
11
|
+
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
-
import { TextEmbeddingModel, TextEmbeddingModelSettings } from "../model-function/embed-text/TextEmbeddingModel.js";
|
3
|
-
import { TextChunk } from "./TextChunk.js";
|
4
|
-
import { TextChunkRetriever, TextChunkRetrieverSettings } from "./retrieve-text-chunks/TextChunkRetriever.js";
|
5
|
-
import { VectorIndex } from "../vector-index/VectorIndex.js";
|
6
|
-
export interface SimilarTextChunksFromVectorIndexRetrieverSettings {
|
7
|
-
maxResults?: number;
|
8
|
-
similarityThreshold?: number;
|
9
|
-
}
|
10
|
-
export declare class SimilarTextChunksFromVectorIndexRetriever<CHUNK extends TextChunk, INDEX, SETTINGS extends TextEmbeddingModelSettings> implements TextChunkRetriever<CHUNK, string, SimilarTextChunksFromVectorIndexRetrieverSettings> {
|
11
|
-
private readonly vectorIndex;
|
12
|
-
private readonly embeddingModel;
|
13
|
-
private readonly settings;
|
14
|
-
constructor({ vectorIndex, embeddingModel, maxResults, similarityThreshold, }: {
|
15
|
-
vectorIndex: VectorIndex<CHUNK, INDEX>;
|
16
|
-
embeddingModel: TextEmbeddingModel<unknown, SETTINGS>;
|
17
|
-
} & SimilarTextChunksFromVectorIndexRetrieverSettings);
|
18
|
-
retrieveTextChunks(query: string, options?: ModelFunctionOptions<TextChunkRetrieverSettings>): Promise<CHUNK[]>;
|
19
|
-
withSettings(additionalSettings: Partial<SimilarTextChunksFromVectorIndexRetrieverSettings>): this;
|
20
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { ModelFunctionOptions } from "../../model-function/ModelFunctionOptions.js";
|
2
|
-
import { TextChunk } from "../TextChunk.js";
|
3
|
-
export interface TextChunkRetrieverSettings {
|
4
|
-
}
|
5
|
-
export interface TextChunkRetriever<CHUNK extends TextChunk, QUERY, SETTINGS extends TextChunkRetrieverSettings> {
|
6
|
-
retrieveTextChunks(query: QUERY, options?: ModelFunctionOptions<TextChunkRetrieverSettings>): Promise<CHUNK[]>;
|
7
|
-
withSettings(additionalSettings: Partial<SETTINGS>): this;
|
8
|
-
}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.retrieveTextChunks = void 0;
|
4
|
-
async function retrieveTextChunks(retriever, query, options) {
|
5
|
-
// TODO add error handling, events, duration tracking, etc.
|
6
|
-
return {
|
7
|
-
chunks: await retriever.retrieveTextChunks(query, options),
|
8
|
-
};
|
9
|
-
}
|
10
|
-
exports.retrieveTextChunks = retrieveTextChunks;
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import { ModelFunctionOptions } from "../../model-function/ModelFunctionOptions.js";
|
2
|
-
import { TextChunk } from "../TextChunk.js";
|
3
|
-
import { TextChunkRetriever, TextChunkRetrieverSettings } from "./TextChunkRetriever.js";
|
4
|
-
export declare function retrieveTextChunks<CHUNK extends TextChunk, QUERY, SETTINGS extends TextChunkRetrieverSettings>(retriever: TextChunkRetriever<CHUNK, QUERY, SETTINGS>, query: QUERY, options?: ModelFunctionOptions<SETTINGS>): Promise<{
|
5
|
-
chunks: CHUNK[];
|
6
|
-
}>;
|
@@ -1,15 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.upsertTextChunks = void 0;
|
4
|
-
const nanoid_1 = require("nanoid");
|
5
|
-
const embedText_js_1 = require("../model-function/embed-text/embedText.cjs");
|
6
|
-
async function upsertTextChunks({ vectorIndex, embeddingModel, generateId = nanoid_1.nanoid, chunks, ids, }, options) {
|
7
|
-
// many embedding models support bulk embedding, so we first embed all texts:
|
8
|
-
const embeddings = await (0, embedText_js_1.embedTexts)(embeddingModel, chunks.map((chunk) => chunk.text), options);
|
9
|
-
await vectorIndex.upsertMany(chunks.map((chunk, i) => ({
|
10
|
-
id: ids?.[i] ?? generateId(),
|
11
|
-
vector: embeddings[i],
|
12
|
-
data: chunk,
|
13
|
-
})));
|
14
|
-
}
|
15
|
-
exports.upsertTextChunks = upsertTextChunks;
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import { ModelFunctionOptions } from "../model-function/ModelFunctionOptions.js";
|
2
|
-
import { TextEmbeddingModel, TextEmbeddingModelSettings } from "../model-function/embed-text/TextEmbeddingModel.js";
|
3
|
-
import { TextChunk } from "./TextChunk.js";
|
4
|
-
import { VectorIndex } from "../vector-index/VectorIndex.js";
|
5
|
-
export declare function upsertTextChunks<CHUNK extends TextChunk, SETTINGS extends TextEmbeddingModelSettings>({ vectorIndex, embeddingModel, generateId, chunks, ids, }: {
|
6
|
-
vectorIndex: VectorIndex<CHUNK, unknown>;
|
7
|
-
embeddingModel: TextEmbeddingModel<unknown, SETTINGS>;
|
8
|
-
generateId?: () => string;
|
9
|
-
chunks: CHUNK[];
|
10
|
-
ids?: Array<string | undefined>;
|
11
|
-
}, options?: ModelFunctionOptions<SETTINGS>): Promise<void>;
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import { nanoid as createId } from "nanoid";
|
2
|
-
import { embedTexts } from "../model-function/embed-text/embedText.js";
|
3
|
-
export async function upsertTextChunks({ vectorIndex, embeddingModel, generateId = createId, chunks, ids, }, options) {
|
4
|
-
// many embedding models support bulk embedding, so we first embed all texts:
|
5
|
-
const embeddings = await embedTexts(embeddingModel, chunks.map((chunk) => chunk.text), options);
|
6
|
-
await vectorIndex.upsertMany(chunks.map((chunk, i) => ({
|
7
|
-
id: ids?.[i] ?? generateId(),
|
8
|
-
vector: embeddings[i],
|
9
|
-
data: chunk,
|
10
|
-
})));
|
11
|
-
}
|
File without changes
|
File without changes
|