AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


LLM表格RAG中的日期数据格式处理
发布日期:2024-05-20 08:38:42 浏览次数: 1780


随想杂谈:

昨天母亲节,很多人都有发了母亲节感想,有的表达对母亲的感恩,有的表达对母亲的思念,其中,我看到一个网友发的母亲节感想不禁潸然泪下,这个朋友发的感想是这样的:

大几十岁的人了,看到这样的肺腑之言真情流露,依然难以内心平静,泪水不禁流出,好在是哄娃睡觉已经关灯,没人看得到一个大男人此时的丑样。遗憾于网友所经历的境遇,而我自己的境遇也好不到哪里去,我也差点失去了至亲,太多痛苦在脑海中回荡不去,想说的很多,但又说不出口,唯有与大家一起珍惜眼前人共勉。

在csv、tsv、xlsx等表格文档处理中,如果存在日期数据,比如某一列值是“1/1/2002”时,使用pandas读取进来之后,pandas是默认转换为具体的数字的,如“1/1/2002”则被转换为数字37257,这就导致我们所看到的表格数值与实际读取到的数值存在形式上前后不一致的问题,这对于要将表格转换到database数据库中再基于LLM功能进行RAG检索带来了很大的影响,因为我们在提问题时一般是按照日期格式来进行提问的而不是具体的数值。

这就需要对表格日期数据进行前后一致处理以保证LLM表格RAG中的准确性。

问题的解决办法挺多,实践中,我是按照如下方法进行处理的,该方法可以保证日期数据的前后一致性。

  • 首先,需要确认哪一列日期数据需要特殊处理。这个可以通过编写功能函数来自动识别,但是有点复杂,实践中也可以直接设定两个参数来具体指定,一个是列名数列,另一个是格式数列;

  • 然后,根据获取得到的列名与格式,使用pandas的Timedelta和to_datetime进行数值转换,再之后根据格式要求使用dt.strftime来转换格式。

很多时候,我们直接使用to_datetime直接转换日期的话,数值会直接变成类似“1970-01-01 00:00:00.000037257”这样的时间戳,但这个与实际日期不相符,因而会需要用到Timedelta和to_datetime共同作用如下date函数所示以便获取到准确的时间,再之后再将日期转换到特定格式也就不是什么难事了。

def date(para):    if type(para) == int:        delta = pd.Timedelta(str(int(para)) + 'days')        time = pd.to_datetime('1899-12-30') + delta        return time    else:        return para

通过这样的简单方法,就可以达成表格日期数据的前后处理一致性,从而提高了LLM的RAG准确性。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询