package user import ( "context" entity2 "github.com/milvus-io/milvus-sdk-go/v2/entity" "leafdev.top/Ecosystem/recommender/internal/entity" "leafdev.top/Ecosystem/recommender/pkg/consts" ) func (s *Service) SummaryUser(c context.Context, externalUserEntity *entity.ExternalUser, applicationEntity *entity.Application) error { tags, err := s.GetHighScoreTags(c, externalUserEntity, applicationEntity) if err != nil { return err } if len(tags) == 0 { return consts.ErrExternalUserDoesNotLikeAnyPost } var tagString = "" for _, tag := range tags { tagString += tag.Name + " " } // 裁剪 > s.config.OpenAI.EmbeddingDim if len(tagString) > s.config.OpenAI.EmbeddingDim { tagString = tagString[:s.config.OpenAI.EmbeddingDim] } if externalUserEntity.Summary != tagString { _, err = s.dao.ExternalUser.Where(s.dao.ExternalUser.Id.Eq(externalUserEntity.Id.Uint())).Update( s.dao.ExternalUser.Summary, tagString, ) if err != nil { return err } emb, err := s.embedding.TextEmbedding(c, []string{tagString}) if err != nil { return err } var entityCols = []entity2.Column{ entity2.NewColumnFloatVector("vector", s.config.OpenAI.EmbeddingDim, emb), entity2.NewColumnInt64("external_user_id", []int64{int64(externalUserEntity.Id)}), entity2.NewColumnInt64("application_id", []int64{int64(applicationEntity.Id)}), } _, err = s.milvus.Upsert(c, s.config.Milvus.UserSummaryCollection, "", entityCols...) if err != nil { return err } } return err }