
用于实时工业社区问答的RAG新框架-ComRAG 原创
社区问答(CQA)是一种协作式的问答模式,用户可以在在线平台上发布问题,社区成员则提供答案。这种模式利用集体智慧,通过投票、评论和编辑等方式不断优化答案,从而提高共享知识的质量。随着LLMs的兴起,LLMs已成为CQA的强大工具。然而,现有的CQA方法主要关注静态的社区知识,难以适应现实世界中的动态场景。
挑战:
- 系统需要有效地结合静态的领域知识和动态的社区历史,以提高答案的质量和相关性。
- 随着社区的发展,历史问答数据的质量和数量都会不断变化,系统需要高效地识别、组织和利用高质量和低质量的问答记录。
为了解决这些挑战,提出了ComRAG框架,该框架通过结合静态知识向量和动态社区历史向量来增强实时CQA的能力。ComRAG框架在查询阶段支持三种策略:直接重用高质量问答对的答案、生成答案时参考高质量内容、以及生成答案时避免低质量内容并结合外部知识。在更新阶段,系统使用质心记忆机制动态管理高质量和低质量的CQA向量存储,以优化检索效率。
方法
1、静态知识向量存储
利用静态知识向量存储来处理领域特定的问题。将每个文档被转换为一个向量,然后通过计算与给定问题的嵌入表示的相似度来检索最相关的文档。形式化为:
2、动态CQA向量存储
为了反映社区历史问答的质量差异,ComRAG引入了动态CQA向量存储,包括高质量和低质量的CQA向量存储。这些存储基于质心记忆机制来管理历史问答对。
高质量和低质量CQA向量存储:高质量CQA向量存储包含得分高于的历史问答对,而低质量CQA向量存储包含得分低于的历史问答对。这两个存储都应用质心记忆机制来控制内存大小。
3、查询和更新
在查询阶段,ComRAG根据问题的特性支持三种策略来检索历史问答对和领域知识以回答问题,也就是下图中的三条路径:
- 直接重用高质量CQA的答案:如果问题已经存在于高质量CQA向量存储中,则直接重用相应的历史答案。
- 生成涉及高质量CQA的答案:如果问题的相似度满足一定条件,则使用高质量CQA对作为参考生成答案。
- 生成涉及低质量CQA和外部知识的答案:如果高质量CQA中没有足够相似的问题,则从静态知识向量存储和低质量CQA向量存储中检索证据,以指导LLM避免重复不准确的答案。
在更新阶段,系统根据生成的答案质量将其分配到高质量或低质量CQA向量存储中,并动态管理这两个存储。
4、生成的自适应温度调整
ComRAG引入了自适应温度调整机制,以动态调整LLM的解码温度,从而平衡响应的多样性和一致性。通俗的理解就是根据检索到的证据的质量得分的方差来调整温度。如果得分方差低,则使用较高的温度以鼓励探索;如果得分方差高,则使用较低的温度以确保与可靠的历史答案一致。
实验
分析动态 CQA 向量存储中存储块的增长率,发现增长率在系统稳定后逐渐下降。
参考文献:ComRAG: Retrieval-Augmented Generation with Dynamic Vector Stores for Real-time Community Question Answering in Industry,https://arxiv.org/pdf/2506.21098v1
code未开源
本文转载自大模型自然语言处理 作者:余俊晖
