当前位置:首页>python>2python之ragflow追踪es研究

2python之ragflow追踪es研究

  • 2026-09-02 20:20:16
2python之ragflow追踪es研究

写在前面的话

为什么会这样。昨天看了个视频,说卢鑫在东北的相声演出被取消了,让其他人演。之前,卢鑫玉浩组合参加《笑傲江湖》得了冠军,郭德纲很是欣赏,三次邀请他们加入德云社,说明他俩确实有才。当时他们没加入,自己成立相声新势力,捧哏卢鑫,心高气傲,在两人成立的公司中占大部分股份,两个挣的钱,自己买车还信用卡,挥霍无度。最终欠玉浩40多万,沟通无果,玉浩起诉,而卢鑫呢,叫嚣随便起诉,演出啥的也不耽误,在网上各种大放厥词,最终迎来反噬,各平台下架他的演出,路越走越窄。为什么会这样?明明一手好牌,打的稀烂,你就把欠人家的40万还了,组合成不了,自己发展呗,没必要因为这点小钱把自己的演艺之路封死了。凭借自身的才气,再找个搭档,就好了,为啥因小失大呢,想不通。

[311]--------底部有张生活照片

【关键词】python、ragflow、es、耗时研究

一、python相关(一级)

1.ragflow追踪es(二级)

描述:现在ES速度慢,需要追踪一下。

开工:

第一步:追踪代码(三级)

20250103周五时间段:18:56-19:00

现在报了一个错,但不知是哪里报的,如下:

Fail set expire cache: config must be LifecycleConfig type

注:能不能在这个错误前加个时间。不知道在哪里加,先这样。

第二步:继续追踪错误(三级)

20250103周五时间段:18:57-19:0020250103周五时间段:19:00-19:20

现在追踪到如下代码:

图2a-1

注:从69行继续往下追踪,相关代码如下:

图2a-2

注:从69行往后追踪。

追踪到这个函数了,如下:

    def _vector(self, txt, emb_mdl, sim=0.8, topk=10):        qv, c = emb_mdl.encode_queries(txt)        return {            "field": "q_%d_vec" % len(qv),            "k": topk,            "similarity": sim,            "num_candidates": topk * 2,            "query_vector": [float(v) for v in qv]        }

注:接下来,来个牛的,用debug搞一下。先打个断点。打断点如下:

图2a-3

注:接下来看看哪的问题。邪门了,没走这个方法,明明进去了。截图如下:

图2a-4

注:打日志看下是不是不是这个方法,肯定是因为58行走了。接下来,追踪下_vector函数。

第三步:_vector函数(三级)

20250104周六时间段:11:11-11:2020250104周六时间段:11:42-12:0020250104周六时间段:12:00-12:2020250104周六时间段:12:20-12:40

追踪下这个函数,看下为啥没走。目前走到58行,停了,截图如下:

图2a-5

注:看下为啥没往后面走了。这个要咬住青山不放松,直到把这个问题解决掉。

看代码发现,如下的卡住了,代码如下:

 qv, c = emb_mdl.encode_queries(txt)

注:分析下这个为啥没走呢。报错了,如下:

Fail set expire cache: config must be LifecycleConfig type

注:查资料得知如下:

这个错误信息表明在尝试设置缓存的过期时间时,传递的配置参数类型不正确。具体来说,代码期望的配置参数类型是 LifecycleConfig,但实际传递的参数类型与之不符。要解决这个问题,你需要检查代码中设置缓存过期时间的部分,确保传递的配置参数是一个 LifecycleConfig 类型的对象。

注:怎么找到在哪里设置的缓存过期时间呢。

第四步:设置缓存过期时间(三级)

20250104周六时间段:12:28-12:40

a.方法一(四级)

20250104周六时间段:12:29-12:40
Windows 自带的 findstr: 打开命令提示符(CMD),输入以下命令:findstr /s /i "set expire cache" e:\16python\12\ragflow1203\local_ragflow\*DiffCopyInsert这个命令会在指定的文件夹及其子文件夹中搜索包含“set expire cache”的行,并显示所在的文件路径。

注:这种方法根本不行,因为搜索【set expire cache】显然过于幼稚。

b.优化方法(四级)

20250104周六时间段:12:46-13:0020250104周六时间段:15:30-15:40

优化_vector方法,增加异常捕获,如下:

