@@ -14,14 +14,36 @@ interface EmbeddingOptions {
14
14
provider ?: string ;
15
15
}
16
16
17
- // Add the embedding configuration
18
- export const getEmbeddingConfig = ( ) => ( {
17
+ export const EmbeddingProvider = {
18
+ OpenAI : "OpenAI" ,
19
+ Ollama : "Ollama" ,
20
+ GaiaNet : "GaiaNet" ,
21
+ BGE : "BGE" ,
22
+ } as const ;
23
+
24
+ export type EmbeddingProvider =
25
+ ( typeof EmbeddingProvider ) [ keyof typeof EmbeddingProvider ] ;
26
+
27
+ export namespace EmbeddingProvider {
28
+ export type OpenAI = typeof EmbeddingProvider . OpenAI ;
29
+ export type Ollama = typeof EmbeddingProvider . Ollama ;
30
+ export type GaiaNet = typeof EmbeddingProvider . GaiaNet ;
31
+ export type BGE = typeof EmbeddingProvider . BGE ;
32
+ }
33
+
34
+ export type EmbeddingConfig = {
35
+ readonly dimensions : number ;
36
+ readonly model : string ;
37
+ readonly provider : EmbeddingProvider ;
38
+ } ;
39
+
40
+ export const getEmbeddingConfig = ( ) : EmbeddingConfig => ( {
19
41
dimensions :
20
42
settings . USE_OPENAI_EMBEDDING ?. toLowerCase ( ) === "true"
21
43
? 1536 // OpenAI
22
44
: settings . USE_OLLAMA_EMBEDDING ?. toLowerCase ( ) === "true"
23
45
? 1024 // Ollama mxbai-embed-large
24
- :settings . USE_GAIANET_EMBEDDING ?. toLowerCase ( ) === "true"
46
+ : settings . USE_GAIANET_EMBEDDING ?. toLowerCase ( ) === "true"
25
47
? 768 // GaiaNet
26
48
: 384 , // BGE
27
49
model :
@@ -171,7 +193,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
171
193
const isNode = typeof process !== "undefined" && process . versions ?. node ;
172
194
173
195
// Determine which embedding path to use
174
- if ( config . provider === " OpenAI" ) {
196
+ if ( config . provider === EmbeddingProvider . OpenAI ) {
175
197
return await getRemoteEmbedding ( input , {
176
198
model : config . model ,
177
199
endpoint : "https://api.openai.com/v1" ,
@@ -180,7 +202,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
180
202
} ) ;
181
203
}
182
204
183
- if ( config . provider === " Ollama" ) {
205
+ if ( config . provider === EmbeddingProvider . Ollama ) {
184
206
return await getRemoteEmbedding ( input , {
185
207
model : config . model ,
186
208
endpoint :
@@ -191,7 +213,7 @@ export async function embed(runtime: IAgentRuntime, input: string) {
191
213
} ) ;
192
214
}
193
215
194
- if ( config . provider == " GaiaNet" ) {
216
+ if ( config . provider == EmbeddingProvider . GaiaNet ) {
195
217
return await getRemoteEmbedding ( input , {
196
218
model : config . model ,
197
219
endpoint :
@@ -252,9 +274,11 @@ export async function embed(runtime: IAgentRuntime, input: string) {
252
274
return await import ( "fastembed" ) ;
253
275
} catch {
254
276
elizaLogger . error ( "Failed to load fastembed." ) ;
255
- throw new Error ( "fastembed import failed, falling back to remote embedding" ) ;
277
+ throw new Error (
278
+ "fastembed import failed, falling back to remote embedding"
279
+ ) ;
256
280
}
257
- } ) ( )
281
+ } ) ( ) ,
258
282
] ) ;
259
283
260
284
const [ fs , { fileURLToPath } , fastEmbed ] = moduleImports ;
0 commit comments