前言
伴随着人工智能大模型的火爆,开源免费的RAG系统百花齐放。Dify、 MaxKB、RagFlow、 Anythingllm等知识库系统都被视为解决日常工作文档检索的得力工具。然而大家真正使用时总会发现这些RAG系统的性能达不到预期效果。经常出现包括内容缺失、数据解析困难、关键信息提取不足等问题,我也经常被问到应该如何简单有效地提升RAG系统的性能。
本篇分享我将结合RAG系统的工作原理和日常工作实践,从数据准备、数据检索和LLM生成三个核心环节出发提出详细的RAG系统优化技巧,大家一起来看一下吧~
强相关,建议大家先了解RAG核心原理后,再来学习相应的优化措施)

一、RAGFlow开源框架选择
市面上RAG开源系统百花齐放,我们的首要任务就是要选择一款符合工作场景的RAG系统。结合日常工作经验,我对常见的四款开源框架AnythingLLM、Cherry Studio、RAGFlow和Dify从数据隐私保护、开发门槛、文档预处理能力、定制化能力和适用场景五个维度进行对比。综合来看我更推荐 RagFlow 作为大家首选,它支持扫描件/表格解析、文本切片可视化调整、多路召回优化答案准确性,甚至有回答索引高亮等用户友好功能。
关于这四款工具的优缺点我列了如下表格:

