RagFlow参数配置&测试

引子

前文写到RagFlow的环境搭建&推理测试,感兴趣的童鞋可以移步(RagFlow环境搭建&推理测试-CSDN博客)。RagFlow相对于其他Rag开源项目,比如说MaxKB,Dify项目部署较为复杂。很多读者私信说我写了那么多环境搭建与推理测试,都点到为止,浅尝辄止,仅仅整个流程走通,很多细节没有展示。那是为什么呢?好吧,那是因为现在还在公司任职,其他细节涉密,就没有写出来。这篇RagFlow是我自己做的业余项目,那就没有涉密的考究了。这篇我会较为详细的展示我对RagFlow的实操。OK,那我们开始吧。

一、参数配置实操

1、知识库配置

(1)文档解析器

建议保持默认选项DeepDoc。

如果文档格式简单、内容常规,追求快速解析,可考虑选择 "简易(naive)"

(2)嵌入模型(Embedding模型)

在RagFlow中,嵌入模型发挥着两个关键作用,一是把知识库中的文档数据转换为向量,二是在聊天场景下将用户输入的自然语言转换为向量。这些向量能够在向量空间中体现文本的语义特征,为后续的相似度对比提供依据。

当用户进行提问时,Ragflow会基于混合相似度计算来判断二者的相关性。筛选出与问题相似度高的内容后,RAGFlow会根据这些文档的内容,结合自身的语言生成能力,生成合适的回答输出给用户。

在知识库这里,主要是发挥其第一个作用。如果知识库是基于中文的,可以选择:BAAI/bge-large-zh-v1.5(注:在选择默认模型的时候选,RagFlow模型自带,也可以选择自己本地部署的embedding模型)。多语言的可以视情况而定。

(3)目前支持以下这几种解析方法:General、Q&A、Resume、Manual、Table、Paper、Book、Laws。

选择不同的解析方法后,右侧均有说明。

这里简单说明下可能用得比较多的解析方法。

(3-1)General

根据文本的排版、格式、语义关联等因素来确定分割点,结合块Token数来将文本切换为适合大小的文本块。

(3-2)Q&A

主要是问答对数据,此块方法支持excelcsv/txt文件格式。

a、如果文件是excel格式,则应由两个列组成 没有标题:一个提出问题,另一个用于答案, 答案列之前的问题列。多张只要列正确结构,就可以接受。

b、如果文件是csv/txt格式 以 UTF-8 编码且用 TAB 作分开问题和答案的定界符。

(3-3)Resume

支持的文件格式为DOCX、PDF、TXT。

简历有多种格式,就像一个人的个性一样,但我们经常必须将它们组织成结构化数据,以便于搜索。

我们不是将简历分块,而是将简历解析为结构化数据。 作为HR,你可以扔掉所有的简历, 您只需与'RAGFlow'交谈即可列出所有符合资格的候选人。

(3-4)Manual

章节将文档分割为大小不等的文本块,这个比较考验文档格式,如果每个章节内容联系紧密、最好主题比较单一、且各章节长度比较均匀,可以考虑使用这种方法,比较大的章节会消耗过多的token,也不利于精准回答。

(3-5)Table

即表格,如果文档内容能被整理表格这种更接近结构化的格式,可以考虑使用这种解析方法,这种行列的关系,通常能比较准确地体现数据之间的关系,有利于内容的解析及后续提升问答准确度。

(3-6)Paper

仅支持PDF文件。如果我们的模型运行良好,论文将按其部分进行切片,例如摘要、1.1、1.2等。

这样做的好处是LLM可以更好的概括论文中相关章节的内容, 产生更全面的答案,帮助读者更好地理解论文。 缺点是它增加了 LLM 对话的背景并增加了计算成本, 所以在对话过程中,你可以考虑减少'topN'的设置

(3-7)Book

支持的文件格式为DOCXPDFTXT

由于一本书很长,并不是所有部分都有用,如果是 PDF, 请为每本书设置页面范围,以消除负面影响并节省分析计算时间。

(3-8)Laws

支持的文件格式为DOCXPDFTXT。法律文件有非常严格的书写格式。 我们使用文本特征来检测分割点。chunk的粒度与'ARTICLE'一致,所有上层文本都会包含在chunk中。

