今天是2024年10月30日,星期三,北京,天气晴。
本文主要介绍2个工作,一个是RAG分块进展ChunkRAG,LLM驱动的块过滤方法,称为ChunkRAG,通过在块级别评估和过滤检索到的信息来增强RAG系统,该方法利用语义分块将文档划分为连贯的部分,并使用基于LLM的相关性评分来评估每个块与用户查询的对齐情况。
另一个是知识图谱与大模型结合用于推荐的工作,KGLA框架,将知识图谱中的结构化信息转换为文本,并融入到用户代理的决策过程中,使得用户代理能够更好地理解和模拟用户的偏好,从而提高推荐系统的准确性和效果。通过在模拟阶段的自主交互和反思,以及在排名阶段的候选物品评估,算法能够生成更符合用户偏好的推荐列表。
这两个工作都有代表性,会有一些思路,供大家一起参考并思考。
二、RAG分块进展ChunkRAG
我们先来看看RAG进展,《ChunkRAG: Novel LLM-Chunk Filtering Method for RAG Systems》,https://arxiv.org/pdf/2410.19572,提出LLM驱动的块过滤方法,称为ChunkRAG,通过在块级别评估和过滤检索到的信息来增强RAG系统,该方法利用语义分块将文档划分为连贯的部分,并使用基于LLM的相关性评分来评估每个块与用户查询的对齐情况。
先说具体结论,这个工作所声称的优点,其实是个集成,例如,Chunk-Level Filtering,在生成阶段之前对检索到的信息进行块级别的评估和过滤,显著减少了无关信息和幻觉的产生;Semantic Chunking通过语义分块将文档划分为连贯的部分,确保每个块包含密切相关的内容,提高了检索操作的效率。LLM-Based Relevance Scoring利用大模型对每个块的相关性进行评估,能够过滤掉不相关或弱相关的块;Self-Reflection and Critic LLM采用自我反思和批评LLM的双重评分机制,提高了评分的准确性和可靠性;Dynamic Threshold Determination使用动态阈值来确定块的相关性,而不是固定的阈值,进一步提高了过滤效果;Hybrid Retrieval and Re-Ranking结合了BM25检索器和Cohere的重新排序模型,提升了检索和排序的效果。
我们可以其中的几点。
1、具体执行逻辑
我们可以从图2中找到对应的技术路线,如下:
首先是建库部分:
1)语义分块:首先,将文档分解为语义上相关的块。这一步骤确保了每个块包含紧密相关的信息,提高了检索操作的效率。
2)句子分词:使用NLTK的sent_tokenize函数将每个文档分割成句子。这一步骤使得文本可以在更细粒度的层次上进行处理。
3)句子嵌入生成:使用OpenAI的text-embedding-3-small模型生成句子嵌入。每个句子被转换为一个数值向量表示,捕捉其语义含义。
4)相似度计算:计算连续句子之间的余弦相似度。相似度分数帮助确定连续句子在语义上的相关性。如果相似度分数低于预定义的阈值(例如,0.7),则表示主题发生了变化。
5)块边界识别:基于相似度分数,在相似度低于阈值的点识别块边界,这表明主题的更改。
6)块创建:根据识别的边界将句子分组成块。每个块保持在最大长度(例如,500个字符)以内,以确保语义的连贯性和可管理性。
7)向量存储创建:为了便于基于相似度的检索,将块嵌入存储在向量存储中。
其次是检索部分
1)检索器初始化:初始化一个检索器执行基于相似度的搜索。该检索器比较查询的嵌入与存储的块的嵌入,找到最相关的块。
2)查询重写:为了提高检索性能,用户查询被重写而不改变其原始意图。使用LLM(例如GPT-4o-mini)重写查询。
然后是过滤排序部分
1)初始过滤方法:在计算成本高的评分操作之前,应用初始过滤方法以提高效率和确保相关性。包括去除冗余块和按语义相似度排序剩余块。
2)高级LLM基相关性评分:为了更准确地评估每个块的相关性:
首先,初始LLM评分:主要LLM使用预定义的提示为每个块分配初始相关性分数;然后,自我反思者LLM反思其初始分数并在必要时进行调整,以捕捉潜在的误判;接着,批评LLM评分:第二个LLM(称为批评者)独立评估每个块并分配其自己的分数以验证初始评估;最终分数计算时,通过平均初始、反映和批评分数来获得最终相关性分数,以提高准确性和可靠性。
3)动态阈值确定:不使用固定阈值,而是通过LLM分析最终分数分布并建议块相关性的最佳阈值;
4)混合检索和重排:并行实现BM25检索器,以捕获基于关键词的检索。BM25检索器与等权重的集成方法(各0.5)结合使用。应用Cohere的重排模型对块进行排名,以处理“丢失在中间”的问题。
最后是答案生成部分
为了生成用户的最终答案,过滤后的块被编译成LLM使用的上下文,LLM基于编译的上下文和用户的原始问题生成简洁的答案,使用确保答案仅基于提供的上下文的提示。
但是,还是要做一些思考,这种方式很集成,方法高度依赖于块分割的有效性和用于块相关性评估的嵌入质量,主要划分错误可能会产生不相关的数据;并且在计算成本上,在初始层次上整合LLM和批评LLM评估的成本较高,特别是在将该方法扩展到更大数据集或在实时系统中部署时,一套流程打下来,其实很慢。
二、知识图谱与大模型结合用于推荐
当前的语言代理模拟未能理解用户和物品之间的关系,导致用户画像不准确和推荐效果不佳。之前的工作当中,推荐系统中使用KG表示知识,并通过图神经网络获取图嵌入,然后与用户嵌入结合。然而,这些方法主要应用于问答任务。
最近,来自亚马逊的工作《Knowledge Graph Enhanced Language Agents for Recommendation》(https://arxiv.org/pdf/2410.19627),提出KGLA框架,将知识图谱中的结构化信息转换为文本,并融入到用户代理的决策过程中,使得用户代理能够更好地理解和模拟用户的偏好,从而提高推荐系统的准确性和效果。通过在模拟阶段的自主交互和反思,以及在排名阶段的候选物品评估,算法能够生成更符合用户偏好的推荐列表。
可以看下具体的技术路线,如下:
1、整体的推荐算法KG-enhanced Recommendation
KG-enhanced Recommendation 是一个增强型推荐算法,它利用知识图谱(Knowledge Graph,KG)来提升推荐系统的性能。这个算法的核心思想是将用户和物品在知识图谱中的路径转换为文本信息,然后融入到大模型(Large Language Model,LLM)中,以此来增强用户代理(user agent)的记忆,从而提高推荐质量。
2、用户-商品上下文获取
首先,从KG中提取用户和物品之间的2跳和3跳路径。这些路径提供了用户选择物品的可能原因。
然后,将提取的路径转化为自然语言文本。为了简化文本描述并使其易于LLM理解,对于2跳路径,按关系类型分组路径,并将实体合并为一个列表,强调用户和物品之间的关系,按关系类型分组路径,并将实体合并为一个列表,强调用户和物品之间的关系。例如,对于路径“User mentions features A, B, C which are described as this item”,简化为“User mentions features A, B, C which are described as this item”;
对于3跳路径,构建非信息实体集,去除正负物品中共有的实体,只保留描述性实体,例如,对于路径“User mentions features A, B, C, D, E which are described as this item and also bought by User with Item F”,简化为“User mentions features A, B, C which are described as this item”。
最后,将翻译后的文本描述整合到语言代理的模拟和排序过程中。
3、自主交互排序
在自主交互阶段,用户代理根据当前的记忆和路径文本选择物品,用户代理会考虑自己的记忆、物品的记忆以及2跳和3跳路径文本,选择一个物品进行交互。
在反思阶段,用户代理根据选择的物品和路径文本更新记忆,用户代理会接收到关于选择是否正确的反馈。然后,用户代理会根据路径文本分析选择的原因,更新自己的记忆,以更好地反映用户的偏好。
在排序阶段,用户代理根据更新后的记忆和路径文本对候选物品进行排序。
4、一些具体的收益逻辑
这个是有意义的,Figure 3 展示了一个案例研究,关于如何通过知识图谱(KG)增强的模拟来提炼用户代理(User Agents)的偏好特征。在这个案例中,用户代理通过模拟与知识图谱的交互,识别出哪些特征是用户偏好的,哪些特征是不具信息量的。
其中:
加粗特征(Bold Features) 表示这些特征被用户代理识别为用户偏好的特征。在图中,这些特征以加粗的字体显示,例如“sensual”(性感)和“sultry”(闷热的)。这些词汇代表了用户可能感兴趣的物品属性或主题,用户代理通过分析知识图谱中的路径和关系,总结出这些特征作为用户偏好的代表。
浅色特征(Light-Colored Features) 表示这些特征被用户代理识别为不具信息量的特征。在图中,这些特征以浅色字体显示,例如“pray”(祈祷)和“fallen”(堕落的)。这些词汇虽然出现在物品的描述中,但用户代理通过模拟和分析发现,这些特征并不能有效区分用户对不同物品的偏好,因此被认为是不具信息量的。
又如,Figure 4 提供了一个案例研究,展示了在知识图谱(KG)增强的排名阶段,用户代理(User Agent)如何根据与用户代理记忆共享的常见特征来对推荐候选项进行排序。这个案例通过比较两个候选项(Candidate 1 和 Candidate 2)与用户代理记忆的匹配程度,来说明用户代理如何做出推荐决策。
在这个案例中,候选项 1 因为与用户代理记忆有更多共同特征,所以被推荐。其中:
用户代理记忆(User Agent Memory) 包含了用户偏好的特征,这些特征是通过之前的模拟阶段和知识图谱分析得出的。这些偏好特征是用户代理用来评估和排名推荐候选项的关键信息。
候选项 1(Candidate 1) 与用户代理记忆有更多共同特征。在图中,这些共同特征可能被加粗或以某种方式突出显示,以表明它们与用户偏好的紧密关联。例如,如果用户代理记忆中包含“sensual”和“sultry”等特征,而候选项 1 也包含这些特征,那么用户代理更有可能将这个候选项排在前面。
候选项 2(Candidate 2) 与候选项 1 相比,这个候选项与用户代理记忆的共同特征较少。这意味着它与用户的偏好匹配程度较低,因此在排名中可能会被放在较后的位置。
总结
本文主要介绍了2个工作,一个是RAG分块进展ChunkRAG,LLM驱动的块过滤方法,称为ChunkRAG,通过在块级别评估和过滤检索到的信息来增强RAG系统,该方法利用语义分块将文档划分为连贯的部分,并使用基于LLM的相关性评分来评估每个块与用户查询的对齐情况。
另一个是知识图谱与大模型结合用于推荐的工作,KGLA框架,将知识图谱中的结构化信息转换为文本,并融入到用户代理的决策过程中,使得用户代理能够更好地理解和模拟用户的偏好,从而提高推荐系统的准确性和效果。通过在模拟阶段的自主交互和反思,以及在排名阶段的候选物品评估,算法能够生成更符合用户偏好的推荐列表。
但两者,尤其是前者在进行实际落地中还需要考虑到硬件复杂度的问题,因为一般而言,工业落地越简单越丝滑。
参考文献
1、https://arxiv.org/pdf/2410.19572
2、https://arxiv.org/pdf/2410.19627
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入