微信扫码
与创始人交个朋友
我要投稿
本文Key Takeaway:
01
背景
但其实,大家对比的时候常比较的是IFT或SFT跟RAG,增量预训练比较少,而实际上个人觉得这一环可能对很多领域知识任务的提升更大,尤其是跟通用语料差异较大的部分,Yi 技术报告里有提到增量预训练对于上下文窗口也有很大的帮助,所以对于很多领域来说,在考虑RAG或SFT之前,请先考虑增量预训练。对于注入知识和长度拓展都有很大的益处。推荐增量预训练(较少频次)->SFT->RAG 迭代式优化。
02
RAG框架
Naive RAG、Advanced RAG和Modular RAG。一图胜千言,同济这个综述图建议反复看,增强框架记忆。实际企业中,可能大部分都在Advanced RAG中进行检索器细节的打磨,对于召回的效果,以及LLM总结推理生成效果的调优。
03
几个Advanced RAG方法
所谓高级,自然是针对不同的问题得到了很好的解决。例如:
内容缺失:检索不出正确答案=》召回准确性
漏掉排名靠前的文档:Top K的召回率需要保证百分百=》rank准确性
推理能力:哪些文档要,哪些文档不要,根据文档准确精简回答问题=》推理总结准确性
回答第一个问题:这里介绍几个Prompt Engineerin Base的Query改写或扩展的方法:
HyDE:使用大模型回答Query生成《假设文档》,再用 《假设文档》去库里搜
Step-back Prompting: 从具体问题到抽象问题去问
Meta Cove :对于复杂Query,验证的方式是通过将问题拆的比较细,然后分开去找答案,这样获取到的知识更全面,比一个query去召回肯定更好
思考:其实这几个思路,都是在把复杂的难以理解的用户问题,转化为大模型或者检索系统更好理解的“黑话“,降低理解成本,效果自然就上来了。
针对第二个问题,其实就是精细化文档排序问题:
LLM ReRank:看到的比较少,大部分还是直接拿API级别的对召回文档排序。
BGE ReRanker:FlagEmbedding开源的交叉编码器模型
bge-reranker,具有比向量模型更强大的排序能力。官方建议使用或者微调它来重新排序向量模型返回的top-k文档,提高最终结果的相关性。工业界用的还是比较多,代码使用起来也非常方便,推荐!
针对第三个问题,其实看大家讨论的比较少,主要是有了知识后的回答总结,看起来是个润色的工作, 但实际还有很多推理的事情。例如:
问题:如何安装充电桩,需要布线11米怎么收费?
文档:5米-10米需要xx的钱,10米以上打九折......等
那就得理解这样得逻辑,不只是知识密集型了。这一类得问题目前经验是只有API级别的如GPT4 、KimiChat这些才有可能解决得比较好,其他方法也在思考中,如您有想法也可留言提出。
这些方法其实很多,这里就不全部介绍了,只是近期比较感兴趣以及几篇论文里测过这几个比较有效就介绍下,实际可能需要都进行尝试。不过所有的方法,只要理解好了在前述特定的框架中就知道优化的方向。
04
落地的一些选型
个人比较倾向于技术落地,所以会关注各家的实际技术选型,这里列一些常见方案供参考。
技术问答机器人
意图识别:/
检索召回:使用BGE Embedding进行检索,为提升效果,使用RetroMAE方式(如图所示使用全参数的bert作为encoder加上单层的transformer layer作为decoder,预测mask词)进行领域增强
排序生成:检索结果优化使用RAG-Fusion (Fusion如图所示,由LLM生成不同query1 query2 ... query n 后按RRF打分;RRF打分是按如图所示对多个检索渠道按排名的倒数综合打分)& Re-rank(BGE-ReRank)
RAG平台
意图识别:使用意图识别进行场景分流:采用bge_large_en向量模型 + 大模型的技术方案检索召回:
使用Cohere Embedding (100+ Multilingual能力)进行检索;工程上使用OpenSearch多路混合召回(向量和关键字), 同时包含Sparse Vector Retrieval(term expansion)
排序生成:使用BGE进行ReRank 如亚马逊这个example:
private-llm-qa-bot/notebooks/embedding/bge_zh_research.ipynb at main · aws-samples/private-llm-qa-bot · GitHub
知识库:LLM自有知识->网络搜索->内部知识库 的ReRank方向
baichuan
意图识别:未知。不过baichuan2论文里有提及对齐过程包含了非常多层级意图分类,所以猜测会做很细粒度的工作
检索召回:query扩展使用Meta CoVe以及Think Step-Further(前文有介绍);检索策略选择稀疏检索+向量检索(自研baichuan-text-embedding)
排序生成: 未知rerank模型;self-crituque:让大模型基于 Prompt、从相关性和可用性等角度对检索回来的内容自省,与 Prompt 最匹配、最优质的候选内容
注:”/“ 表明不清楚这块的优化。
05
总结
正如前文所说,RAG是一套系统,并非什么新的技术,只不过在大模型时代,这套系统显得格外的重要。所以会出现层出不穷的文章和最佳实践,我们需要做的,就是在实际项目中快速落地并针对自己的场景进行调优,有了很多心得之后自然可以成体系。本文也只是介绍了rag中的大体框架和一些优化方法,没有涉及的方面如 多模态、语料到知识库的清洗,rag系统的正确评估、自动生成引文等等还有非常多,希望后面结合一些落地的场景和paper有继续深入的介绍。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-04-25
2024-05-14
2024-07-18
2024-08-13
2024-04-26