二、数据准备环节优化指南
2.1 高质量的原始数据上传
RAG系统搭建的第一步是上传私域文档数据,包括.txt, .docx, .json, .pdf, .md等多种格式。所谓的“知识”就是这些文档中的文本信息。
大家如果没有了解过RAG系统工作原理,总是一股脑把所有文件直接丢入RAG系统中提取分析,这种粗糙的传递方式很容易将大量垃圾数据传入RAG系统导致其无法准确定位相关答案。为了RAG系统更准确的文本检索,我们在上传数据时应该先进行数据预处理工作,可包含如下步骤:
-
停用词和特殊字符过滤:
停用词和特殊字符是指在自然语言处理中,被视为不携带重要信息,对于理解文本内容贡献不大的词汇,比如① 、②、一则等,去除停用词可以减少文本中的噪音,使得重要的信息更加突出,同时还减少了数据处理规模。在上传文档前可以使用
jieba分词工具和停用词表 (https://zhuanlan.zhihu.com/p/39437488)对原始文档进行处理。 -
数据清洗和去重:
去除结构复杂内容混乱的文档,同时过滤重复内容,避免赋予重复内容较高权重,这一步骤我推荐可以使用 Unstructed.io(https://unstructured.io/)工具进行数据的预处理工作。
-
大模型数据预处理:
文档内容也可以直接输入大模型通过提示词工程对文档重要内容进行精简,比如提示词:“你是文档总结专家,我将上传一份文档,请帮我将该文档内容进行总结并输出重要的细节内容”,将大模型处理后的文档传入RAG系统更容易使其聚焦重点知识。
2.2 更精细的文本分块
文本分块是决定检索质量的关键前置步骤。粗暴或不恰当的分块会导致信息丢失、上下文割裂、检索效率低下等问题,严重影响 RAG 系统的最终表现。然而目前大多数开源RAG系统采用的都是简单的直接按照固定字符数大小的切片策略,极易破坏语义的完整性。比如如下例子:通过固定窗口分块后,如果用户提问“小明什么时间阅读了大模型真好玩的文章?”,知识库检索到分块“小明认证阅读大模型真好玩的文章”和问题相近,但是并没有找到确切的时间,所以不会返回结果。

一些开源系统注意到了固定窗口切分存在的劣势,为了缓解在边界处强行切断语义的问题,通常会设置一个“重叠”(Overlap)大小。重叠部分意味着每个块的末尾会与下一个块的开头有一段重复的内容。

下图是AnythingLLM中的块大小设置和重叠部分大小设置的界面:

对于复杂的文档来说,重叠块的设置还是过于简单并不能符合切分需求。为了更精确切分文本块,我在工作实践中参考文章告别粗暴切分:入门 RAG 文本分块,从策略到优化(https://zhuanlan.zhihu.com/p/38753080790) 并选取了五种效果提升由弱到强的提升策略,参考文章中包含了示例代码,大家可以自行实现并对开源知识库系统文本切分的代码进行替换修改:
-
基于句子的分块:
使用句子分割算法(如基于标点符号
。?!,或使用python NLP 库如NLTK,SpaCy)将文本分割成独立的句子,然后将一个或多个连续的句子组合成一个 Chunk,使其大小接近目标范围。这种方式更符合自然语言处理的结构,保证语义完整性。但由于句子的长度差异大,可能改变语义完整性,同时对于跨越多个句子的复杂语义关系仍然会被切断。 -
基于递归字符分块:
提供一个分隔符列表,按优先级从高到低尝试分割。例如,优先尝试按
\n\n(段落) 分割,如果分割后的块仍然太大,再尝试按\n(换行符) 分割,然后按空格\s分割,最后如果还太大,就按字符""分割。目标是在保持较大语义块(如段落)的同时,确保最终块大小不超过限制。这种方式优先使用段落、换行等更有意义的分隔符,尽可能维持文本的逻辑结构。但对于没有明显分隔符的密集文本,可能最终退化为按固定窗口分割。 -
基于文档结构分块:
解析文档的结构树或特定标记,基于这些结构元素来定义 Chunks。例如,每个
<p>标签内容作为一个 Chunk,或者每个 Markdown 的二级标题下的所有内容作为一个 Chunk。这种分割高度尊重文档结构,语义连贯性强,缺点和基于句子的分块类似,不同结构间文本长度差异巨大。 -
基于混合策略分块:
结合了文档结构分块和递归分块的优点,试图达到更好的平衡。首先尝试基于文档结构(如 Markdown 标题)进行高级别分割,然后在这些较大的分割块内部,如果它们仍然超过了目标大小,再使用递归字符分块或句子分块进行细粒度的切分。
-
基于语义信息分块:
计算相邻句子或小段文字的 Embedding 向量,看看它们在语义上有多接近。当发现前后两部分的“话题”跳跃比较大(语义相似度低于某个设定的“阈值”)时,就在这个“语义断裂点”进行切割。这种方法的优缺点特别明显,优点是切分点更“懂”语义,总能在话题自然转变的地方下手。这样能保证每个 Chunk 内部意思高度相关、不跑题,理论上切出来的块更符合人的阅读理解习惯。缺点是时间复杂度太高,且生成语义向量要消耗大量计算资源。
2.3 更强的Embedding 模型
文本分块之后会经过 生成嵌入模型(Embedding Model) 转化为包含语义信息的向量形式。生成向量的质量对于后续检索环节有很大影响。然而现在很多教程只讲解如何配置Embdedding Model, 例如使用Ollama服务下的nomic-embed-text模型,但却忽略了nomic-embed-text模型在中文环境下生成向量的语义相关性远低于其它模型。
工作实践中我总结的对于中文环境下的Embedding Model 效果较好的有gte-large-zh, bge-large-zh-v1.5, m3e-base和tao8k,它们的具体效果如下图所示, TOP@n表示前n个结果中相关检索的正确性。

除了常用的四个模型之外,大家也可以关注MTEB (https://huggingface.co/spaces/mteb/leaderboard)模型评测榜,不同模型的性能排名会定时更新,但大家不要迷信这个榜单,因为该榜单的测试环境大多数在英文环境下,中文文档居多的环境还是要先用以上四种模型尝试。
三、数据检索环节优化指南
3.1 优化检索参数
RAG系统检索结构与一些检索参数息息相关,优化调整这些检索参数是提升RAG系统最直接有效的办法。这里以RAGFlow框架为例,可通过调整以下参数满足大家需求:
-
similarity_threshold:相似度阈值
-
vector_similarity_weight:向量相似度权重与关键词匹配权重的比例
这两个参数的值通常设置为 0-1 之间,值越大向量权重越高。在工业级别使用中建议设置到0.3-0.5之间,平衡专业术语与语义理解。
除以上参数外,为使RAG系统检索返回结果更精确,可以调整top_k和score参数:
-
top_k:用于控制检索系统返回结果的数量k
-
score:用于过滤掉相似度低于score的结果
top_k和score参数经常同时使用,假设 score = 0.7,top_k = 3,则检索系统会先筛选出相似度大于 0.7 的所有结果,再从这些结果中选择分数最高的 3 个结果返回。 如果大家需要更全面的结果,可以适当增加 top_k 的值。如果大家需要更精准的结果,可以适当减小 top_k,并结合较高的 score。
3.2 优化检索算法
RAG系统的语义搜索基于向量之间的软相似性对检索结果进行排序,即通过计算向量之间的相似度(如余弦相似度)来确定文档与查询的相关程度,并返回相似度最高的前 k 个结果。这种检索算法还有一定的提升空间。
一种常见优化检索算法的思路是利用混合搜索的技术,混合检索结合了向量检索和文本检索,然后将结果进行融合。混合搜索方法的灵活性高:可以根据具体需求调整两种检索方式的权重,从而提供更全面准确的检索结果。
3.3 结果重排模型ReRank
建议大家使用RAG系统时务必勾选结果重排模型Rerank, 虽然会提高系统的时间复杂度。Rerank模型,顾名思义就是对初步检索结果进行“重新排序”(Re-ranking)的模型。它通过对语义向量相似性初步检索出的候选文档进行更深入的分析,结合查询上下文和候选文档的内容,得出更精确的相关性评分,并据此重新排列这些文档,以确保用户看到的是更符合需求的结果。
我在工作实践中常用的两款Rerank模型是Xinference和bge-reranker-large, 大家可以参考相关博客(https://blog.youkuaiyun.com/weixin_47782004/article/details/144620715)进行部署。
四、LLM生成环节优化指南
熟悉RAG原理的朋友们看到这里可能要问:RAG系统中大模型的作用仅仅是对检索出的内容进行总结归纳,想不到有什么可以优化的点呀?诚然LLM生成环节的优化相比数据准备环节和数据检索环节的提升要小,但也不失为锦上添花的策略,主要优化手段有如下两点:
4.1 使用非逻辑大模型
使用性能更强劲的大模型是很直观的优化策略,在LLM生成环节阶段,性能较强的模型可以用清晰明了的语言归纳检索结果,同时更容易关注到检索内容中的重要部分。在中文领域,笔者工作实践中常用效果较好的大模型有DeepSeek-V3-0324、Qwen2.5-72B模型。这里不太建议使用DeepSeek-R1或QwQ-32b等逻辑模型。它们在文本生成方面的能力并无明显提升,但生成速度慢很多。
4.2 优化提示词
4.2.1 多查询重写提示词策略
大家在提问时通常直接表述问题进行检索,有时候问题的表述偏差很可能导致无法准确找到相关文档。这时候我们可以利用多查询重写策略, 该思想是利用大语言模型对原始问题进行扩展、分解或抽象,生成多个语义相关但视角不同的子查询,从而提高检索系统对用户意图的覆盖能力。
笔者在实际工作中常用的提示词模板如下:
你的任务是为给定的用户问题生成3 - 5个语义等价但表述差异化的查询变体,目的是帮助用户克服基于距离的相似性搜索的一些局限性,以便从向量数据库中检索相关文档。 以下是原始问题: <question> {{question}} </question> 请生成3 - 5个语义与原始问题等价,但表述不同的查询变体,用换行符分隔这些替代问题。 请在<查询变体>标签内写下你的答案。我的输入问题是:如何提高英语写作能力

在多查询重写策略中,每个子问题都会检索出相应的文档片段,从而更全面地获得检索信息。
4.2.2 问题分解策略
面对非常复杂且包含一定推理性的原始问题时,使用多查询重写策略也很难在向量数据中找到关联性高的文档,导致RAG系统效果偏差。这时我们需要尝试问题分解策略。将一个复杂问题分解成多个子问题或者子步骤。
笔者在实际工作中常用的提示词模板如下:
你的任务是针对输入的问题生成多个相关的子问题或子查询,将输入问题分解成一组可以独立回答的子问题或子任务。 以下是输入的问题: <question> {{question}} </question> 请生成3 - 5个与该问题相关的搜索查询,并使用换行符进行分割。生成的子问题/子查询应具有明确的主题和可独立回答的特点。 请在<子问题>标签内写下生成的子问题/子查询。我的输入问题是:如何提高小型企业的市场竞争力?

如何学习大模型 AI ?
我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

2025最新大模型学习路线
明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
大模型经典PDF书籍
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

配套大模型项目实战
所有视频教程所涉及的实战项目和项目源码等

博主介绍+AI项目案例集锦
MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。


这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

为什么要学习大模型?
2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

适合人群
- 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
- IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
- IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
- 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。

课程精彩瞬间
大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。

RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。 
Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。 
顶尖师资,深耕AI大模型前沿技术
实战专家亲授,让你少走弯路

一对一学习规划,职业生涯指导
- 真实商业项目实训
- 大厂绿色直通车
人才库优秀学员参与真实商业项目实训
以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调 
大厂绿色直通车,冲击行业高薪岗位

文中涉及到的完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】


1418

被折叠的 条评论
为什么被折叠?



