- 重构了 rag_controller.go 中的逻辑,使用新的 DocumentHub 结构 - 修改了 encounter.go 中的 Encounter 结构,增加了 explain 标签 - 重写了 rag_websocket.go 中的逻辑,使用新的 DocumentHub 结构 - 新增了 curd_es/encounter_es_curd.go 文件,实现了 Encounter 的 CURD 操作 - 更新了 nlp/func.go 中的 ChatRAG 函数,使用新的 DocumentHub 结构 - 新增了 curd/docs_hub.go 文件,实现了 DocumentHub 的 TopK 方法 - 新增了 utils/data_explain/data_explain_rag.go 文件,实现了结构体到解释字符串的转换
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, ";")
|
||
}
|