社区问答(CQA)平台(如 Stack Overflow、AskUbuntu)沉淀了大量高质量知识,但在工业界落地时仍面临三大挑战:
-
静态知识不足:仅靠官方文档难以覆盖真实业务场景的“坑”。 -
历史 QA 质量参差不齐:早期答案可能已被更好答案取代。 -
实时性 + 存储爆炸:新问题持续涌入,如何快速检索并控制存储增长?
现有方法要么只检索社区历史,要么只用静态文档,缺少“动态反思 + 高效存储”的机制。ComRAG 正是为了解决这些痛点而生。

ComRAG 框架概览

*图 1:ComRAG 实时社区问答(CQA)架构。系统整合了一个静态知识向量库和两个动态 CQA 向量库(高质量与低质量),后者通过基于质心的记忆机制进行管理。
核心思想一句话:“既要官方文档的权威,也要社区历史的经验,还要随时间动态遗忘低质量内容”。
技术拆解
3.1 静态知识向量库
-
用 embedding 模型把官方文档切成 chunk → 建索引 → 向量检索。 -
负责兜底:当社区没有相似 QA 时,由官方文档直接生成答案。
3.2 动态 CQA 向量库
为了处理“质量不一致 + 存储无限膨胀”两个问题,作者提出双库 + 质心记忆机制:
|
|
|
|
|---|---|---|
| High-Quality Store |
|
|
| Low-Quality Store |
|
|

图 4:利用质心聚类控制存储增长,ProCQA 上 10 轮迭代后 chunk 增长率从 20.23% 降到 2.06%
3.3 三路径查询策略
收到新问题 q 时,ComRAG 按相似度阈值 τ, δ 走三条路径之一:
-
直接复用:与高质量库中某 QA 几乎一样(sim ≥ δ),直接返回答案。 -
参考生成:与高质量 QA 有点相似(τ ≤ sim < δ),把相关 QA 作为上下文让 LLM 重写。 -
避坑生成:高质量库里没类似问题,则拿低质量 QA 做“负面例子”+ 官方文档,让 LLM 生成更可靠答案。
3.4 自适应温度
-
根据检索到的历史答案得分方差 Δ 动态调整 LLM temperature: -
方差小 → 答案一致 → 提高温度增加多样性 -
方差大 → 答案分歧 → 降低温度保证可靠

实验验证
4.1 数据集与指标
|
|
|
|
|
|
|---|---|---|---|---|
| MSQA |
|
|
|
|
| ProCQA |
|
|
|
|
| PolarDBQA |
|
|
|
|
指标:
-
语义:BERT-Score F1、SIM(embedding 余弦相似度) -
词汇:BLEU、ROUGE-L -
效率:Avg Time(秒/问题)
4.2 主实验结果

表 1:三大数据集上 ComRAG 均显著优于所有基线
-
质量提升:SIM 提升 2.1 %–25.9 % -
延迟降低:比次优方法快 8.7 %–23.3 % -
可扩展性:10 轮迭代后延迟最多再降 52.5 %(ProCQA)
图 2:PolarDBQA 上移除任一模组都会显著降低 BERT-Score 或增加延迟
-
移除高质量库 → BERT-Score −2.6,延迟 +4.9 s -
移除质心记忆 → BERT-Score −0.5,延迟 +2.2 s -
移除自适应温度 → 直接可复用答案比例下降
关键结论 & 工业落地启示
|
|
|
|---|---|
| 效果 |
|
| 效率 |
|
| 存储 |
|
| 可插拔 |
|
“ComRAG 的核心价值不在于模型本身,而在于用质心记忆机制把‘时间’和‘质量’显式建模进了检索-生成流程。”
https://arxiv.org/abs/2506.21098ComRAG: Retrieval-Augmented Generation with Dynamic Vector Stores for Real-time Community Question Answering in Industry


