mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-09 21:04:49 +08:00
Go: fix compilation (#14418)
### What problem does this PR solve? Add methods to volcengine ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -76,12 +76,12 @@ type EmbeddingConfig struct {
|
||||
// EmbeddingModel wraps a ModelDriver with embedding-specific configuration
|
||||
type EmbeddingModel struct {
|
||||
ModelDriver ModelDriver
|
||||
ModelName string
|
||||
ModelName *string
|
||||
APIConfig *APIConfig
|
||||
}
|
||||
|
||||
// NewEmbeddingModel creates a new EmbeddingModel
|
||||
func NewEmbeddingModel(driver ModelDriver, modelName string, apiConfig *APIConfig) *EmbeddingModel {
|
||||
func NewEmbeddingModel(driver ModelDriver, modelName *string, apiConfig *APIConfig) *EmbeddingModel {
|
||||
return &EmbeddingModel{
|
||||
ModelDriver: driver,
|
||||
ModelName: modelName,
|
||||
@@ -109,12 +109,12 @@ func (e *EmbeddingModel) EncodeQuery(modelName *string, query string, apiConfig
|
||||
// RerankModel wraps a ModelDriver with rerank-specific configuration
|
||||
type RerankModel struct {
|
||||
ModelDriver ModelDriver
|
||||
ModelName string
|
||||
ModelName *string
|
||||
APIConfig *APIConfig
|
||||
}
|
||||
|
||||
// NewRerankModel creates a new RerankModel
|
||||
func NewRerankModel(driver ModelDriver, modelName string, apiConfig *APIConfig) *RerankModel {
|
||||
func NewRerankModel(driver ModelDriver, modelName *string, apiConfig *APIConfig) *RerankModel {
|
||||
return &RerankModel{
|
||||
ModelDriver: driver,
|
||||
ModelName: modelName,
|
||||
@@ -124,18 +124,18 @@ func NewRerankModel(driver ModelDriver, modelName string, apiConfig *APIConfig)
|
||||
|
||||
// Rerank calculates similarity between query and texts
|
||||
func (r *RerankModel) Rerank(query string, texts []string, apiConfig *APIConfig) ([]float64, error) {
|
||||
return r.ModelDriver.Rerank(&r.ModelName, query, texts, apiConfig)
|
||||
return r.ModelDriver.Rerank(r.ModelName, query, texts, apiConfig)
|
||||
}
|
||||
|
||||
// ChatModel wraps a ModelDriver with chat-specific configuration
|
||||
type ChatModel struct {
|
||||
ModelDriver ModelDriver
|
||||
ModelName string
|
||||
ModelName *string
|
||||
APIConfig *APIConfig
|
||||
}
|
||||
|
||||
// NewChatModel creates a new ChatModel
|
||||
func NewChatModel(driver ModelDriver, modelName string, apiConfig *APIConfig) *ChatModel {
|
||||
func NewChatModel(driver ModelDriver, modelName *string, apiConfig *APIConfig) *ChatModel {
|
||||
return &ChatModel{
|
||||
ModelDriver: driver,
|
||||
ModelName: modelName,
|
||||
|
||||
@@ -71,6 +71,21 @@ func (z *VolcEngine) EncodeToEmbedding(modelName *string, texts []string, apiCon
|
||||
return nil, fmt.Errorf("not implemented")
|
||||
}
|
||||
|
||||
// Encode encodes a list of texts into embeddings (convenience method)
|
||||
func (z *VolcEngine) Encode(modelName *string, texts []string, apiConfig *APIConfig) ([][]float64, error) {
|
||||
return nil, fmt.Errorf("%s, Encode not implemented", z.Name())
|
||||
}
|
||||
|
||||
// EncodeQuery encodes a single query string into embedding (convenience method)
|
||||
func (z *VolcEngine) EncodeQuery(modelName *string, query string, apiConfig *APIConfig) ([]float64, error) {
|
||||
return nil, fmt.Errorf("%s, EncodeQuery not implemented", z.Name())
|
||||
}
|
||||
|
||||
// Rerank calculates similarity scores between query and texts
|
||||
func (z *VolcEngine) Rerank(modelName *string, query string, texts []string, apiConfig *APIConfig) ([]float64, error) {
|
||||
return nil, fmt.Errorf("%s, Rerank not implemented", z.Name())
|
||||
}
|
||||
|
||||
func (z *VolcEngine) ListModels(apiConfig *APIConfig) ([]string, error) {
|
||||
return nil, fmt.Errorf("%s, no such method", z.Name())
|
||||
}
|
||||
|
||||
@@ -667,28 +667,6 @@ func (m *ModelProviderService) ChatToModel(providerName, instanceName, modelName
|
||||
return nil, common.CodeServerError, errors.New("model is disabled")
|
||||
}
|
||||
|
||||
func (m *ModelProviderService) ChatToModelByApiKey(providerName, modelName, apiKey, message string) (*string, common.ErrorCode, error) {
|
||||
providerInfo := dao.GetModelProviderManager().FindProvider(providerName)
|
||||
if providerInfo == nil {
|
||||
return nil, common.CodeNotFound, errors.New("provider not found")
|
||||
}
|
||||
|
||||
_, err := dao.GetModelProviderManager().GetModelByName(providerName, modelName)
|
||||
if err != nil {
|
||||
return nil, common.CodeNotFound, errors.New(fmt.Sprintf("provider %s model %s not found", providerName, modelName))
|
||||
}
|
||||
|
||||
var apiConfig = &modelModule.APIConfig{}
|
||||
apiConfig.ApiKey = &apiKey
|
||||
var response *modelModule.ChatResponse
|
||||
response, err = providerInfo.ModelDriver.Chat(&modelName, &message, apiConfig, nil)
|
||||
if err != nil {
|
||||
return nil, common.CodeServerError, err
|
||||
}
|
||||
|
||||
return response.Answer, common.CodeSuccess, nil
|
||||
}
|
||||
|
||||
// ChatWithMessagesToModelByApiKey sends multiple messages with roles and returns response
|
||||
func (m *ModelProviderService) ChatWithMessagesToModelByApiKey(providerName, modelName, apiKey string, messages []modelModule.Message) (*string, common.ErrorCode, error) {
|
||||
providerInfo := dao.GetModelProviderManager().FindProvider(providerName)
|
||||
@@ -847,7 +825,7 @@ func (m *ModelProviderService) GetEmbeddingModel(tenantID, compositeModelName st
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return modelModule.NewEmbeddingModel(driver, modelName, apiConfig), nil
|
||||
return modelModule.NewEmbeddingModel(driver, &modelName, apiConfig), nil
|
||||
}
|
||||
|
||||
// GetRerankModel returns a RerankModel wrapper for the given tenant
|
||||
@@ -856,7 +834,7 @@ func (m *ModelProviderService) GetRerankModel(tenantID, compositeModelName strin
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return modelModule.NewRerankModel(driver, modelName, apiConfig), nil
|
||||
return modelModule.NewRerankModel(driver, &modelName, apiConfig), nil
|
||||
}
|
||||
|
||||
// GetChatModel returns a ChatModel wrapper for the given tenant
|
||||
@@ -865,7 +843,7 @@ func (m *ModelProviderService) GetChatModel(tenantID, compositeModelName string)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return modelModule.NewChatModel(driver, modelName, apiConfig), nil
|
||||
return modelModule.NewChatModel(driver, &modelName, apiConfig), nil
|
||||
}
|
||||
|
||||
// getModelConfig returns the model driver, model name, and API config for a model
|
||||
|
||||
@@ -136,7 +136,7 @@ func RerankByModel(
|
||||
tsim = TokenSimilarity(keywords, insTw, qb)
|
||||
|
||||
// Get similarity scores from reranker model
|
||||
modelSim, err := rerankModel.ModelDriver.Rerank(&rerankModel.ModelName, query, docs, rerankModel.APIConfig)
|
||||
modelSim, err := rerankModel.ModelDriver.Rerank(rerankModel.ModelName, query, docs, rerankModel.APIConfig)
|
||||
if err != nil {
|
||||
logger.Error("RerankByModel: rerankModel.Rerank failed; falling back to token-only similarity", err)
|
||||
// If model fails, fall back to token similarity only
|
||||
|
||||
@@ -597,7 +597,7 @@ func (s *RetrievalService) Search(ctx context.Context, req *RetrievalSearchReque
|
||||
|
||||
// GetVector computes query vector and returns MatchDenseExpr for hybrid search
|
||||
func (s *RetrievalService) GetVector(txt string, embModel *models.EmbeddingModel, topk int, similarity float64) (*types.MatchDenseExpr, error) {
|
||||
vector, err := embModel.ModelDriver.EncodeQuery(&embModel.ModelName, txt, embModel.APIConfig)
|
||||
vector, err := embModel.ModelDriver.EncodeQuery(embModel.ModelName, txt, embModel.APIConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user