From 1ca75f6567b8eed7da77a02844d8b2a4046829bc Mon Sep 17 00:00:00 2001 From: Havoc412 <2993167370@qq.com> Date: Thu, 21 Nov 2024 01:00:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E8=B0=83=E6=95=B4=20ES=20TopK?= =?UTF-8?q?=20=E6=9F=A5=E8=AF=A2=E8=BF=94=E5=9B=9E=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 ES TopK 查询返回的文档数量从 1 增加到 2 - 注释中提到未来可能采用重排策略,从 10 篇文档中筛选出 2 篇 - 此修改旨在改善聊天机器人的回复质量 --- app/http/controller/web/rag_controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/http/controller/web/rag_controller.go b/app/http/controller/web/rag_controller.go index 48f9d35..b3329f6 100644 --- a/app/http/controller/web/rag_controller.go +++ b/app/http/controller/web/rag_controller.go @@ -203,7 +203,7 @@ func (r *Rag) ChatWebSocket(context *gin.Context) { } // 2. ES TopK // INFO 这里需要特化选取不同知识库的文档;目前是依靠显式的路由。 - dochub, err := curd.TopK(mode, embedding, 1) + dochub, err := curd.TopK(mode, embedding, 2) // 更好的做法是【重排】 10 -> 2; if err != nil || dochub.Length() == 0 { variable.ZapLog.Error("ES TopK error", zap.Error(err)) @@ -218,7 +218,7 @@ func (r *Rag) ChatWebSocket(context *gin.Context) { // STAGE websocket 的 defer 关闭函数,但是需要 ES 拿到的 doc—id defer func() { // UPDATE 临时"持久化"方案,之后考虑结合 jwt 维护的 token 处理。 // 0. 传递参考资料的信息 - docMsg := model_res.CreateNlpWebSocketResult(consts.AiMessageTypeDoc, dochub.Docs) // TIP 断言 + docMsg := model_res.CreateNlpWebSocketResult(consts.AiMessageTypeDoc, dochub.Docs) err := ws.WriteMessage(websocket.TextMessage, docMsg.JsonMarshal()) if err != nil { variable.ZapLog.Error("Failed to send doc message via WebSocket", zap.Error(err))