@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.
Files changed (116) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +287 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/context.d.ts +276 -0
  5. package/dist/context.d.ts.map +1 -0
  6. package/dist/context.js +1072 -0
  7. package/dist/context.js.map +1 -0
  8. package/dist/embedding/base-embedding.d.ts +51 -0
  9. package/dist/embedding/base-embedding.d.ts.map +1 -0
  10. package/dist/embedding/base-embedding.js +36 -0
  11. package/dist/embedding/base-embedding.js.map +1 -0
  12. package/dist/embedding/gemini-embedding.d.ts +53 -0
  13. package/dist/embedding/gemini-embedding.d.ts.map +1 -0
  14. package/dist/embedding/gemini-embedding.js +152 -0
  15. package/dist/embedding/gemini-embedding.js.map +1 -0
  16. package/dist/embedding/index.d.ts +6 -0
  17. package/dist/embedding/index.d.ts.map +1 -0
  18. package/dist/embedding/index.js +24 -0
  19. package/dist/embedding/index.js.map +1 -0
  20. package/dist/embedding/ollama-embedding.d.ts +55 -0
  21. package/dist/embedding/ollama-embedding.d.ts.map +1 -0
  22. package/dist/embedding/ollama-embedding.js +192 -0
  23. package/dist/embedding/ollama-embedding.js.map +1 -0
  24. package/dist/embedding/openai-embedding.d.ts +36 -0
  25. package/dist/embedding/openai-embedding.d.ts.map +1 -0
  26. package/dist/embedding/openai-embedding.js +159 -0
  27. package/dist/embedding/openai-embedding.js.map +1 -0
  28. package/dist/embedding/voyageai-embedding.d.ts +44 -0
  29. package/dist/embedding/voyageai-embedding.d.ts.map +1 -0
  30. package/dist/embedding/voyageai-embedding.js +227 -0
  31. package/dist/embedding/voyageai-embedding.js.map +1 -0
  32. package/dist/index.d.ts +8 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +24 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/splitter/ast-splitter.d.ts +22 -0
  37. package/dist/splitter/ast-splitter.d.ts.map +1 -0
  38. package/dist/splitter/ast-splitter.js +234 -0
  39. package/dist/splitter/ast-splitter.js.map +1 -0
  40. package/dist/splitter/index.d.ts +41 -0
  41. package/dist/splitter/index.d.ts.map +1 -0
  42. package/dist/splitter/index.js +27 -0
  43. package/dist/splitter/index.js.map +1 -0
  44. package/dist/splitter/langchain-splitter.d.ts +13 -0
  45. package/dist/splitter/langchain-splitter.d.ts.map +1 -0
  46. package/dist/splitter/langchain-splitter.js +118 -0
  47. package/dist/splitter/langchain-splitter.js.map +1 -0
  48. package/dist/sync/merkle.d.ts +26 -0
  49. package/dist/sync/merkle.d.ts.map +1 -0
  50. package/dist/sync/merkle.js +112 -0
  51. package/dist/sync/merkle.js.map +1 -0
  52. package/dist/sync/synchronizer.d.ts +30 -0
  53. package/dist/sync/synchronizer.d.ts.map +1 -0
  54. package/dist/sync/synchronizer.js +339 -0
  55. package/dist/sync/synchronizer.js.map +1 -0
  56. package/dist/types.d.ts +14 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +3 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/utils/env-manager.d.ts +19 -0
  61. package/dist/utils/env-manager.d.ts.map +1 -0
  62. package/dist/utils/env-manager.js +125 -0
  63. package/dist/utils/env-manager.js.map +1 -0
  64. package/dist/utils/index.d.ts +2 -0
  65. package/dist/utils/index.d.ts.map +1 -0
  66. package/dist/utils/index.js +7 -0
  67. package/dist/utils/index.js.map +1 -0
  68. package/dist/vectordb/base/base-vector-database.d.ts +58 -0
  69. package/dist/vectordb/base/base-vector-database.d.ts.map +1 -0
  70. package/dist/vectordb/base/base-vector-database.js +32 -0
  71. package/dist/vectordb/base/base-vector-database.js.map +1 -0
  72. package/dist/vectordb/factory.d.ts +80 -0
  73. package/dist/vectordb/factory.d.ts.map +1 -0
  74. package/dist/vectordb/factory.js +89 -0
  75. package/dist/vectordb/factory.js.map +1 -0
  76. package/dist/vectordb/index.d.ts +12 -0
  77. package/dist/vectordb/index.d.ts.map +1 -0
  78. package/dist/vectordb/index.js +27 -0
  79. package/dist/vectordb/index.js.map +1 -0
  80. package/dist/vectordb/milvus-restful-vectordb.d.ts +75 -0
  81. package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -0
  82. package/dist/vectordb/milvus-restful-vectordb.js +707 -0
  83. package/dist/vectordb/milvus-restful-vectordb.js.map +1 -0
  84. package/dist/vectordb/milvus-vectordb.d.ts +59 -0
  85. package/dist/vectordb/milvus-vectordb.d.ts.map +1 -0
  86. package/dist/vectordb/milvus-vectordb.js +641 -0
  87. package/dist/vectordb/milvus-vectordb.js.map +1 -0
  88. package/dist/vectordb/qdrant-vectordb.d.ts +124 -0
  89. package/dist/vectordb/qdrant-vectordb.d.ts.map +1 -0
  90. package/dist/vectordb/qdrant-vectordb.js +582 -0
  91. package/dist/vectordb/qdrant-vectordb.js.map +1 -0
  92. package/dist/vectordb/sparse/index.d.ts +4 -0
  93. package/dist/vectordb/sparse/index.d.ts.map +1 -0
  94. package/dist/vectordb/sparse/index.js +23 -0
  95. package/dist/vectordb/sparse/index.js.map +1 -0
  96. package/dist/vectordb/sparse/simple-bm25.d.ts +104 -0
  97. package/dist/vectordb/sparse/simple-bm25.d.ts.map +1 -0
  98. package/dist/vectordb/sparse/simple-bm25.js +189 -0
  99. package/dist/vectordb/sparse/simple-bm25.js.map +1 -0
  100. package/dist/vectordb/sparse/sparse-vector-generator.d.ts +54 -0
  101. package/dist/vectordb/sparse/sparse-vector-generator.d.ts.map +1 -0
  102. package/dist/vectordb/sparse/sparse-vector-generator.js +3 -0
  103. package/dist/vectordb/sparse/sparse-vector-generator.js.map +1 -0
  104. package/dist/vectordb/sparse/types.d.ts +38 -0
  105. package/dist/vectordb/sparse/types.d.ts.map +1 -0
  106. package/dist/vectordb/sparse/types.js +3 -0
  107. package/dist/vectordb/sparse/types.js.map +1 -0
  108. package/dist/vectordb/types.d.ts +120 -0
  109. package/dist/vectordb/types.d.ts.map +1 -0
  110. package/dist/vectordb/types.js +9 -0
  111. package/dist/vectordb/types.js.map +1 -0
  112. package/dist/vectordb/zilliz-utils.d.ts +135 -0
  113. package/dist/vectordb/zilliz-utils.d.ts.map +1 -0
  114. package/dist/vectordb/zilliz-utils.js +192 -0
  115. package/dist/vectordb/zilliz-utils.js.map +1 -0
  116. 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"}