QA-RAG:双轨策略提高RAG效果
方法介绍
先说一下整体框架。和传统RAG最大的区别在于,QA-RAG系统引入了
微调后的LLM
扩大搜索范围,捕获更广泛的潜在相关信息

文档预处理
文档处理这部分用到了OCR技术,特别值得一提的是Nougat——这是
一个专门解析学术文档PDF的工具,能处理LaTeX公式和表格
10000
2000
获取整体指南的全局视图,把信息丢损降到最低
向量化与相似性搜索
稀疏检索BM25在捕捉深层语义关系上确实力不从心,所以这里用的还是稠密向量化。文档embedding模型选的是LLM-Embedder,这个模型在理解文本中那些错综复杂的语义关系上表现不错。向量数据库和相似搜索工具则用了FAISS,处理大规模数据时这个组合在效率和扩展性上都很稳。
双轨检索(Dual-track Retrieval)
传统单步检索增强的局限性在于,尤其是面对语言中那些细微差别和复杂的表达时,如果过度依赖用户Query里的特定关键词或短语,很容易和真正相关的文档擦肩而过。这并不是说做了embedding就万事大吉。举例说明。
- 。假设用户输入“环保房屋”,但实际是想了解“如何使用环保材料来建造节能房屋”。(RAG:“这活儿我没法干”!)解法之一,让用户补充Query;之二,就是本文的思路:用经过领域特定数据微调后的LLM生成假设答案,来弥补检索的不足。
情形1:用户意图表述不清,query没有覆盖真实问题需求
- 。假设用户想知道“如何在家工作时保持专注”。理想情况下,检索结果不应只限于字面上的专注指南,还应该包含
情形2:语言表述复杂性,导致语言理解的局限,无法解析更深层次的意图需求
。因为专注的最终目的是提高效率、提高生产力。这些概念本来就是相关的,如果检索系统不够智能,识别不了这层语义关联,就会遗漏关键的文档。远程办公或家庭办公环境里提高生产力的技巧和策略
针对这些问题,业界已经有不少应对方案,比如多Query检索和HyDE。
- 的思路是让LLM从不同角度自动生成多个Query,在某种程度上扩大了语义搜索空间。但它始终被局限在用户原始问题的范围内,很难触及更广泛的知识。
Multiquery retrieval
- 的玩法不一样——它不生成类似的Query,而是直接让LLM生成一篇和Query相关的假设文档。举个例子:
HyDE
假设用户问:“如何在家制作植物肥料?”HyDE方法会利用一个训练好的语言模型生成一个假设文档,比如:“家庭制作植物肥料可以通过混合咖啡渣、鸡蛋壳和香蕉皮来实现。”
这个方法的本质是借助LLM的内部知识把语义搜索空间撑大。它的弊端也很明显:(1)对LLM的能力依赖过重,容易混入噪声甚至误导信息,尤其在高度专业的领域,通用LLM给出的假设答案往往很粗糙,需要更专门的手段;(2)搜索空间扩大后,检索复杂度也上去了,资源有限时适应性就会打折扣。
- 则整合了这两者的长处:用经过专业领域微调的LLM生成的假设答案,和原始Query一起参与检索。
双轨策略
来模拟一个场景:用户问“我需要了解新的药品上市审批流程”,系统会并行走两条路径:
- :直接用这个Query去查找和“药品上市审批流程”相关的文档。
(路径1)基于问题的检索
- :微调后的LLM可能会生成一个假设答案,比如:“新的药品上市审批流程通常包括提交新药申请(NDA)、临床试验数据审查、专家评审等步骤。”然后系统拿这个假设答案里的关键信息去做检索。
(路径2)基于答案的检索
实验过程与结果
- 微调数据集:https://huggingface.co/datasets/Jaymax/FDA_Pharmaceuticals_FAQ
- 数据划分:85%训练,10%验证,5%测试
- 待微调LLMs:ChatGPT 3.5 和 Mistral-7B
- 微调方式:LoRA
- GPT-3.5-Turbo上做了3个epoch、2101步微调
- Mistral-7B上做了3个epoch、1074步微调
- 评价指标与流程:采用BertScore,关注精确度(precision)、召回率(recall)和F1分数(f1)
落地思考
QA-RAG模型在制药行业的监管合规领域,可以这样落地:
- 流程简化:通过自动化问答流程,减少在错综复杂的法规中寻找答案的时间和资源消耗。
- 减少对人类专家的依赖:把合规流程中的部分环节自动化,让专家能腾出手来做更具战略性的工作。
值得强调的是,面向B端的企业级RAG落地,对业务意图的深度挖掘和精准理解才是牛鼻子,检索和生成反而相对次要。检索的目标是召回和Query意图(注意,不只是语义相似)最相关的信息,然后做融合生成。如果意图理解这一步就歪了,后面的检索会问题百出,生成也就容易跑偏、产生幻觉。