后端: 1. 阶段 1.5/1.6 收口 llm-service / rag-service,统一模型出口与检索基础设施入口,清退 backend/infra/llm 与 backend/infra/rag 旧实现; 2. 同步更新相关调用链与微服务迁移计划文档
114 lines
3.1 KiB
Go
114 lines
3.1 KiB
Go
package config
|
|
|
|
import "github.com/spf13/viper"
|
|
|
|
// Config 是 RAG Core 运行配置。
|
|
type Config struct {
|
|
Enabled bool
|
|
Store string
|
|
TopK int
|
|
|
|
Threshold float64
|
|
|
|
EmbedProvider string
|
|
EmbedModel string
|
|
EmbedBaseURL string
|
|
EmbedTimeoutMS int
|
|
EmbedDimension int
|
|
|
|
RerankerEnabled bool
|
|
RerankerProvider string
|
|
RerankerTimeoutMS int
|
|
|
|
ChunkSize int
|
|
ChunkOverlap int
|
|
|
|
RetrieveTimeoutMS int
|
|
|
|
MilvusAddress string
|
|
MilvusToken string
|
|
MilvusDBName string
|
|
MilvusCollectionName string
|
|
MilvusMetricType string
|
|
MilvusRequestTimeoutMS int
|
|
}
|
|
|
|
// LoadFromViper 读取 rag 配置并补默认值。
|
|
func LoadFromViper() Config {
|
|
cfg := Config{
|
|
Enabled: viper.GetBool("rag.enabled"),
|
|
Store: viper.GetString("rag.store"),
|
|
TopK: viper.GetInt("rag.topK"),
|
|
Threshold: viper.GetFloat64("rag.threshold"),
|
|
EmbedProvider: viper.GetString("rag.embed.provider"),
|
|
EmbedModel: viper.GetString("rag.embed.model"),
|
|
EmbedBaseURL: viper.GetString("rag.embed.baseURL"),
|
|
EmbedTimeoutMS: viper.GetInt("rag.embed.timeoutMs"),
|
|
EmbedDimension: viper.GetInt("rag.embed.dimension"),
|
|
RerankerEnabled: viper.GetBool("rag.reranker.enabled"),
|
|
RerankerProvider: viper.GetString("rag.reranker.provider"),
|
|
RerankerTimeoutMS: viper.GetInt("rag.reranker.timeoutMs"),
|
|
ChunkSize: viper.GetInt("rag.ingest.chunkSize"),
|
|
ChunkOverlap: viper.GetInt("rag.ingest.chunkOverlap"),
|
|
RetrieveTimeoutMS: viper.GetInt("rag.retrieve.timeoutMs"),
|
|
MilvusAddress: viper.GetString("rag.milvus.address"),
|
|
MilvusToken: viper.GetString("rag.milvus.token"),
|
|
MilvusDBName: viper.GetString("rag.milvus.dbName"),
|
|
MilvusCollectionName: viper.GetString("rag.milvus.collectionName"),
|
|
MilvusMetricType: viper.GetString("rag.milvus.metricType"),
|
|
MilvusRequestTimeoutMS: viper.GetInt("rag.milvus.requestTimeoutMs"),
|
|
}
|
|
if cfg.Store == "" {
|
|
cfg.Store = "inmemory"
|
|
}
|
|
if cfg.TopK <= 0 {
|
|
cfg.TopK = 8
|
|
}
|
|
if cfg.Threshold < 0 {
|
|
cfg.Threshold = 0
|
|
}
|
|
if cfg.EmbedProvider == "" {
|
|
cfg.EmbedProvider = "mock"
|
|
}
|
|
if cfg.EmbedBaseURL == "" {
|
|
cfg.EmbedBaseURL = viper.GetString("agent.baseURL")
|
|
}
|
|
if cfg.EmbedTimeoutMS <= 0 {
|
|
cfg.EmbedTimeoutMS = 1200
|
|
}
|
|
if cfg.EmbedDimension <= 0 {
|
|
cfg.EmbedDimension = 1024
|
|
}
|
|
if cfg.RerankerProvider == "" {
|
|
cfg.RerankerProvider = "noop"
|
|
}
|
|
if cfg.RerankerTimeoutMS <= 0 {
|
|
cfg.RerankerTimeoutMS = 1200
|
|
}
|
|
if cfg.ChunkSize <= 0 {
|
|
cfg.ChunkSize = 400
|
|
}
|
|
if cfg.ChunkOverlap < 0 {
|
|
cfg.ChunkOverlap = 80
|
|
}
|
|
if cfg.RetrieveTimeoutMS <= 0 {
|
|
cfg.RetrieveTimeoutMS = 1500
|
|
}
|
|
if cfg.MilvusAddress == "" {
|
|
cfg.MilvusAddress = "http://localhost:19530"
|
|
}
|
|
if cfg.MilvusToken == "" {
|
|
cfg.MilvusToken = "root:Milvus"
|
|
}
|
|
if cfg.MilvusCollectionName == "" {
|
|
cfg.MilvusCollectionName = "smartflow_rag_chunks"
|
|
}
|
|
if cfg.MilvusMetricType == "" {
|
|
cfg.MilvusMetricType = "COSINE"
|
|
}
|
|
if cfg.MilvusRequestTimeoutMS <= 0 {
|
|
cfg.MilvusRequestTimeoutMS = 1500
|
|
}
|
|
return cfg
|
|
}
|