大模型实战:快速搭建基于RAG知识库的智能聊天助手,在本地部署的开源大模型应用平台Dify & Xinference
大语言模型的训练数据一般是基于公开数据,且每一次训练需要消耗大量的算力,这意味着大模型的知识一般不会包含私有领域的知识,同时在公开知识领域存也会在一定的滞后性。目前解决这一问题的通用方案是采用 RAG(检索增强生成)技术,即首先使用用户问题来匹配最相关的外部数据,然后将检索到的相关内容召回后作为模型提示词的上下文和原问题一起提交给大模型来重新组织回复。1.1 RAG 的概念解释。
本篇文章内容共分为2个部分,你可根据需要选择性阅读:
-
RAG相关概念及检索方式简介;
-
基于知识库的智能聊天助手搭建实验。
一、什么是RAG?
大语言模型的训练数据一般是基于公开数据,且每一次训练需要消耗大量的算力,这意味着大模型的知识一般不会包含私有领域的知识,同时在公开知识领域存也会在一定的滞后性。目前解决这一问题的通用方案是采用 RAG(检索增强生成)技术,即首先使用用户问题来匹配最相关的外部数据,然后将检索到的相关内容召回后作为模型提示词的上下文和原问题一起提交给大模型来重新组织回复。
1.1 RAG 的概念解释
以向量检索为核心的 RAG 架构已成为解决大模型获取最新外部知识,同时解决其生成幻觉问题时的主流技术框架,并且已在相当多的应用场景中落地实践。开发者可以利用该技术低成本地构建一个 AI 智能客服、企业智能知识库、AI 搜索引擎等,通过自然语言输入与各类知识组织形式进行对话。以一个有代表性的 RAG 应用为例:
在下图中,当用户提问 “美国总统是谁?” 时,系统并不是将问题直接交给大模型来回答,而是先将用户问题在知识库中(如下图中的维基百科)进行向量搜索,通过语义相似度匹配的方式查询到相关的内容(拜登是美国现任第46届总统…),然后再将用户问题和搜索到的相关知识提供给大模型,使得大模型获得足够完备的知识来回答问题,以此获得更可靠的问答结果。

RAG 基本架构
基于上述架构,一个简化的流程执行逻辑图如下所示:

RAG流程执行逻辑图
1.2 为什么需要这样做?
我们可以把大模型比做是一个超级专家,他熟悉人类各个领域的知识,但他也有自己的局限性,比如他不知道你个人的一些状况,因为这些信息是你私人的,不会在互联网上公开,所以他没有提前学习的机会。
当你想雇佣这个超级专家来充当你的家庭财务顾问时,需要允许他在接受你的提问时先翻看一下你的投资理财记录、家庭消费支出等数据。这样他才能根据你个人的实际情况提供专业的建议。
这就是 RAG 系统所做的事情:帮助大模型临时性地获得他所不具备的外部知识,允许它在回答问题之前先找答案。
根据上面这个例子,我们很容易发现 RAG 系统中最核心的是外部知识的检索环节。专家能不能向你提供专业的家庭财务建议,取决于能不能精确找到他需要的信息,如果他找到的不是投资理财记录,而是家庭减肥计划,那再厉害的专家都会无能为力。

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]👈
1.3 关于知识检索的方式
目前常用的知识检索方式主要包括向量检索(也叫相似度检索)、关键词检索以及混合检索,以下分别介绍:
1.3.1 向量检索/相似度检索
RAG 检索环节中的主流方法是向量检索,即语义相关度匹配的方式。技术原理是通过将外部知识库的文档先拆分为语义完整的段落或句子,并将其转换(Embedding)为计算机能够理解的一串数字表达(多维向量),同时对用户问题进行同样的转换操作。
计算机能够发现用户问题与句子之间细微的语义相关性,比如 “猫追逐老鼠” 和 “小猫捕猎老鼠” 的语义相关度会高于 “猫追逐老鼠” 和 “我喜欢吃火腿” 之间的相关度。在将相关度最高的文本内容查找到后,RAG 系统会将其作为用户问题的上下文一起提供给大模型,帮助大模型回答问题。
除了能够实现复杂语义的文本查找,向量检索还有其他的优势:
-
相近语义理解(如老鼠/捕鼠器/奶酪,谷歌/必应/搜索引擎)
-
多语言理解(跨语言理解,如输入中文匹配英文)
-
多模态理解(支持文本、图像、音视频等的相似匹配)
-
容错性(处理拼写错误、模糊的描述)
虽然向量检索在以上情景中具有明显优势,但有某些情况效果不佳。比如:
-
搜索一个人或物体的名字(例如,伊隆·马斯克,iPhone 15)
-
搜索缩写词或短语(例如,RAG,RLHF)
-
搜索 ID(例如,gpt-3.5-turbo,titan-xlarge-v1.01)
【向量检索】在Dify中的参数配置说明:

TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3。
Score 阈值: 用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为 0.5。
Rerank 模型: 你可以在“模型供应商”页面配置 Rerank 模型之后,在检索设置中打开“Rerank 模型”,系统会在语义检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。设置 Rerank 模型后,TopK 和 Score 阈值设置仅在 Rerank 步骤生效。
1.3.2 关键词检索
我们在上面提到的关于使用向量检索/相似度检索所存在的缺点恰恰都是传统关键词搜索的优势所在,传统关键词搜索擅长:
-
精确匹配(如产品名称、姓名、产品编号)
-
少量字符的匹配(通过少量字符进行向量检索时效果非常不好,但很多用户恰恰习惯只输入几个关键词)
-
倾向低频词汇的匹配(低频词汇往往承载了语言中的重要意义,比如“你想跟我去喝咖啡吗?”这句话中的分词,“喝”“咖啡”会比“你”“想”“吗”在句子中承载更重要的含义)
在Dify中对于关键词检索的应用是【全文检索】,具体指:通过索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段。

TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3。
Rerank 模型: 你可以在“模型供应商”页面配置 Rerank 模型之后,在检索设置中打开“Rerank 模型”,系统会在全文检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。设置 Rerank 模型后,TopK 和 Score 阈值设置仅在 Rerank 步骤生效。
1.3.3 混合检索
混合搜索主要结合了向量检索和关键词检索两者的优点,同时也弥补了两方的缺点。对于大多数文本搜索的情景,首要的是确保潜在最相关结果能够出现在候选结果中。在混合检索中,你需要在数据库中提前建立向量索引和关键词索引,在用户问题输入时,分别通过两种检索器在文档中检索出最相关的文本。

混合检索
说明⚠️:“混合检索”实际上并没有明确的定义,本文以向量检索和关键词检索的组合为示例。如果我们使用其他搜索算法的组合,也可以被称为“混合检索”。比如,我们可以将用于检索实体关系的知识图谱技术与向量检索技术结合。
也可以说没有任何一种检索模式能够适用全部的情景。混合检索通过多个检索系统的组合,实现了多个检索技术之间的互补。
在Dify中对于【混合检索】的定义以及参数配置:
同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,需配置 Rerank 模型。

TopK: 用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。
Rerank 模型: 你可以在“模型供应商”页面配置 Rerank 模型之后,在检索设置中打开“Rerank 模型”,系统会在混合检索后对已召回的文档结果再一次进行语义重排序,优化排序结果。设置 Rerank 模型后,TopK 和 Score 阈值设置仅在 Rerank 步骤生效。
1.4 为什么需要重排序
混合检索能够结合不同检索技术的优势以获得更好的召回结果,但在不同检索模式下的查询结果需要进行合并和归一化(将数据转换为统一的标准范围或分布,以便更好地进行比较、分析和处理),然后再一起提供给大模型。这时候我们需要引入一个评分系统:重排序模型(Rerank Model)。
重排序模型会计算候选文档列表与用户问题的语义匹配度,根据语义匹配度重新进行排序,从而改进语义排序的结果。其原理是计算用户问题与给定的每个候选文档之间的相关性分数,并返回按相关性从高到低排序的文档列表。常见的 Rerank 模型如:Cohere rerank、bge-reranker等。