(3-9)QA对导入测试

导入

测试

(4)建议文本框大小

当解析方法选择General时需要设置此参数的值。一般建议大小在128至512之间,实际的值需要经过多次测试,大模型回答问题既不会截断、也不会有太多相关性不强的内容时比较合适。

(5)分段标识符

选择General解析方法时,会基于分段标识符进行文本分割,再根据块token大小对分割的文本进一步分块。

(6)页面排名

当检索对象为多个知识库、且需要指定优先检索的知识库时,可以使用此参数,计算相似度得分后分加上此指标的值,这会提高这个知识库内容的相似度得分。

(7)自动关键词

在解析文档时,根据算法识别出出现频率较高且对语义贡献大的词汇作为关键词,这些关键词能提升在知识库中检索相关内容的效率。

(8)自动问题

类似于自动关键词,在解析文档时生成相关问题,能为问答系统提供更多预设问题及答案对,提升系统回答问题的全面性和准确性。

(9)表格转HTML

与 General 切片方法配合使用。未开启状态下,表格文件(XLSX、XLS(Excel97~2003))会按行解析为键值对。开启后,表格文件会被解析为HTML 表格。若原始表格超过 12行,系统会自动按每 12 行拆分为多个HTML 表格。

(10)使用召回增强RAPTOR策略

现在的大多数检索增强语言模型,仅从检索语料库中检索短的连续文本块,这限制了对文档上下文的全面理解。为了解决这个问题,引入这种方法,反复对文本块进行嵌入(放到特定表示空间)、聚类(把相似文本块放一起 )和总结,自下而上构建一棵有不同层次的树。在推理时, RAPTOR 模型从这棵树中检索,整合不同抽象层次的长文档信息。以提高回答的准确率。

(10-1)

含义:Token 是模型处理文本时的基本单元,比如把一句话拆分成一个个小的词块等 。最大 token 数就是模型一次能处理文本量的上限。

设置建议:如果处理简短文本(如一句话、短新闻摘要 ),可以设置小一些,比如 128 。处理长文档(如长篇论文、书籍章节 ),可适当调高,如 512 甚至更高,但也不是越高越好,过高会占用大量计算资源,还可能影响处理速度。

(10-2)

含义:一般用于判断某种相似性、匹配度等指标的临界值。比如在聚类中,用来判断文本块是否相似到能归为一类 。

设置建议:通常在 0 - 1 之间。如果希望聚类更精细,让类别内文本相似度高,可设置小一些,如 0.05 - 0.1 ;若想类别宽泛些,包含更多有一定差异的文本,可设置大些,如 0.3 - 0.5 。也可根据多次实验效果来调整。

(10-3)

含义:指将文本数据划分成类别的最大数量。

设置建议:如果文本主题比较单一,类别少,可设置小一点,如 10 - 20 ;文本主题丰富多样,可适当增大,如 50 - 100 。还可以参考文本中明显的主题数量预估,比如文档涉及 5 个明显主题,可从略大于 5 的数值开始尝试。

(10-4)

含义:是一个初始值,用于确定随机数生成的起始状态。当算法有随机成分时,相同随机种子能保证每次运行结果一致,不同种子则结果不同。

设置建议:如果希望每次运行结果稳定可重复(比如调试、对比实验 ),设置一个固定整数,如 0、1 。如果追求每次不同随机效果(如探索不同可能性 ),可以不固定,每次设置不同整数。

(11)知识图谱

创建知识库时,开启"提取知识图谱",并添加实体后,解析文件时会由 ragflow 提取知识图谱。

解析完成后,该知识库会生成知识图谱,用于提高问答准确度。

(11-1)实体类型

对文档中的实体进行归类,用于构建知识图谱各个节点之间的关系。

如我要整理的是一份设备故障代码知识库,那么实体类型可能包含:一级分类、子分类、设备、子设备、配件、故障现象、故障原因、解决方法等。

如我要整理的是一份系统操作问答知识库,那么实体类型可能包含:模块、菜单、子菜单、页面、功能、操作步骤等。

(11-2)方法

若注重成本和提取速度,Light较合适;若追求知识图谱高质量,愿承担更高成本,General更优 。

