diff --git a/src/LLMProviders/embeddingManager.ts b/src/LLMProviders/embeddingManager.ts index 8f43a03b..70c64123 100644 --- a/src/LLMProviders/embeddingManager.ts +++ b/src/LLMProviders/embeddingManager.ts @@ -3,8 +3,8 @@ import { CustomModel } from "@/aiParams"; import { EmbeddingModelProviders } from "@/constants"; import { getDecryptedKey } from "@/encryptionService"; import { CustomError } from "@/error"; -import { safeFetch } from "@/utils"; import { getSettings, subscribeToSettingsChange } from "@/settings/model"; +import { safeFetch } from "@/utils"; import { CohereEmbeddings } from "@langchain/cohere"; import { Embeddings } from "@langchain/core/embeddings"; import { GoogleGenerativeAIEmbeddings } from "@langchain/google-genai"; @@ -19,6 +19,7 @@ const EMBEDDING_PROVIDER_CONSTRUCTORS = { [EmbeddingModelProviders.GOOGLE]: GoogleGenerativeAIEmbeddings, [EmbeddingModelProviders.AZURE_OPENAI]: OpenAIEmbeddings, [EmbeddingModelProviders.OLLAMA]: OllamaEmbeddings, + [EmbeddingModelProviders.LM_STUDIO]: OpenAIEmbeddings, [EmbeddingModelProviders.OPENAI_FORMAT]: OpenAIEmbeddings, } as const; @@ -43,6 +44,7 @@ export default class EmbeddingManager { [EmbeddingModelProviders.GOOGLE]: () => getSettings().googleApiKey, [EmbeddingModelProviders.AZURE_OPENAI]: () => getSettings().azureOpenAIApiKey, [EmbeddingModelProviders.OLLAMA]: () => "default-key", + [EmbeddingModelProviders.LM_STUDIO]: () => "default-key", [EmbeddingModelProviders.OPENAI_FORMAT]: () => "", }; @@ -196,6 +198,14 @@ export default class EmbeddingManager { model: modelName, truncate: true, }, + [EmbeddingModelProviders.LM_STUDIO]: { + modelName, + openAIApiKey: getDecryptedKey(customModel.apiKey || "default-key"), + configuration: { + baseURL: customModel.baseUrl || "http://localhost:1234/v1", + fetch: customModel.enableCors ? safeFetch : undefined, + }, + }, [EmbeddingModelProviders.OPENAI_FORMAT]: { modelName, openAIApiKey: getDecryptedKey(customModel.apiKey || ""), diff --git a/src/constants.ts b/src/constants.ts index b74889c8..fa36c0d9 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -123,6 +123,7 @@ export enum EmbeddingModelProviders { GOOGLE = "google", AZURE_OPENAI = "azure_openai", OLLAMA = "ollama", + LM_STUDIO = "lm-studio", OPENAI_FORMAT = "3rd party (openai-format)", // HUGGINGFACE = "huggingface", // VOYAGEAI = "voyageai", diff --git a/src/settings/components/QASettings.tsx b/src/settings/components/QASettings.tsx index 6afd974b..1a2d2509 100644 --- a/src/settings/components/QASettings.tsx +++ b/src/settings/components/QASettings.tsx @@ -32,7 +32,6 @@ const QASettings: React.FC = ({ vectorStoreManager }) => { if (modelKey !== settings.embeddingModelKey) { new RebuildIndexConfirmModal(app, async () => { updateSetting("embeddingModelKey", modelKey); - await vectorStoreManager.indexVaultToVectorStore(true); }).open(); } }; @@ -119,7 +118,7 @@ const QASettings: React.FC = ({ vectorStoreManager }) => {