Fix/azure embedding (#11044)
* fix: update EmbeddingsFactory to use net.fetch and refactor KnowledgeService to use ModernAiProvider * fix: remove deprecated @langchain/community dependency from package.json * fix: add @langchain/community dependency to package.json and update yarn.lock
This commit is contained in:
@@ -2,6 +2,7 @@ import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces'
|
||||
import { OllamaEmbeddings } from '@cherrystudio/embedjs-ollama'
|
||||
import { OpenAiEmbeddings } from '@cherrystudio/embedjs-openai'
|
||||
import { ApiClient } from '@types'
|
||||
import { net } from 'electron'
|
||||
|
||||
import { VoyageEmbeddings } from './VoyageEmbeddings'
|
||||
|
||||
@@ -43,7 +44,7 @@ export default class EmbeddingsFactory {
|
||||
apiKey,
|
||||
dimensions,
|
||||
batchSize,
|
||||
configuration: { baseURL }
|
||||
configuration: { baseURL, fetch: net.fetch as typeof fetch }
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { loggerService } from '@logger'
|
||||
import { Span } from '@opentelemetry/api'
|
||||
import AiProvider from '@renderer/aiCore'
|
||||
import { ModernAiProvider } from '@renderer/aiCore'
|
||||
import AiProvider from '@renderer/aiCore/legacy'
|
||||
import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT, DEFAULT_KNOWLEDGE_THRESHOLD } from '@renderer/config/constant'
|
||||
import { getEmbeddingMaxContext } from '@renderer/config/embedings'
|
||||
import { isGeminiProvider } from '@renderer/config/providers'
|
||||
import { isAzureOpenAIProvider, isGeminiProvider } from '@renderer/config/providers'
|
||||
import { addSpan, endSpan } from '@renderer/services/SpanManagerService'
|
||||
import store from '@renderer/store'
|
||||
import {
|
||||
@@ -14,6 +15,7 @@ import {
|
||||
KnowledgeSearchResult
|
||||
} from '@renderer/types'
|
||||
import { Chunk, ChunkType } from '@renderer/types/chunk'
|
||||
import { routeToEndpoint } from '@renderer/utils'
|
||||
import { ExtractResults } from '@renderer/utils/extract'
|
||||
import { isEmpty } from 'lodash'
|
||||
|
||||
@@ -23,9 +25,8 @@ import FileManager from './FileManager'
|
||||
const logger = loggerService.withContext('RendererKnowledgeService')
|
||||
|
||||
export const getKnowledgeBaseParams = (base: KnowledgeBase): KnowledgeBaseParams => {
|
||||
const provider = getProviderByModel(base.model)
|
||||
const rerankProvider = getProviderByModel(base.rerankModel)
|
||||
const aiProvider = new AiProvider(provider)
|
||||
const aiProvider = new ModernAiProvider(base.model)
|
||||
const rerankAiProvider = new AiProvider(rerankProvider)
|
||||
|
||||
// get preprocess provider from store instead of base.preprocessProvider
|
||||
@@ -39,12 +40,19 @@ export const getKnowledgeBaseParams = (base: KnowledgeBase): KnowledgeBaseParams
|
||||
}
|
||||
: base.preprocessProvider
|
||||
|
||||
let host = aiProvider.getBaseURL()
|
||||
const actualProvider = aiProvider.getActualProvider()
|
||||
|
||||
let { baseURL } = routeToEndpoint(actualProvider.apiHost)
|
||||
|
||||
const rerankHost = rerankAiProvider.getBaseURL()
|
||||
if (isGeminiProvider(provider)) {
|
||||
host = host + '/v1beta/openai/'
|
||||
if (isGeminiProvider(actualProvider)) {
|
||||
baseURL = baseURL + '/openai'
|
||||
} else if (isAzureOpenAIProvider(actualProvider)) {
|
||||
baseURL = baseURL + '/v1'
|
||||
}
|
||||
|
||||
logger.info(`Knowledge base ${base.name} using baseURL: ${baseURL}`)
|
||||
|
||||
let chunkSize = base.chunkSize
|
||||
const maxChunkSize = getEmbeddingMaxContext(base.model.id)
|
||||
|
||||
@@ -64,8 +72,7 @@ export const getKnowledgeBaseParams = (base: KnowledgeBase): KnowledgeBaseParams
|
||||
model: base.model.id,
|
||||
provider: base.model.provider,
|
||||
apiKey: aiProvider.getApiKey() || 'secret',
|
||||
apiVersion: provider.apiVersion,
|
||||
baseURL: host
|
||||
baseURL
|
||||
},
|
||||
chunkSize,
|
||||
chunkOverlap: base.chunkOverlap,
|
||||
|
||||
Reference in New Issue
Block a user