(11-3)实体归一化

把具有相同含义的实体合并,比如文本中 "电脑""计算机""PC" 等不同表述,经实体归一化后都统一为 "计算机" 这一标准形式。建议开启此选项。

(11-4)生成社区报告

GraphRAG 旨在通过两个主要步骤来解决这些问题:索引和查询。索引引擎首先将一组文本文档分解为段落,然后将这些段落聚类为具有实体和关系的分层社区,这些实体和关系通过更高层次的抽象将每个段落连接起来。然后,我们使用 LLM 生成每个社区的摘要,称为社区报告。在查询步骤中,GraphRAG 利用这种结构化知识为大语言模型提供额外的上下文,以帮助回答问题。这个选项,应该是当选择"General"方法时,需要开启,因为他是属于 GraphRAG 提出的概念,和 Light 方法似乎没多大关系。

2、聊天设置

1、显示引文

在聊天信息中显示回答内容出自哪个文档哪个片段。

2、关键词分析

开启此选项后,会运用大语言模型(LLM )分析用户提问,提取出在相关性计算中需重点关注的关键词。

开启关键词分析会增加计算量,使 LLM 多一步关键词提取和分析操作,从 LLM 接收答复时间会增加,模型响应速度变慢。

其作用如下:

a、精准匹配知识

能更精准地从知识库中筛选出与用户问题相关的内容。比如用户提问 "如何提高玫瑰的开花质量" ,开启关键词分析后,系统能准确提取 "玫瑰""开花质量" 等关键词,快速定位知识库中关于玫瑰种植养护、提升开花质量的相关知识片段,提升回答准确性和相关性 。

b、优化检索效果

对用户输入问题进行深度语义理解,避免因表述差异导致的检索偏差。像用户问 "电脑运行慢咋整" ,系统能识别出 "电脑""运行慢" 等关键语义,即便知识库中表述是 "计算机性能降低的解决方法" ,也能有效匹配,提升检索召回率和准确率 。

3、相似度阈值及关键字相似度权重

Ragflow 使用混合相似度得分来评估两行文本之间的距离,以生成回复内容。

影响计算结果的两个因子,其一是加权关键字相似度,另一个是矢量余弦相似性得分或 Rerank 得分(当选择 Rerank 模型后以 Rerank 得分计算)。

混合相似度得分 = 关键字相似度得分 * 关键字相似度权重 + 矢量余弦相似性得分 * (1 - 关键字相似度权重),或者混合相似度得分 = 关键字相似度得分 * 关键字相似度权重 + Rerank 得分 * (1 - 关键字相似度权重)

其中,关键字相似度权重与余弦相似度权重(或 Rerank 得分权重)的和为 1。

如果查询和块之间的相似度小于此阈值,则该块将被过滤掉。越高的阈值,筛选出的文本块越少。具体的阈值,可以到知识库中的"检索测试"中进行测试,根据测试选择一个合适的阈值。使回复结果中能包含期望的答案,又不会有太多不必要的信息。

4、Top N

相对于前一个概念,"相似度阈值及关键字相似度权重"中的相似度阈值。设置 Top N 后,当高于相似度阈值的文本块数量大于 N 时,将只会过滤出前 N 条。可结合测试情况设置。

5、多轮对话优化

在多轮对话的中,对去知识库查询的问题进行优化。会调用大模型额外消耗 token。可视情况决定是否开启。

6、开启知识图谱

知识库中开启"提取知识图谱"后,这里可以选择是否开启。良好的知识图谱有利于提高回答的准确性,建议开启。

7、 推理

开启此选项后,会触发像 Deepseek R1 一样的推理过程。作为知识库问答,可以不开启此选项。

8、Rerank 模型

选择 Rerank 模型可能有助于提高回答准确性,但会消耗额外的算力。建议选择服务商提供的模型,如通义的 gte-rerank,不要选择本地模型,如 BAAI/bge-reranker-v2-m3,会导致回答速度变慢,特别是知识库中文档比较多的时候。

9、温度

控制生成文本的随机性和创造性。数值越高,模型输出越随机、有创意。对于知识库问答,一般需要严谨一点,保持默认值即可。

10、Top P

