fix: show resolved embedding model display name in dataset list (#17415)

This commit is contained in:
euvre
2026-07-27 19:09:16 +08:00
committed by GitHub
parent 0a8f28ff36
commit 246c40c4e6
4 changed files with 17 additions and 6 deletions

View File

@@ -182,6 +182,7 @@ func (dao *KnowledgebaseDAO) GetByTenantIDs(ctx context.Context, db *gorm.DB, te
knowledgebase.language, knowledgebase.description, knowledgebase.tenant_id,
knowledgebase.permission, knowledgebase.doc_num, knowledgebase.token_num,
knowledgebase.chunk_num, knowledgebase.parser_id, knowledgebase.embd_id,
knowledgebase.tenant_embd_id,
user.nickname, user.avatar as tenant_avatar, knowledgebase.update_time`).
Joins("LEFT JOIN user ON knowledgebase.tenant_id = user.id").
Where("((knowledgebase.tenant_id IN ? AND knowledgebase.permission = ?) OR knowledgebase.tenant_id = ?) AND knowledgebase.status = ?",

View File

@@ -235,6 +235,7 @@ type KnowledgebaseListItem struct {
ChunkNum int64 `json:"chunk_num"`
ParserID string `json:"parser_id"`
EmbdID string `json:"embd_id"`
TenantEmbdID *string `json:"tenant_embd_id,omitempty"`
Nickname string `json:"nickname"`
TenantAvatar *string `json:"tenant_avatar,omitempty"`
UpdateTime *int64 `json:"update_time,omitempty"`

View File

@@ -383,11 +383,20 @@ func (d *DatasetService) ListDatasets(ctx context.Context, id, name string, page
}
data := make([]map[string]interface{}, 0, len(kbs))
modelNameCache := make(map[string]string)
for _, kb := range kbs {
if kb == nil {
continue
}
data = append(data, datasetListItemToMap(kb))
item := datasetListItemToMap(kb)
// Mirror the memory list: surface the concrete model display name
// (modelName@instance@provider) instead of a raw tenant_model ID.
tenantEmbdID := ptrStringValue(kb.TenantEmbdID)
if tenantEmbdID == "" && isHexID(kb.EmbdID) {
tenantEmbdID = kb.EmbdID
}
item["embedding_model"] = service.ResolveTenantModelDisplayName(tenantEmbdID, kb.EmbdID, modelNameCache)
data = append(data, item)
}
return data, total, common.CodeSuccess, nil

View File

@@ -1469,8 +1469,8 @@ func (s *MemoryService) ListMemories(ctx context.Context, userID string, tenantI
}
memoryMap := map[string]interface{}{
"id": resp.ID,
"llm_id": resolveTenantModelDisplayName(ptrStringValue(resp.TenantLLMID), resp.LLMID, modelNameCache),
"embd_id": resolveTenantModelDisplayName(ptrStringValue(resp.TenantEmbdID), resp.EmbdID, modelNameCache),
"llm_id": ResolveTenantModelDisplayName(ptrStringValue(resp.TenantLLMID), resp.LLMID, modelNameCache),
"embd_id": ResolveTenantModelDisplayName(ptrStringValue(resp.TenantEmbdID), resp.EmbdID, modelNameCache),
"name": resp.Name,
"avatar": resp.Avatar,
"tenant_id": resp.TenantID,
@@ -1491,10 +1491,10 @@ func (s *MemoryService) ListMemories(ctx context.Context, userID string, tenantI
}, nil
}
// resolveTenantModelDisplayName turns a tenant_model ID into
// ResolveTenantModelDisplayName turns a tenant_model ID into
// modelName@instance@provider. rawModelID is the API-facing fallback
// stored on memory.llm_id / memory.embd_id.
func resolveTenantModelDisplayName(tenantModelID, rawModelID string, cache map[string]string) string {
// stored on memory.llm_id / memory.embd_id / knowledgebase.embd_id.
func ResolveTenantModelDisplayName(tenantModelID, rawModelID string, cache map[string]string) string {
tenantModelID = strings.TrimSpace(tenantModelID)
rawModelID = strings.TrimSpace(rawModelID)
if tenantModelID == "" || strings.Contains(tenantModelID, "@") {