混合检索+重排序
在大多数情况下,在重排序之前会有一次前置检索,这是由于计算查询与数百万个文档之间的相关性得分将会非常低效。所以,重排序一般都放在搜索流程的最后阶段,非常适合用于合并和排序来自不同检索系统的结果。
不过,重排序并不是只适用于不同检索系统的结果合并,即使是在单一检索模式下,引入重排序步骤也能有效帮助改进文档的召回效果,比如我们可以在关键词检索之后加入语义重排序。
重排序也并不是搜索技术的替代品,而是一种用于增强现有检索系统的辅助工具。它最大的优势是不仅提供了一种简单且低复杂度的方法来改善搜索结果,允许用户将语义相关性纳入现有的搜索系统中,而且无需进行重大的基础设施修改。
关于RAG等相关概念介绍完毕,下面我们进入具体实验环节。
二、基于知识库的智能聊天助手搭建实验
我们知道,传统的客服机器人往往是基于关键词检索的,当用户输入了关键词以外的问题,机器人就无法解决,需要转人工处理。而知识库能够做到语义级别上的检索,降低人工的负担。
在实验开始之前,请记住知识库的核心是检索而非LLM,是LLM增强了输出的过程,但真正的需求仍然是生成答案。
该实验的前提条件:
-
在Dify模型供应商中已添加可以使用的大语言模型、嵌入模型以及重排序模型;
-
若使用Xinference大模型,请确保该模型已部署,即在Xinference --Running Models页面可以查看到该模型。
2.1 创建知识库&上传文档
创建知识库并上传文档大致分为以下5个步骤:
1. 登录Dify,在 Dify Workspace内创建知识库,从本地选择您需要上传的文档;
2. 选择分段与清洗模式,预览效果;
3. 配置索引方式和检索设置;
4. 等待分段嵌入;
5. 完成上传,在应用内关联并使用 🎉
以下是各个步骤的详细说明:
1 登录Dify,创建知识库
重新登录Dify时,需要在终端重新拉起Docker本地服务,具体操作可参考上一篇文章。
在 Dify 主导航栏中点击知识库,点击“**创建知识库”**进入创建向导。

拖拽或选中文件进行上传,上传文档存在以下限制:
-
单文档的上传大小限制为 15MB;
-
SaaS 版本的不同订阅计划限定了批量上传个数、文档上传总数、向量存储空间。

2 选择分段与清洗策略
将内容上传至知识库后,需要先对内容进行分段与数据清洗,该阶段可以被理解为是对内容预处理与结构化。
支持以下两种策略:
-
自动分段与清洗:自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件;
-
自定义:自定义模式适合对于文本处理有明确需求的进阶用户。在自定义模式下,你可以根据不同的文档格式和场景要求,手动配置文本的分段规则和清洗策略。
这里我们选择自动分段与清洗:

3 索引方式
指定内容的预处理方法(分段与清洗)后,接下来需要指定对结构化内容的索引方式。索引方式将直接影响 LLM 对知识库内容的检索效率以及回答的准确性。
系统提供以下三种索引方式,你可以根据实际需求调整每种方式内的检索设置:
-
高质量:在高质量模式下,将首先调用 Embedding 嵌入模型(支持切换)将已分段的文本转换为数字向量,帮助开发者更有效地实现大量文本信息的压缩与存储;同时还能够在用户与 LLM 对话时提供更高的准确度。且高质量索引方式提供向量检索、全文检索和混合检索三种检索设置。
-
经济:使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引。
-
Q&A 模式:在知识库上传文档时,系统将对文本进行分段,总结后为每分段生成 Q&A 匹配对。与高质量与经济模式中所采用的「Q to P」(用户问题匹配文本段落)策略不同,QA 模式采用 「Q to Q」(问题匹配问题)策略。这是因为问题文本通常是具有完整语法结构的自然语言,Q to Q 的模式会令语意和匹配更加清晰,并同时满足一些高频和高相似度问题的提问场景。当用户提问时,系统会找出与之最相似的问题,然后返回对应的分段作为答案。这种方式更加精确,因为它直接针对用户问题进行匹配,可以更准确地帮助用户检索真正需要的信息。
这里我们选择【高质量】:

当你在这里选择了【高质量】或者【采用Q&A分段模式】时,还需要选择一个【Embedding模型】,该模型为您在模型供应商列表内所添加的模型,若未添加需要先完成该模型的添加,这里我们选择之前部署的Xinference嵌入模型:

4 检索设置,等待分段嵌入
在高质量索引方式下,Dify 提供以下 3 种检索方案,向量检索、全文检索以及混合检索。这里我们选择【混合检索】,混合检索需要进一步选择【权重设置】以及【Rerank模型】,具体参数意义见第一部分内容,这里的Rerank模型我们也选择之前部署的Xinference重排序模型。

5 完成上传
选择完成后,点击左下角按钮“保存并处理”,等待嵌入完成,即完成该知识库的创建:

轻点“前往文档”,可进入知识库页面:

点击左边菜单栏的“召回测试”查看文档分段情况:

