update files search methods && semantic search mehtod

This commit is contained in:
duanfuxiang
2025-03-31 17:33:53 +08:00
parent d72c871716
commit 1e85149660
15 changed files with 87 additions and 28 deletions

View File

@@ -1,3 +1,6 @@
import https from 'https'
import { URL } from 'url'
import { GoogleGenerativeAI } from '@google/generative-ai'
import { OpenAI } from 'openai'
@@ -176,6 +179,42 @@ export const getEmbeddingModel = (
},
}
}
case ApiProvider.OpenAICompatible: {
const openai = new OpenAI({
apiKey: settings.openaicompatibleProvider.apiKey,
baseURL: settings.openaicompatibleProvider.baseUrl,
dangerouslyAllowBrowser: true,
});
return {
id: settings.embeddingModelId,
dimension: 0,
getEmbedding: async (text: string) => {
try {
if (!openai.apiKey) {
throw new LLMAPIKeyNotSetException(
'OpenAI Compatible API key is missing. Please set it in settings menu.',
)
}
const embedding = await openai.embeddings.create({
model: settings.embeddingModelId,
input: text,
encoding_format: "float",
})
return embedding.data[0].embedding
} catch (error) {
if (
error.status === 429 &&
error.message.toLowerCase().includes('rate limit')
) {
throw new LLMRateLimitExceededException(
'OpenAI Compatible API rate limit exceeded. Please try again later.',
)
}
throw error
}
},
}
}
default:
throw new Error('Invalid embedding model')
}