社区问答(CQA)是一种协作式的问答模式,用户可以在在线平台上发布问题,社区成员则提供答案。这种模式利用集体智慧,通过投票、评论和编辑等方式不断优化答案,从而提高共享知识的质量。随着LLMs的兴起,LLMs已成为CQA的强大工具。然而,现有的CQA方法主要关注静态的社区知识,难以适应现实世界中的动态场景 。
文档将实时CQA任务形式化为一个数学问题。给定一个外部知识文档集合
,以及一个连续到达的社区问题流,假设在某一时刻已经收集到的社区历史为
,其中
是问题,
是对应的答案。当一个新的问题
到来时,系统需要从外部知识或社区历史中提取答案
,使得
尽可能接近真实答案
。
此外,系统还需要将新生成的问答对
组织到社区历史
中,以满足内存限制,并为未来的后续问题提供支持。
挑战:
- 系统需要有效地结合静态的领域知识和动态的社区历史,以提高答案的质量和相关性。
- 随着社区的发展,历史问答数据的质量和数量都会不断变化,系统需要高效地识别、组织和利用高质量和低质量的问答记录。
为了解决这些挑战,提出了ComRAG框架,该框架通过结合静态知识向量和动态社区历史向量来增强实时CQA的能力。ComRAG框架在查询阶段支持三种策略:直接重用高质量问答对的答案、生成答案时参考高质量内容、以及生成答案时避免低质量内容并结合外部知识。在更新阶段,系统使用质心记忆机制动态管理高质量和低质量的CQA向量存储,以优化检索效率。
方法
1、静态知识向量存储
利用静态知识向量存储来处理领域特定的问题。将每个文档被转换为一个向量,然后通过计算与给定问题的嵌入表示的相似度来检索最相关的文档。形式化为:
其中,
是知识库的向量表示,
是文档,
是文档的嵌入表示。
2、动态CQA向量存储
为了反映社区历史问答的质量差异,ComRAG引入了动态CQA向量存储,包括高质量和低质量的CQA向量存储。这些存储基于质心记忆机制来管理历史问答对。
质心记忆机制 :通过将相似的历史问题聚类到同一个簇中,并仅保留每个簇的代表问题来管理内存。具体来说,假设我们有m个簇
,每个簇包含属于同一主题的问题集合
,其质心计算为:
对于新问题,首先将其嵌入为向量,然后如果其与某个簇的质心的相似度超过阈值
,则将其分配到该簇中,并更新该簇的质心。如果相似度小于
,则认为该问题属于新主题,并在内存中创建一个新的簇。
高质量和低质量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未开源