在大模型生成文本时,对于下一个要输出的单词,模型会为词汇表中的每个单词计算一个概率。Top P(核心采样)做的是,从概率最高的单词开始,依次累加这些单词的概率,当累加概率达到设定的阈值(即 Top P 的值 )时,就把这些单词构成一个集合。然后,模型只从这个集合里随机选择下一个要输出的单词 。通过这种方式,它摒弃了那些概率极低的单词,聚焦在更有可能出现的单词上,能在一定程度上平衡生成文本的多样性和合理性 。

假设模型的词汇表中有 10 个单词,分别是 A、B、C、D、E、F、G、H、I、J ,模型计算出它们生成下一个单词的概率依次为:

A:0.3 B:0.2 C:0.15 D:0.1 E:0.08 F:0.05 G:0.04 H:0.03 I:0.02 J:0.01

如果 Top P 的值设为 0.8 ,从概率最高的单词 A 开始累加概率:

选 A 时,累加概率为 0.3 ;再选 B ,累加概率变为 0.3 + 0.2 = 0.5 ;选 C 后,累加概率是 0.5 + 0.15 = 0.65 ;选 D 后,累加概率为 0.65 + 0.1 = 0.75 ;选 E 后,累加概率达到 0.75 + 0.08 = 0.83 ,此时已经超过了阈值 0.8 。那么就得到一个由 A、B、C、D、E 这 5 个单词组成的集合,模型只会从这 5 个单词里随机选择一个作为下一个输出的单词,而不会考虑 F、G、H、I、J 这些单词 。这样,通过 Top P 的设置,就缩小了单词的选择范围,聚焦在更可能出现的单词上,让生成过程更合理 。设置较低的阈值时,模型优先从常用且相关度高的词中选择,保证回答在专业领域的准确性。暂时建议保持默认值 0.3 不修改,后续可以根据回答质量决定是否调整此参数。

11、 存在处罚

对对话中已经出现过的单词进行惩罚,降低其再次出现的概率,防止模型重复表述,让回答更丰富多样。

一般可设为 0.2 - 0.5 。若回答重复性严重,可适当调高,如 0.4 ;若文本较短且不希望过度抑制词汇出现,可适当调低。

12、处罚频率

与存在处罚类似,抑制模型输出相同内容,但它是根据单词出现频率惩罚,出现频率越高,惩罚力度越大 。

通常设为0.5 - 1.0。如果希望更严格控制高频词重复,可设为0.7 - 1.0,如 0.7 ;若文本较简短或希望一定程度保留高频核心词,可设为0.5 - 0.7。

13、最大token数

限制模型生成回复的最大长度,token 是模型处理文本时的基本单元 。

一般简单问答可设为 128 - 256 ;复杂解释、长文本生成场景可设为 512 或更高,但注意不要超过模型支持的最大上下文长度,否则可能截断回答或报错

相关推荐
IT古董18 分钟前
【漫话机器学习系列】275.GrabCut 算法——用于去除图片背景(Grabcut For Removing Image Backgrounds)
人工智能·算法·机器学习
Jamence1 小时前
多模态大语言模型arxiv论文略读(九十三)
论文阅读·人工智能·计算机视觉·语言模型·论文笔记
AI让世界更懂你1 小时前
【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
人工智能·自然语言处理
AI小白龙*1 小时前
重磅发布 | 复旦533页《大规模语言模型:从理论到实践(第2版)》(免费下载)
人工智能·程序员·llm·ai大模型·rag
一起搞IT吧1 小时前
Camera相机人脸识别系列专题分析之一:人脸识别系列专题SOP及理论知识介绍
android·图像处理·人工智能·数码相机
IT古董1 小时前
大语言模型在软件工程中的应用、影响与展望
人工智能·语言模型·软件工程
陈纬度啊1 小时前
P7-大规模语言模型分布式训练与微调框架调研文档
ai
北京地铁1号线1 小时前
深度图数据增强方案-随机增加ROI区域的深度
人工智能·opencv·计算机视觉
大师兄带你刨AI2 小时前
「提效」AI办公 | 实测,飞书扣子空间快速迭代
大数据·人工智能
归去_来兮2 小时前
循环神经网络(RNN)模型
人工智能·深度学习·机器学习·循环神经网络·序列数据