@pleaseai/context-please-core 0.1.0
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/LICENSE +24 -0
- package/README.md +287 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/context.d.ts +276 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1072 -0
- package/dist/context.js.map +1 -0
- package/dist/embedding/base-embedding.d.ts +51 -0
- package/dist/embedding/base-embedding.d.ts.map +1 -0
- package/dist/embedding/base-embedding.js +36 -0
- package/dist/embedding/base-embedding.js.map +1 -0
- package/dist/embedding/gemini-embedding.d.ts +53 -0
- package/dist/embedding/gemini-embedding.d.ts.map +1 -0
- package/dist/embedding/gemini-embedding.js +152 -0
- package/dist/embedding/gemini-embedding.js.map +1 -0
- package/dist/embedding/index.d.ts +6 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +24 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/ollama-embedding.d.ts +55 -0
- package/dist/embedding/ollama-embedding.d.ts.map +1 -0
- package/dist/embedding/ollama-embedding.js +192 -0
- package/dist/embedding/ollama-embedding.js.map +1 -0
- package/dist/embedding/openai-embedding.d.ts +36 -0
- package/dist/embedding/openai-embedding.d.ts.map +1 -0
- package/dist/embedding/openai-embedding.js +159 -0
- package/dist/embedding/openai-embedding.js.map +1 -0
- package/dist/embedding/voyageai-embedding.d.ts +44 -0
- package/dist/embedding/voyageai-embedding.d.ts.map +1 -0
- package/dist/embedding/voyageai-embedding.js +227 -0
- package/dist/embedding/voyageai-embedding.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/splitter/ast-splitter.d.ts +22 -0
- package/dist/splitter/ast-splitter.d.ts.map +1 -0
- package/dist/splitter/ast-splitter.js +234 -0
- package/dist/splitter/ast-splitter.js.map +1 -0
- package/dist/splitter/index.d.ts +41 -0
- package/dist/splitter/index.d.ts.map +1 -0
- package/dist/splitter/index.js +27 -0
- package/dist/splitter/index.js.map +1 -0
- package/dist/splitter/langchain-splitter.d.ts +13 -0
- package/dist/splitter/langchain-splitter.d.ts.map +1 -0
- package/dist/splitter/langchain-splitter.js +118 -0
- package/dist/splitter/langchain-splitter.js.map +1 -0
- package/dist/sync/merkle.d.ts +26 -0
- package/dist/sync/merkle.d.ts.map +1 -0
- package/dist/sync/merkle.js +112 -0
- package/dist/sync/merkle.js.map +1 -0
- package/dist/sync/synchronizer.d.ts +30 -0
- package/dist/sync/synchronizer.d.ts.map +1 -0
- package/dist/sync/synchronizer.js +339 -0
- package/dist/sync/synchronizer.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/env-manager.d.ts +19 -0
- package/dist/utils/env-manager.d.ts.map +1 -0
- package/dist/utils/env-manager.js +125 -0
- package/dist/utils/env-manager.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/vectordb/base/base-vector-database.d.ts +58 -0
- package/dist/vectordb/base/base-vector-database.d.ts.map +1 -0
- package/dist/vectordb/base/base-vector-database.js +32 -0
- package/dist/vectordb/base/base-vector-database.js.map +1 -0
- package/dist/vectordb/factory.d.ts +80 -0
- package/dist/vectordb/factory.d.ts.map +1 -0
- package/dist/vectordb/factory.js +89 -0
- package/dist/vectordb/factory.js.map +1 -0
- package/dist/vectordb/index.d.ts +12 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +27 -0
- package/dist/vectordb/index.js.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts +75 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.js +707 -0
- package/dist/vectordb/milvus-restful-vectordb.js.map +1 -0
- package/dist/vectordb/milvus-vectordb.d.ts +59 -0
- package/dist/vectordb/milvus-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-vectordb.js +641 -0
- package/dist/vectordb/milvus-vectordb.js.map +1 -0
- package/dist/vectordb/qdrant-vectordb.d.ts +124 -0
- package/dist/vectordb/qdrant-vectordb.d.ts.map +1 -0
- package/dist/vectordb/qdrant-vectordb.js +582 -0
- package/dist/vectordb/qdrant-vectordb.js.map +1 -0
- package/dist/vectordb/sparse/index.d.ts +4 -0
- package/dist/vectordb/sparse/index.d.ts.map +1 -0
- package/dist/vectordb/sparse/index.js +23 -0
- package/dist/vectordb/sparse/index.js.map +1 -0
- package/dist/vectordb/sparse/simple-bm25.d.ts +104 -0
- package/dist/vectordb/sparse/simple-bm25.d.ts.map +1 -0
- package/dist/vectordb/sparse/simple-bm25.js +189 -0
- package/dist/vectordb/sparse/simple-bm25.js.map +1 -0
- package/dist/vectordb/sparse/sparse-vector-generator.d.ts +54 -0
- package/dist/vectordb/sparse/sparse-vector-generator.d.ts.map +1 -0
- package/dist/vectordb/sparse/sparse-vector-generator.js +3 -0
- package/dist/vectordb/sparse/sparse-vector-generator.js.map +1 -0
- package/dist/vectordb/sparse/types.d.ts +38 -0
- package/dist/vectordb/sparse/types.d.ts.map +1 -0
- package/dist/vectordb/sparse/types.js +3 -0
- package/dist/vectordb/sparse/types.js.map +1 -0
- package/dist/vectordb/types.d.ts +120 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +9 -0
- package/dist/vectordb/types.js.map +1 -0
- package/dist/vectordb/zilliz-utils.d.ts +135 -0
- package/dist/vectordb/zilliz-utils.d.ts.map +1 -0
- package/dist/vectordb/zilliz-utils.js +192 -0
- package/dist/vectordb/zilliz-utils.js.map +1 -0
- package/package.json +61 -0
@@ -0,0 +1,192 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.OllamaEmbedding = void 0;
|
4
|
+
const ollama_1 = require("ollama");
|
5
|
+
const base_embedding_1 = require("./base-embedding");
|
6
|
+
class OllamaEmbedding extends base_embedding_1.Embedding {
|
7
|
+
constructor(config) {
|
8
|
+
super();
|
9
|
+
this.dimension = 768; // Default dimension for many embedding models
|
10
|
+
this.dimensionDetected = false; // Track if dimension has been detected
|
11
|
+
this.maxTokens = 2048; // Default context window for Ollama
|
12
|
+
this.config = config;
|
13
|
+
this.client = new ollama_1.Ollama({
|
14
|
+
host: config.host || 'http://127.0.0.1:11434',
|
15
|
+
fetch: config.fetch,
|
16
|
+
});
|
17
|
+
// Set dimension based on config or will be detected on first use
|
18
|
+
if (config.dimension) {
|
19
|
+
this.dimension = config.dimension;
|
20
|
+
this.dimensionDetected = true;
|
21
|
+
}
|
22
|
+
// Set max tokens based on config or use default
|
23
|
+
if (config.maxTokens) {
|
24
|
+
this.maxTokens = config.maxTokens;
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
// Set default based on known models
|
28
|
+
this.setDefaultMaxTokensForModel(config.model);
|
29
|
+
}
|
30
|
+
// If no dimension is provided, it will be detected in the first embed call
|
31
|
+
}
|
32
|
+
setDefaultMaxTokensForModel(model) {
|
33
|
+
// Set different max tokens based on known models
|
34
|
+
if (model?.includes('nomic-embed-text')) {
|
35
|
+
this.maxTokens = 8192; // nomic-embed-text supports 8192 tokens
|
36
|
+
}
|
37
|
+
else if (model?.includes('snowflake-arctic-embed')) {
|
38
|
+
this.maxTokens = 8192; // snowflake-arctic-embed supports 8192 tokens
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
this.maxTokens = 2048; // Default for most Ollama models
|
42
|
+
}
|
43
|
+
}
|
44
|
+
async embed(text) {
|
45
|
+
// Preprocess the text
|
46
|
+
const processedText = this.preprocessText(text);
|
47
|
+
// Detect dimension on first use if not configured
|
48
|
+
if (!this.dimensionDetected && !this.config.dimension) {
|
49
|
+
this.dimension = await this.detectDimension();
|
50
|
+
this.dimensionDetected = true;
|
51
|
+
console.log(`[OllamaEmbedding] 📏 Detected Ollama embedding dimension: ${this.dimension} for model: ${this.config.model}`);
|
52
|
+
}
|
53
|
+
const embedOptions = {
|
54
|
+
model: this.config.model,
|
55
|
+
input: processedText,
|
56
|
+
options: this.config.options,
|
57
|
+
};
|
58
|
+
// Only include keep_alive if it has a valid value
|
59
|
+
if (this.config.keepAlive && this.config.keepAlive !== '') {
|
60
|
+
embedOptions.keep_alive = this.config.keepAlive;
|
61
|
+
}
|
62
|
+
const response = await this.client.embed(embedOptions);
|
63
|
+
if (!response.embeddings || !response.embeddings[0]) {
|
64
|
+
throw new Error('Ollama API returned invalid response');
|
65
|
+
}
|
66
|
+
return {
|
67
|
+
vector: response.embeddings[0],
|
68
|
+
dimension: this.dimension
|
69
|
+
};
|
70
|
+
}
|
71
|
+
async embedBatch(texts) {
|
72
|
+
// Preprocess all texts
|
73
|
+
const processedTexts = this.preprocessTexts(texts);
|
74
|
+
// Detect dimension on first use if not configured
|
75
|
+
if (!this.dimensionDetected && !this.config.dimension) {
|
76
|
+
this.dimension = await this.detectDimension();
|
77
|
+
this.dimensionDetected = true;
|
78
|
+
console.log(`[OllamaEmbedding] 📏 Detected Ollama embedding dimension: ${this.dimension} for model: ${this.config.model}`);
|
79
|
+
}
|
80
|
+
// Use Ollama's native batch embedding API
|
81
|
+
const embedOptions = {
|
82
|
+
model: this.config.model,
|
83
|
+
input: processedTexts, // Pass array directly to Ollama
|
84
|
+
options: this.config.options,
|
85
|
+
};
|
86
|
+
// Only include keep_alive if it has a valid value
|
87
|
+
if (this.config.keepAlive && this.config.keepAlive !== '') {
|
88
|
+
embedOptions.keep_alive = this.config.keepAlive;
|
89
|
+
}
|
90
|
+
const response = await this.client.embed(embedOptions);
|
91
|
+
if (!response.embeddings || !Array.isArray(response.embeddings)) {
|
92
|
+
throw new Error('Ollama API returned invalid batch response');
|
93
|
+
}
|
94
|
+
// Convert to EmbeddingVector format
|
95
|
+
return response.embeddings.map((embedding) => ({
|
96
|
+
vector: embedding,
|
97
|
+
dimension: this.dimension
|
98
|
+
}));
|
99
|
+
}
|
100
|
+
getDimension() {
|
101
|
+
return this.dimension;
|
102
|
+
}
|
103
|
+
getProvider() {
|
104
|
+
return 'Ollama';
|
105
|
+
}
|
106
|
+
/**
|
107
|
+
* Set model type and detect its dimension
|
108
|
+
* @param model Model name
|
109
|
+
*/
|
110
|
+
async setModel(model) {
|
111
|
+
this.config.model = model;
|
112
|
+
// Reset dimension detection when model changes
|
113
|
+
this.dimensionDetected = false;
|
114
|
+
// Update max tokens for new model
|
115
|
+
this.setDefaultMaxTokensForModel(model);
|
116
|
+
if (!this.config.dimension) {
|
117
|
+
this.dimension = await this.detectDimension();
|
118
|
+
this.dimensionDetected = true;
|
119
|
+
console.log(`[OllamaEmbedding] 📏 Detected Ollama embedding dimension: ${this.dimension} for model: ${this.config.model}`);
|
120
|
+
}
|
121
|
+
else {
|
122
|
+
console.log('[OllamaEmbedding] Dimension already detected for model ' + this.config.model);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
/**
|
126
|
+
* Set host URL
|
127
|
+
* @param host Ollama host URL
|
128
|
+
*/
|
129
|
+
setHost(host) {
|
130
|
+
this.config.host = host;
|
131
|
+
this.client = new ollama_1.Ollama({
|
132
|
+
host: host,
|
133
|
+
fetch: this.config.fetch,
|
134
|
+
});
|
135
|
+
}
|
136
|
+
/**
|
137
|
+
* Set keep alive duration
|
138
|
+
* @param keepAlive Keep alive duration
|
139
|
+
*/
|
140
|
+
setKeepAlive(keepAlive) {
|
141
|
+
this.config.keepAlive = keepAlive;
|
142
|
+
}
|
143
|
+
/**
|
144
|
+
* Set additional options
|
145
|
+
* @param options Additional options for the model
|
146
|
+
*/
|
147
|
+
setOptions(options) {
|
148
|
+
this.config.options = options;
|
149
|
+
}
|
150
|
+
/**
|
151
|
+
* Set max tokens manually
|
152
|
+
* @param maxTokens Maximum number of tokens
|
153
|
+
*/
|
154
|
+
setMaxTokens(maxTokens) {
|
155
|
+
this.config.maxTokens = maxTokens;
|
156
|
+
this.maxTokens = maxTokens;
|
157
|
+
}
|
158
|
+
/**
|
159
|
+
* Get client instance (for advanced usage)
|
160
|
+
*/
|
161
|
+
getClient() {
|
162
|
+
return this.client;
|
163
|
+
}
|
164
|
+
async detectDimension(testText = "test") {
|
165
|
+
console.log(`[OllamaEmbedding] Detecting embedding dimension...`);
|
166
|
+
try {
|
167
|
+
const processedText = this.preprocessText(testText);
|
168
|
+
const embedOptions = {
|
169
|
+
model: this.config.model,
|
170
|
+
input: processedText,
|
171
|
+
options: this.config.options,
|
172
|
+
};
|
173
|
+
if (this.config.keepAlive && this.config.keepAlive !== '') {
|
174
|
+
embedOptions.keep_alive = this.config.keepAlive;
|
175
|
+
}
|
176
|
+
const response = await this.client.embed(embedOptions);
|
177
|
+
if (!response.embeddings || !response.embeddings[0]) {
|
178
|
+
throw new Error('Ollama API returned invalid response');
|
179
|
+
}
|
180
|
+
const dimension = response.embeddings[0].length;
|
181
|
+
console.log(`[OllamaEmbedding] Successfully detected embedding dimension: ${dimension}`);
|
182
|
+
return dimension;
|
183
|
+
}
|
184
|
+
catch (error) {
|
185
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
186
|
+
console.error(`[OllamaEmbedding] Failed to detect dimension: ${errorMessage}`);
|
187
|
+
throw new Error(`Failed to detect Ollama embedding dimension: ${errorMessage}`);
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
exports.OllamaEmbedding = OllamaEmbedding;
|
192
|
+
//# sourceMappingURL=ollama-embedding.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ollama-embedding.js","sourceRoot":"","sources":["../../src/embedding/ollama-embedding.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import OpenAI from 'openai';
|
2
|
+
import { Embedding, EmbeddingVector } from './base-embedding';
|
3
|
+
export interface OpenAIEmbeddingConfig {
|
4
|
+
model: string;
|
5
|
+
apiKey: string;
|
6
|
+
baseURL?: string;
|
7
|
+
}
|
8
|
+
export declare class OpenAIEmbedding extends Embedding {
|
9
|
+
private client;
|
10
|
+
private config;
|
11
|
+
private dimension;
|
12
|
+
protected maxTokens: number;
|
13
|
+
constructor(config: OpenAIEmbeddingConfig);
|
14
|
+
detectDimension(testText?: string): Promise<number>;
|
15
|
+
embed(text: string): Promise<EmbeddingVector>;
|
16
|
+
embedBatch(texts: string[]): Promise<EmbeddingVector[]>;
|
17
|
+
getDimension(): number;
|
18
|
+
getProvider(): string;
|
19
|
+
/**
|
20
|
+
* Set model type
|
21
|
+
* @param model Model name
|
22
|
+
*/
|
23
|
+
setModel(model: string): Promise<void>;
|
24
|
+
/**
|
25
|
+
* Get client instance (for advanced usage)
|
26
|
+
*/
|
27
|
+
getClient(): OpenAI;
|
28
|
+
/**
|
29
|
+
* Get list of supported models
|
30
|
+
*/
|
31
|
+
static getSupportedModels(): Record<string, {
|
32
|
+
dimension: number;
|
33
|
+
description: string;
|
34
|
+
}>;
|
35
|
+
}
|
36
|
+
//# sourceMappingURL=openai-embedding.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"openai-embedding.d.ts","sourceRoot":"","sources":["../../src/embedding/openai-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAgB,SAAQ,SAAS;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAgB;IACjC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAQ;gBAEvB,MAAM,EAAE,qBAAqB;IASnC,eAAe,CAAC,QAAQ,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B3D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA+B7C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA8B7D,YAAY,IAAI,MAAM;IAgBtB,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAgB1F"}
|
@@ -0,0 +1,159 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.OpenAIEmbedding = void 0;
|
7
|
+
const openai_1 = __importDefault(require("openai"));
|
8
|
+
const base_embedding_1 = require("./base-embedding");
|
9
|
+
class OpenAIEmbedding extends base_embedding_1.Embedding {
|
10
|
+
constructor(config) {
|
11
|
+
super();
|
12
|
+
this.dimension = 1536; // Default dimension for text-embedding-3-small
|
13
|
+
this.maxTokens = 8192; // Maximum tokens for OpenAI embedding models
|
14
|
+
this.config = config;
|
15
|
+
this.client = new openai_1.default({
|
16
|
+
apiKey: config.apiKey,
|
17
|
+
baseURL: config.baseURL,
|
18
|
+
});
|
19
|
+
}
|
20
|
+
async detectDimension(testText = "test") {
|
21
|
+
const model = this.config.model || 'text-embedding-3-small';
|
22
|
+
const knownModels = OpenAIEmbedding.getSupportedModels();
|
23
|
+
// Use known dimension for standard models
|
24
|
+
if (knownModels[model]) {
|
25
|
+
return knownModels[model].dimension;
|
26
|
+
}
|
27
|
+
// For custom models, make API call to detect dimension
|
28
|
+
try {
|
29
|
+
const processedText = this.preprocessText(testText);
|
30
|
+
const response = await this.client.embeddings.create({
|
31
|
+
model: model,
|
32
|
+
input: processedText,
|
33
|
+
encoding_format: 'float',
|
34
|
+
});
|
35
|
+
return response.data[0].embedding.length;
|
36
|
+
}
|
37
|
+
catch (error) {
|
38
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
39
|
+
// Re-throw authentication errors
|
40
|
+
if (errorMessage.includes('API key') || errorMessage.includes('unauthorized') || errorMessage.includes('authentication')) {
|
41
|
+
throw new Error(`Failed to detect dimension for model ${model}: ${errorMessage}`);
|
42
|
+
}
|
43
|
+
// For other errors, throw exception instead of using fallback
|
44
|
+
throw new Error(`Failed to detect dimension for model ${model}: ${errorMessage}`);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
async embed(text) {
|
48
|
+
const processedText = this.preprocessText(text);
|
49
|
+
const model = this.config.model || 'text-embedding-3-small';
|
50
|
+
const knownModels = OpenAIEmbedding.getSupportedModels();
|
51
|
+
if (knownModels[model] && this.dimension !== knownModels[model].dimension) {
|
52
|
+
this.dimension = knownModels[model].dimension;
|
53
|
+
}
|
54
|
+
else if (!knownModels[model]) {
|
55
|
+
this.dimension = await this.detectDimension();
|
56
|
+
}
|
57
|
+
try {
|
58
|
+
const response = await this.client.embeddings.create({
|
59
|
+
model: model,
|
60
|
+
input: processedText,
|
61
|
+
encoding_format: 'float',
|
62
|
+
});
|
63
|
+
// Update dimension from actual response
|
64
|
+
this.dimension = response.data[0].embedding.length;
|
65
|
+
return {
|
66
|
+
vector: response.data[0].embedding,
|
67
|
+
dimension: this.dimension
|
68
|
+
};
|
69
|
+
}
|
70
|
+
catch (error) {
|
71
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
72
|
+
throw new Error(`Failed to generate OpenAI embedding: ${errorMessage}`);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
async embedBatch(texts) {
|
76
|
+
const processedTexts = this.preprocessTexts(texts);
|
77
|
+
const model = this.config.model || 'text-embedding-3-small';
|
78
|
+
const knownModels = OpenAIEmbedding.getSupportedModels();
|
79
|
+
if (knownModels[model] && this.dimension !== knownModels[model].dimension) {
|
80
|
+
this.dimension = knownModels[model].dimension;
|
81
|
+
}
|
82
|
+
else if (!knownModels[model]) {
|
83
|
+
this.dimension = await this.detectDimension();
|
84
|
+
}
|
85
|
+
try {
|
86
|
+
const response = await this.client.embeddings.create({
|
87
|
+
model: model,
|
88
|
+
input: processedTexts,
|
89
|
+
encoding_format: 'float',
|
90
|
+
});
|
91
|
+
this.dimension = response.data[0].embedding.length;
|
92
|
+
return response.data.map((item) => ({
|
93
|
+
vector: item.embedding,
|
94
|
+
dimension: this.dimension
|
95
|
+
}));
|
96
|
+
}
|
97
|
+
catch (error) {
|
98
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
99
|
+
throw new Error(`Failed to generate OpenAI batch embeddings: ${errorMessage}`);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
getDimension() {
|
103
|
+
// For custom models, we need to detect the dimension first
|
104
|
+
const model = this.config.model || 'text-embedding-3-small';
|
105
|
+
const knownModels = OpenAIEmbedding.getSupportedModels();
|
106
|
+
// If it's a known model, return its known dimension
|
107
|
+
if (knownModels[model]) {
|
108
|
+
return knownModels[model].dimension;
|
109
|
+
}
|
110
|
+
// For custom models, return the current dimension
|
111
|
+
// Note: This may be incorrect until detectDimension() is called
|
112
|
+
console.warn(`[OpenAIEmbedding] ⚠️ getDimension() called for custom model '${model}' - returning ${this.dimension}. Call detectDimension() first for accurate dimension.`);
|
113
|
+
return this.dimension;
|
114
|
+
}
|
115
|
+
getProvider() {
|
116
|
+
return 'OpenAI';
|
117
|
+
}
|
118
|
+
/**
|
119
|
+
* Set model type
|
120
|
+
* @param model Model name
|
121
|
+
*/
|
122
|
+
async setModel(model) {
|
123
|
+
this.config.model = model;
|
124
|
+
const knownModels = OpenAIEmbedding.getSupportedModels();
|
125
|
+
if (knownModels[model]) {
|
126
|
+
this.dimension = knownModels[model].dimension;
|
127
|
+
}
|
128
|
+
else {
|
129
|
+
this.dimension = await this.detectDimension();
|
130
|
+
}
|
131
|
+
}
|
132
|
+
/**
|
133
|
+
* Get client instance (for advanced usage)
|
134
|
+
*/
|
135
|
+
getClient() {
|
136
|
+
return this.client;
|
137
|
+
}
|
138
|
+
/**
|
139
|
+
* Get list of supported models
|
140
|
+
*/
|
141
|
+
static getSupportedModels() {
|
142
|
+
return {
|
143
|
+
'text-embedding-3-small': {
|
144
|
+
dimension: 1536,
|
145
|
+
description: 'High performance and cost-effective embedding model (recommended)'
|
146
|
+
},
|
147
|
+
'text-embedding-3-large': {
|
148
|
+
dimension: 3072,
|
149
|
+
description: 'Highest performance embedding model with larger dimensions'
|
150
|
+
},
|
151
|
+
'text-embedding-ada-002': {
|
152
|
+
dimension: 1536,
|
153
|
+
description: 'Legacy model (use text-embedding-3-small instead)'
|
154
|
+
}
|
155
|
+
};
|
156
|
+
}
|
157
|
+
}
|
158
|
+
exports.OpenAIEmbedding = OpenAIEmbedding;
|
159
|
+
//# sourceMappingURL=openai-embedding.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"openai-embedding.js","sourceRoot":"","sources":["../../src/embedding/openai-embedding.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { VoyageAIClient } from 'voyageai';
|
2
|
+
import { Embedding, EmbeddingVector } from './base-embedding';
|
3
|
+
export interface VoyageAIEmbeddingConfig {
|
4
|
+
model: string;
|
5
|
+
apiKey: string;
|
6
|
+
}
|
7
|
+
export declare class VoyageAIEmbedding extends Embedding {
|
8
|
+
private client;
|
9
|
+
private config;
|
10
|
+
private dimension;
|
11
|
+
private inputType;
|
12
|
+
protected maxTokens: number;
|
13
|
+
constructor(config: VoyageAIEmbeddingConfig);
|
14
|
+
private updateModelSettings;
|
15
|
+
private updateDimensionForModel;
|
16
|
+
detectDimension(): Promise<number>;
|
17
|
+
embed(text: string): Promise<EmbeddingVector>;
|
18
|
+
embedBatch(texts: string[]): Promise<EmbeddingVector[]>;
|
19
|
+
getDimension(): number;
|
20
|
+
getProvider(): string;
|
21
|
+
/**
|
22
|
+
* Set model type
|
23
|
+
* @param model Model name
|
24
|
+
*/
|
25
|
+
setModel(model: string): void;
|
26
|
+
/**
|
27
|
+
* Set input type (VoyageAI specific feature)
|
28
|
+
* @param inputType Input type: 'document' | 'query'
|
29
|
+
*/
|
30
|
+
setInputType(inputType: 'document' | 'query'): void;
|
31
|
+
/**
|
32
|
+
* Get client instance (for advanced usage)
|
33
|
+
*/
|
34
|
+
getClient(): VoyageAIClient;
|
35
|
+
/**
|
36
|
+
* Get list of supported models
|
37
|
+
*/
|
38
|
+
static getSupportedModels(): Record<string, {
|
39
|
+
dimension: number | string;
|
40
|
+
contextLength: number;
|
41
|
+
description: string;
|
42
|
+
}>;
|
43
|
+
}
|
44
|
+
//# sourceMappingURL=voyageai-embedding.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"voyageai-embedding.d.ts","sourceRoot":"","sources":["../../src/embedding/voyageai-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAoC;IACrD,SAAS,CAAC,SAAS,EAAE,MAAM,CAAS;gBAExB,MAAM,EAAE,uBAAuB;IAW3C,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,uBAAuB;IAiBzB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoB7C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyB7D,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI;IAInD;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAkG1H"}
|