以下是关于大模型 RAG 应用调优的相关内容:
开发:产品视角的大模型RAG应用[heading1]如何调优[heading3]整理知识库文档阶段[content]在最开始,我们需要确定知识库包含哪些文档,比如政策原文文档、业务积累的QA、操作指引、产品说明等,并对这些文档进行预处理。知识库本身质量对最终效果的影响至关重要,这是大模型最终生成回答的原始语料。在此阶段,可以考虑以下优化方向:文档的格式:pdf、docx()等不同格式的文档,识别难度不一样。从目前公开的资料来看,一般PDF文档的效果会更好一些,因为pdf文档的格式信息相对来说较为简洁,对大模型干扰少。但也有说.docx的效果更优的,因此实践中还是要根据场景去测试。文档命名:尽量控制在10字左右,涵义简洁明了,避免标题中出现无意义的数字、符号或缩写。文档语言:尽量统一为同一种。因为embedding模型对于中英文、繁简体的支持可能不一样,如果文档不做处理,引擎会把中英文切到一个chunk里面,向量化之后有一半可能是乱码,有一半是没有用的数据。文档内容:设置可清晰识别的一二级标题,对难以处理的图片、表格、公式、超链接、附件、架构图、代码等进行特殊处理。构建问答对:因为最终的交互是问答的形式,所以在构建知识库时,如果能基于用户可能的提问方式,构建问答对,作为知识库原始数据,一般能达到更好的效果,但构建问答对的过程需要耗费较多人力,还需要考虑运营成本。需要注意的是,对知识库的处理是一个case by case的事情,并不存在一个放之四海而皆准的公式,需要根据具体的场景和需求以及处理成本去做大量实践,才能找到最适合自己的。
开发:产品视角的大模型RAG应用[heading1]如何调优[heading3]5、Prompt阶段[content]匹配出与问句向量最相似的top k个chunk之后,会将匹配出的文本和问句,一起添加到配置好的prompt中,提交给LLM。在这个阶段,可能需要一定的prompt工程,选择最合适的prompt模板。根据论文《Lost in the Middle:How Language Models Use Long Contexts》,大模型对上下文中间位置的知识点提取较差,因此在prompt中,把query放到头部和尾部,同时根据相似度,把相似度大的文档放到context的两端,能提升回答效果。[heading3]6、LLM生成答案[content]prompt提交给LLM后,LLM将生成回答,返回给用户。此时最大的影响因素就是大语言模型本身的性能。选择大模型时,也需要在成本和收益之间找到最佳平衡点,有些场景可能不需要最好的大模型,就可以实现还不错的效果。有条件的还可以对模型进行微调,使模型能力更加匹配自身的场景。
开发:产品视角的大模型RAG应用[heading1]如何调优[heading3]4、召回Top-K阶段Top k的排序方式:开源框架()检索返回的Top K,会按照它们在数据库中的顺序进行排序,目的是保留原始数据库的上下文结构。但开源框架返回的不一定是最优的排序,尤其是当索引有数百万或千万级别时,精确度一般不会太高。这时候可以增加top k的大小,比如从10个增加到30个,然后再使用更加精确的算法进行rerank。具体可查看:https://www.zhihu.com/question/628651389/answer/3356678699