def _vector(self, txt, emb_mdl, sim=0.8, topk=10):    log.info(f"\n\n _vector \n\n")    log.info(f"\n\n emb_mdl {emb_mdl} \n\n")    if emb_mdl is None:        raise ValueError("Embedding model (emb_mdl) cannot be None")    try:        qv, c = emb_mdl.encode_queries(txt)    except AttributeError as e:        raise AttributeError(f"Invalid embedding model: {e}")    log.info(f"\n\n【QV】:{qv} \n\n")    log.info(f"\n\n【C】:{c} \n\n")    res = {        "field": "q_%d_vec" % len(qv),        "k": topk,        "similarity": sim,        "num_candidates": topk * 2,        "query_vector": [float(v) for v in qv]    }    log.info(f"\n\n【RES】:{res} \n\n")    return res

注:跑下这个方法,看能不能捕捉到异常。应该不可以,因为没有返回。找到了一个找异常的方法。

c.找异常方法(四级)

20250104周六时间段:16:07-16:20

现在发现一个找error的方法,现在异常如下:

Fail22 set expire cache: Rule filter must be provided

实际的代码如下:

图2a-6

注:那定位这个异常在哪里,可以搜【Fail22 set expire】,或者更粗暴一点,搜Fail22、Fail22 set、Fail22 set expire等。截图如下:

图2a-7

注:这样就能定位异常的位置,进一步排查出原因。现在出现了新的问题,如下:

Fail22 set expire cache: 'str' object has no attribute 'toxml'

注:查下原因。

d.toxml(四级)

20250104周六时间段:17:00-17:20

看下如下错误的原因:

Fail22 set expire cache: 'str' object has no attribute 'toxml'

注:这个是由于过滤方法没传对。相关代码如下:

图2a-8

注:修改代码如下:

    def set_expire_days(self, bucket, days:int = 7):        try:            self.conn.set_bucket_lifecycle(bucket, LifecycleConfig([                Rule(                    rule_id = "expire",                    status = "Enabled",                    expiration = Expiration(days=days),                    rule_filter=Filter(prefix="")                )            ]))        except Exception as e:            log.info(f"Fail set expire {bucket}: " + str(e))            minio_logger.error(f"Fail22 set expire {bucket}: " + str(e))

注:加了【 rule_filter=Filter(prefix="")】引入了Filter函数,并且传了参,目前这个error消除了,但数据还是返不回来,继续追踪。

测试下线上的这个接口

第五步:测试线上completion接口(三级)

20250104周六时间段:17:20-17:4020250105周日时间段:00:39-00:4020250105周日时间段:00:40-01:00

测试发现,线上也报错,截图如下:

图2a-9

注:之前聊天是可以的,现在不行了,试试测的不对,用聊天试试。

a.聊天测试(四级)

20250105周日时间段:00:40-01:0020250105周日时间段:10:25-10:40

本地测下聊天,看看行不行。发现报一样的错误,排查一下。搞了半天,发现请求的还是本地的,而不是线上的代码,太欺负人了。

b.模拟请求(四级)

20250105周日时间段:10:50-11:00

二、python练习

三、生活照片

拍摄于‎2025‎年‎11‎月‎9‎日,‏‎10:53:40,去白家疃玩拍的,当时去看银杏叶,去时银杏叶因为刮风全落了。卢鑫我觉得是有才的,还是捧哏,估计他觉得组合能挣钱,全靠他一个人,玉浩只是绿叶。像当初赵本山和范伟,一场演出,七十万,只给范伟7千,用赵的话说,在我这出名了,挣钱去别处挣去,最后,范伟也真走了。而卢鑫离赵本山差的远呢,组合成功两个人在观众看来,功劳差不多,一旦分开,都将没名,像玖月奇迹,分开后,基本就黄了。而玉浩呢,显然认为你卢鑫的名气没那么大,我在组合中也做出了重大贡献,不会惯着卢鑫。当年郭德纲为啥那么狂,怼天怼地,演出拿大头,那是因为于谦大郭德纲几岁,人家对钱看的很淡,当一个玩票心态,给不给钱都无所谓,而玉浩显然没有于谦的心态,所以,组合必崩。我觉得卢鑫应该有凤凰传奇的心态,虽然曾毅每次唱不了几个词,玲花每首歌累的像狗一样,但演出分成一人一半,这样组合才能长久,主要是玲花看的开。或者卢鑫真觉得自己牛B,像水木年华的李健一样,自己单飞,自己写歌,唱歌,打下一方天地也不错。但卢鑫哪条路都没选,选了一条老赖的路,有点惋惜。

图2c-1

四、昨日花销

昨日花销截图如下:

图2d-1

《本文完》

最新文章

随机文章