feat(embedding): 接入阿里云多模态向量端点

This commit is contained in:
Entropy.Xu
2026-05-28 16:05:36 +08:00
parent 535039c29e
commit 0f6d4b9146
56 changed files with 1605 additions and 42 deletions
@@ -35,6 +35,7 @@ describe('model catalog embedding helpers', () => {
expect(supportsEmbedding(model({ config: { embedding: true } }))).toBe(true)
expect(supportsEmbedding(model({ config: { model_type: 'embedding' } }))).toBe(true)
expect(supportsEmbedding(model({ config: { api_formats: ['jina:embedding'] } }))).toBe(true)
expect(supportsEmbedding(model({ config: { api_formats: ['aliyun:multimodal_embedding'] } }))).toBe(true)
expect(supportsEmbedding(model({ config: { api_formats: ['openai:chat'] } }))).toBe(false)
})
@@ -395,7 +395,10 @@ function supportsEmbedding(model: PublicGlobalModel): boolean {
|| model.supported_capabilities?.includes('embedding') === true
|| model.config?.embedding === true
|| model.config?.model_type === 'embedding'
|| (Array.isArray(model.config?.api_formats) && model.config.api_formats.some((format) => String(format).endsWith(':embedding')))
|| (Array.isArray(model.config?.api_formats) && model.config.api_formats.some((format) => {
const value = String(format).trim().toLowerCase()
return value.endsWith(':embedding') || value === 'aliyun:multimodal_embedding'
}))
}
// 添加 ESC 键监听
@@ -1,11 +1,16 @@
import type { PublicGlobalModel } from '@/api/public-models'
function isEmbeddingApiFormat(format: unknown): boolean {
const value = String(format).trim().toLowerCase()
return value.endsWith(':embedding') || value === 'aliyun:multimodal_embedding'
}
export function supportsEmbedding(model: PublicGlobalModel): boolean {
return model.supports_embedding === true
|| model.supported_capabilities?.includes('embedding') === true
|| model.config?.embedding === true
|| model.config?.model_type === 'embedding'
|| (Array.isArray(model.config?.api_formats) && model.config.api_formats.some((format) => String(format).endsWith(':embedding')))
|| (Array.isArray(model.config?.api_formats) && model.config.api_formats.some(isEmbeddingApiFormat))
}
export function supportsRerank(model: PublicGlobalModel): boolean {