30 lines
565 B
Go
30 lines
565 B
Go
|
package data_explain
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"reflect"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
/**
|
|||
|
* @description: 集成 Struct -> Explain for RAG;
|
|||
|
* @param {interface{}} v
|
|||
|
* @return {*}
|
|||
|
*/
|
|||
|
func GenerateExplainStringForEmbedding(v interface{}) string {
|
|||
|
val := reflect.ValueOf(v)
|
|||
|
typ := val.Type()
|
|||
|
|
|||
|
var result []string
|
|||
|
for i := 0; i < val.NumField(); i++ {
|
|||
|
field := typ.Field(i)
|
|||
|
tag := field.Tag.Get("explain")
|
|||
|
if tag == "" {
|
|||
|
continue
|
|||
|
}
|
|||
|
value := val.Field(i).Interface()
|
|||
|
result = append(result, fmt.Sprintf("%s:%v", tag, value))
|
|||
|
}
|
|||
|
return strings.Join(result, ";")
|
|||
|
}
|