继续点击左边栏的“设置”按钮,我们可以修改知识库的名称、知识库描述、可见权限、索引模式、嵌入模型以及检索设置进行修改:

修改完成后,点击底部的“保存”按钮。返回知识库可以看见该知识库已存在。

至此,基于本地文件上传所构建的知识库已经完成
2.2 在聊天助手应用中集成知识库
关于聊天助手的编排方法,这里可以尝试选择“基础编排”和“工作流编排”两种方式:
基础编排
1)点击进入“工作室” – “创建空白应用” – 选择“聊天助手” – “基础编排”:

点击"基础编排"后,直接进入编排页面,输入提示词 – 添加知识库后,在右下角输入问题和聊天助手开始对话:

可以看到该回答有引用知识库中的内容。
工作流编排
2)点击进入“工作室” – “创建空白应用” – 选择“聊天助手” – “工作流编排”:

点击"工作流编排"后,进入的是工作流编排的页面,可以根据自己的想法在画布中选择添加节点完成整个工作流的设计。
问题分类器
如我们在这里添加了一个“问题分类器”节点,对用户的问题进行简单的分类/描述:
分类 1 :用户询问其他问题
分类 2:用户询问与个人知识管理有关问题
当用户输入不同的问题时,问题分类器会根据已设置的分类标签 / 描述自动完成分类,并按下一步流程分支进行回答:
-
-
“如何对个人知识进行精进管理?” —> “与个人知识管理有关问题”
“今天是农历几月几日**?” —> “其他问题**”
如何配置
-
-
1. 问题分类器节点
-

-

-
配置步骤:
-
1) 选择推理模型,问题分类器基于大语言模型的自然语言分类和推理能力,这里选择Xinference qwen2.5-instruct;
-
2) 择输入变量,指用于分类的输入内容,支持输入文件变量。客服问答场景下一般为用户输入的问题sys.query;
-
3)编写分类标签/描述,你可以手动添加多个分类,通过编写分类的关键词或者描述语句,让大语言模型更好的理解分类依据,这里添加了2个分类问题;
-
4) 选择分类对应的下游节点,问题分类节点完成分类之后,可以根据分类与下游节点的关系选择后续的流程路径。这里选择两个不同的下游节点,若问题和个人知识有关则选择知识库作为参考,否则,直接使用大语言模型进行回答。
2. 当用户询问其他问题
-


-
3. 当用户询问与个人知识管理有关问题
-



-
执行测试
-
通过询问问题测试是否会按照分类条件执行流程进行回复:
-
问题1:如何对个人知识进行管理呢?
-

可以看到,对于该问题的回答执行的是第2个分支,回答结果如下所示,点击“工作流”,也可以看到具体执行的流程节点:
-

-
问题2:广州市今天天气如何?
-

由于选择的是Xinference的15亿参数的小模型,无法联网查询实时数据,我们将其更换为通义千问qwen2.5-720亿的模型试试看:

大模型正常回答出了广州市今天的天气情况:

到这里我们就完成了一个基于知识库的简单的聊天机器人的AI应用搭建,你也可以动动手亲自尝试一下。
总结
本文主要分享了关于RAG相关概念的基本介绍,并通过之前部署的开源大模型应用平台Dify + Xinference大模型对如何基于知识库搭建一个简单的聊天助手进行了实验,整个流程有按照设计的场景成功运行,但还是有一些欠缺的地方:
一方面,对于实验中所上传的构建知识库的文档,本文并未做过多的手工干预以及数据预处理,可以看出效果还可以,但是实际应用场景中需要处理的数据源往往比较复杂,一般需要经过预处理后才可以作为知识库的知识来源,本文并未涉及;
另一方面,对于聊天助手的构建,我们分别尝试了“基础编排”和“流程编排”,对于流程编排中使用了“问题分类器”节点对用户问题进行了简单的分类,下一步分别设置了使用知识库或者大模型两个分支进行回答,但是实际上可以使用“变量聚合”节点,将该分支进行合并,不需要重复定义下游的 LLM 和直接回复节点,这一遗留问题我们下次实验再尝试;
最后,Dify平台还有很多的节点可以辅助我们来构建更加复杂和面向实际场景的应用,待后续一一解锁。
零基础如何学习AI大模型
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型典型应用场景
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
④AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段

二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。


三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。


四、LLM面试题


五、AI产品经理面试题

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]👈
更多推荐
所有评论(0)