【Ragflow】10. 助理配置参数详细解析/模型响应加速方法

概述

Ragflow的助理配置中,有很多参数,尽管官方文档给出了一定程度的解释,但不够详细。

本文将对各项参数进行更详细的解释说明,并进一步挖掘某些参数中隐含的潜在陷阱。

助理设置

空回复

含义:输入的问题若未能在知识库中找到匹配的chunk块,就默认输出设置的内容,默认不启用。

这个设置大多数场景都用不到,因为RAG本身就是通过知识库对原本模型回答进行“增强”,除非是要求精确的查询业务,才可能需要设置该值。

显示引文

含义:开启后,会在模型的回答中增加回答的引用提示,默认开启。

此功能还是比较实用的,但存在一个小坑,开启之后,在模型问答时,会在system prompt中添加默认提示,内容在rag\prompts.pycitation_prompt

# Citation requirements:
- Inserts CITATIONS in format '##i$$ ##j$$' where i,j are the ID of the content you are citing and encapsulated with '##' and '$$'.
- Inserts the CITATION symbols at the end of a sentence, AND NO MORE than 4 citations.
- DO NOT insert CITATION in the answer if the content is not from retrieved chunks.--- Example START ---
<SYSTEM>: Here is the knowledge base:Document: Elon Musk Breaks Silence on Crypto, Warns Against Dogecoin ...
URL: https://blockworks.co/news/elon-musk-crypto-dogecoin
ID: 0
The Tesla co-founder advised against going all-in on dogecoin, but Elon Musk said it’s still his favorite crypto...Document: Elon Musk's Dogecoin tweet sparks social media frenzy
ID: 1
Musk said he is 'willing to serve' D.O.G.E. – shorthand for Dogecoin.Document: Causal effect of Elon Musk tweets on Dogecoin price
ID: 2
If you think of Dogecoin — the cryptocurrency based on a meme — you can’t help but also think of Elon Musk...Document: Elon Musk's Tweet Ignites Dogecoin's Future In Public Services
ID: 3
The market is heating up after Elon Musk's announcement about Dogecoin. Is this a new era for crypto?...The above is the knowledge base.<USER>: What's the Elon's view on dogecoin?<ASSISTANT>: Musk has consistently expressed his fondness for Dogecoin, often citing its humor and the inclusion of dogs in its branding. He has referred to it as his favorite cryptocurrency ##0$$ ##1$$.
Recently, Musk has hinted at potential future roles for Dogecoin. His tweets have sparked speculation about Dogecoin's potential integration into public services ##3$$.
Overall, while Musk enjoys Dogecoin and often promotes it, he also warns against over-investing in it, reflecting both his personal amusement and caution regarding its speculative nature.--- Example END ---

由于ragflow原生语言是英文,因此对于中文问题,直接加英文作为系统提示,混杂输入或多或少会影响模型输出性能,因此对于中文用户,建议修改为中文的默认提示:

# 引用要求:
- 以格式 '##i$$ ##j$$'插入引用,其中 i, j 是所引用内容的 ID,并用 '##''$$' 包裹。
- 在句子末尾插入引用,每个句子最多 4 个引用。
- 如果答案内容不来自检索到的文本块,则不要插入引用。--- 示例 ---
<SYSTEM>: 以下是知识库:Document: 埃隆·马斯克打破沉默谈加密货币,警告不要全仓狗狗币  ...
URL: https://blockworks.co/news/elon-musk-crypto-dogecoin
ID: 0
特斯拉联合创始人建议不要全仓投入 Dogecoin,但埃隆·马斯克表示它仍然是他最喜欢的加密货币...Document: 埃隆·马斯克关于狗狗币的推文引发社交媒体狂热
ID: 1
马斯克表示他“愿意服务”D.O.G.E.——即 Dogecoin 的缩写。Document: 埃隆·马斯克推文对狗狗币价格的因果影响
ID: 2
如果你想到 Dogecoin——这个基于表情包的加密货币,你就无法不想到埃隆·马斯克...Document: 埃隆·马斯克推文点燃狗狗币在公共服务领域的未来前景
ID: 3
在埃隆·马斯克关于 Dogecoin 的公告后,市场正在升温。这是否意味着加密货币的新纪元?...以上是知识库。<USER>: 埃隆·马斯克对 Dogecoin 的看法是什么?<ASSISTANT>: 马斯克一贯表达了对 Dogecoin 的喜爱,常常提及其幽默感和品牌中狗的元素。他曾表示这是他最喜欢的加密货币 ##0 ##1。
最近,马斯克暗示 Dogecoin 未来可能会有新的应用场景。他的推文引发了关于 Dogecoin 可能被整合到公共服务中的猜测 ##3$$。
总体而言,虽然马斯克喜欢 Dogecoin 并经常推广它,但他也警告不要过度投资,反映了他对其投机性质的既喜爱又谨慎的态度。--- 示例结束 ---

关键词分析

含义:开启后,会在模型的回答中增加回答的引用提示,默认关闭。

开启后,对于用户输入的问题会调用rag\prompts.pykeyword_extraction进行额外关键词提取,关键词提取会额外使用一轮模型问答,系统默认prompt:

Role: You're a text analyzer. 
Task: extract the most important keywords/phrases of a given piece of text content.
Requirements: - Summarize the text content, and give top {topn} important keywords/phrases.- The keywords MUST be in language of the given piece of text content.- The keywords are delimited by ENGLISH COMMA.- Keywords ONLY in output.### Text Content 
{content}

同理,对于中文用户,可以设定为中文提示:

角色:文本分析器
任务:提取给定文本内容中最重要的关键词/短语
要求:
- 总结文本内容,给出前{topn}个重要关键词/短语
- 关键词必须使用原文语言
- 关键词之间用英文逗号分隔
- 仅输出关键词### 文本内容
{content}

提取完关键词后,直接加在问题后面,相当于在prompt中对问题进行显性强化,这样方便在进行知识检索中进行关键词匹配。

这个功能比较看重实际场景,比如,对于数据精确度较高的业务,建议开启,这样更容易匹配到准确信息。对于普通问答业务,不建议开启,因为会减慢模型响应速度。

文本转语音

含义:开启后,需要在系统模型设置中配置TTS模型,模型回答后,可点击播放声音按钮,直接听语音,默认关闭。

很鸡肋的功能,开启后无疑会显著增加响应时间,绝大多数场景中用不到语音。

Tavily API Key

含义:用于将问题通过 Tavily 提供的外部资料库进行进一步检索,默认关闭。

这个功能不会将本地知识库信息泄露到外部,而是在查完本地之后,再查一遍外部公网上的资料。个人认为没有开启的必要,因为需要网上的资料,直接用现成公开模型平台的联网搜索就可以了。

提示引擎

相似度阈值

含义:如果查询和块之间的相似度小于此阈值,则该块将被过滤掉,默认值0.2。

输入问题时,系统在查询时会进行两个操作,一方面提取关键词,另一方面通过embedding模型变成词向量,分别计算关键词相似度和向量余弦相似度,最终相似度通过两者加权得到,最终相似度如果超过此阈值,表明检索成功。如果经常检索不出内容,可以适当调低该值。

看源码时,还发现一个小细节,在进行关键词提取时,系统还会进行同义词查询,默认字典路径为rag\res\synonym.json

关键字相似度权重

含义:在混合检索中,赋予关键字相似度的权重,默认值为0.7,向量余弦相似度权重为1-0.7=0.3。

如果业务是偏向精确搜索,可调大该值,如果偏模糊搜索,可适当降低该值。

Top N

含义:输入到 LLM 的最大块数。换句话说,即使检索到更多块,也只会提供前 N 个块作为输入。

多轮对话优化

含义:利用多轮对话中的现有上下文来增强用户查询,默认启用。

非常鸡肋的功能,前文分析过,开启该功能后,在进行2轮以上对话时,会额外进行一轮大模型问答来优化第二次及以后提问的prompt,影响模型响应速率,建议关闭。

使用知识图谱

含义:是否在检索多跳问答时使用指定知识库中的知识图谱,默认关闭。

知识图谱会极大增长检索时间,除非业务特殊要求,否则不建议使用。

推理

含义:通过类似Deepseek-R1/OpenAI o1的推理过程来生成答案,开启后聊天模型在回答问题时,遇到未知话题时会自主推理,生成答案。

如果用DeepSeek-R1系列模型,本身就是推理模型,不需要开启。

Rerank模型

含义:使用重新排序模型,需要在系统模型设置中进行配置,作用是对检索内容进行重新排序。如果开启,混合相似度计算会使用关键词相似度和重排器评分,重排器评分权重为1-关键字相似度权重

个人觉得用Rerank作用不大,重排序的出发点是用来解决embedding固有的一些局限性问题,比如,"查找2025年4月3日的资料"容易检索到”2024年4月3日的资料“,因为它俩就一字之差,在向量空间中可能是很接近的。ragflow已经采用了关键词加权检索来尽可能避免这个问题,再加一个重排序,有点过于保守,反而还会降低响应速度,因此不建议配置。

变量

含义:系统提示中要使用的变量,{knowledge}为特殊变量,用来将检索的知识添加到系统prompt中。

有点鸡肋的功能,如果需要修改系统prompt,直接改就行了,这里设置成变量形式,可能是为了后续拓展考虑,现阶段作用不大,保持原样即可。

模型设置

模型设置这几个参数是LLM的固有属性,系统并不会因此采取特殊策略。

温度

含义:控制生成文本的随机性和创造性,技术原理是通过softmax函数调整token概率分布的平滑程度。

低温度 (如0.1-0.5):

  • 输出更确定、保守
  • 倾向于高频词,适合事实性回答
  • 示例:客服机器人回答"如何重置密码?"

高温度 (如0.7-1.0):

  • 输出更随机、有创意
  • 可能生成非常用词,适合诗歌/故事
  • 示例:写科幻小说开头时使用

Top P

含义:从概率最高的词汇中动态划出一个范围,只从这个范围内随机选择下一个词。

概念比较抽象,举个例子解释:

问题:续写句子 “The scientist discovered…”
模型预测的下一个词概率可能如下:

  • “a” (0.4)
  • “the” (0.3)
  • “that” (0.15)
  • “an” (0.1)
  • “quantum” (0.05)
  • 如果 p=0.8:候选池 = {“a”, “the”, “that”}(累计概率0.4+0.3+0.15=0.85)
    可能生成:“The scientist discovered the…”
  • 如果 p=0.95:候选池 = {“a”, “the”, “that”, “an”, “quantum”}可能生成:“The scientist discovered quantum…”(更有创意但风险更高)

通常,该值和温度联合使用,用来控制输出保守或激进:

保守输出(如问答):

  • p=0.5~0.8(避免冷门词,保持准确性)

创意输出(如故事):

  • p=0.9~1.0(允许更多可能性)

存在处罚

含义:通过惩罚对话中已经出现的单词来抑制重复单词的出现。

比较容易理解,模型输出过的token会被降权,防止模型在同一个话题来回打转。

频率惩罚

含义:与存在惩罚类似,抑制模型输出相同的内容。

存在处罚是出现过就惩罚一下,通常是固定值;频率惩罚是出现频率越高,惩罚强度越大。

对于严谨的问答场景,这两个值就稍微调大;创意写作场景,这两个值就稍微调小。

如何加速模型聊天响应

我上一篇文章略微提到过加速模型响应的思路,在官方文档中,也给出了以下几点加速小贴士:

  • 在聊天配置对话框的提示引擎选项卡中,禁用多轮优化将减少从 LLM 获取答案所需的时间

  • 在聊天配置对话框的提示引擎选项卡中,将重新排名模型字段留空将显著减少检索时间

  • 使用重新排序模型时,请确保您有 GPU 来加速;否则重新排序过程将非常缓慢

  • 在聊天配置对话框的助手设置选项卡中,禁用关键字分析将减少从 LLM 接收答复的时间

总结一下,加速方式总共就两个方向,一个方向是关闭没必要的选项,另一个方向是用GPU来加速embedding的过程。

官方给的docker启动方式是运行这个文件:docker-compose.yml,如果使用其内置的embedding,可以通过这个文件docker-compose-gpu.yml进行启动,这会运行docker调用存在gpu资源,一定程度上让内置模型进行加速。

如果用的是ollama等其它框架外挂的embedding模型,可以忽略这一点。

修改默认值

其实官方也明确知道,多轮对话优化会影响模型输出速度,然而它仍然将其保持了默认开启的状态,下面就通过修改初始值的方式,将其默认状态设置为关闭。

助理相关的聊天配置文件在src\pages\chat\chat-configuration-modal这个文件夹下。

比如,想将多轮对话优化选项关闭,就修改prompt-engine.tsx的这部分内容:

<Form.Itemlabel={t('multiTurn')}tooltip={t('multiTurnTip')}name={['prompt_config', 'refine_multiturn']}initialValue={false}>

其它初始值的设置方式同理。

为什么模型不听话?

之前有群友问到过这个问题,即设置了系统prompt,也在聊天时进行强调,为什么模型不按指定的规则来?在看官方文档时,发现官方也特意强调了这个问题(看来问的人真的很多),这里顺带一提。

参考这个issue:
https://github.com/infiniflow/ragflow/issues/5627

这个用户提了一个问题:为什么问答时,模型没有正确检索到本该检索到的内容?

最后结论是,把DeepSeek-R1:14b切换成DeepSeek-R1:32b就解决了。

因此,想要模型正常理解意图,至少采用32b以上的模型。

文档解析的正确姿态

估计不少人都和我一样,在向数据库添加文件时,直接在知识库界面点这里的上传本地文件:

其实这样操作会对文件管理产生问题,点到文件管理中,所有文件会被存放到.knowledgebase文件夹。

因此,正确上传文件的姿态应该是先进入到文件管理界面,上传文件,上传完之后,选择链接到知识库

这样,同一个文件夹是可以被多个知识库共享的,这样操作会更方便文件管理和知识库的精细分类。

可参考的提示词模板

看了系统内置的一些提示词,不免对系统提示词的设计再进行反思。

目前,新建助理时,默认的系统提示词如下:

你是一个智能助手,请总结知识库的内容来回答问题,请列举知识库中
的数据详细回答。当所有知识库内容都与问题无关时,你的回答必须包
括“知识库中未找到您要的答案!”这句话。回答需要考虑聊天历史。
以下是知识库:
{knowledge}
以上是知识库。

这样写比较通用,如果和实际业务结合,建议进行相应修改。

视频[2]给出了一个可供参考的提示词构建步骤:

  1. 指定角色:明确让 AI 扮演的角色,例如情感专家、健身教练或知名人士。
  2. 描述问题:提供背景信息,包括现状、目标和限制条件,例如年龄、体重、时间和资源。
  3. 提出请求:清楚地告知 AI 你需要的具体任务,如制定减肥计划、分析分手原因或翻译文章。
  4. 选择格式:指定结果的呈现形式,如表格、邮件、合同等,并细化需求,如加粗重点。
  5. 设定语气:说明期望的沟通风格,如正式、尊重、友爱等。
  6. 提供参考:附加具体的案例或样例,以便 AI 更精准地理解和执行。

参考

1.官方文档:
https://ragflow.io/docs/dev/start_chat

2.我用了3年的AI提示词万能公式,5分钟解决70%提示词问题~:
https://www.bilibili.com/video/BV1ib421E7Sy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac Apple silicon如何指定运行amd64架构的ubuntu Docker?

如何指定运行amd64架构的ubuntu Docker 下面这个docker命令如何指定运行amd64架构的ubuntu Docker&#xff1f; docker run -it -v $(pwd):/workspace ubuntu:20.04 bash这个命令已经非常接近正确运行一个基于 amd64 架构的 Ubuntu 容器了&#xff0c;但如果你想明确指定运行…

ColPali:基于视觉语言模型的高效文档检索

摘要 文档是视觉丰富的结构&#xff0c;不仅通过文本传递信息&#xff0c;还包括图表、页面布局、表格&#xff0c;甚至字体。然而&#xff0c;由于现代检索系统主要依赖从文档页面中提取的文本信息来索引文档&#xff08;通常是冗长且脆弱的流程&#xff09;&#xff0c;它们…

使用C++实现HTTP服务

天天开心&#xff01;&#xff01;&#xff01; 阅读本篇文章之前&#xff0c;请先阅读HTTP基础知识 传送门----> HTTP基础知识 文章目录 一、CWeb服务器&#xff08;核心代码WebServer.cpp&#xff09;二、静态文件结构三、编译和运行四、访问测试 一、CWeb服务器&#xff…

Reactive编程入门:Project Reactor 深度指南

文章目录 4.2.1 创建 Flux 和 MonoFlux 基础创建方式高级创建模式Mono 创建方式 4.2.2 订阅与数据处理基础订阅模式数据处理操作符 4.2.3 核心操作符深度解析flatMap 操作符zip 操作符buffer 操作符 高级组合模式复杂流处理示例背压处理策略 测试响应式流性能优化技巧 React 编…

【万字总结】前端全方位性能优化指南(完结篇)——自适应优化系统、遗传算法调参、Service Worker智能降级方案

前言 自适应进化宣言 当监控网络精准定位病灶&#xff0c;真正的挑战浮出水面&#xff1a;系统能否像生物般自主进化&#xff1f; 五维感知——通过设备传感器实时捕获环境指纹&#xff08;如地铁隧道弱光环境自动切换省电渲染&#xff09; 基因调参——150个性能参数在遗传算…

PQ以及有关索引的笔记Faiss: The Missing Manual

参考Faiss 索引结构总结&#xff1a; 为了加深记忆&#xff0c;介绍一下Inverted File Index&#xff08;IVF&#xff09;的名字由来&#xff1a; IVF索引的名字源自“倒排文件”&#xff08;Inverted File&#xff09;的概念。在传统的信息检索中&#xff0c;倒排文件是一种索…

win10彻底让图标不显示在工具栏

关闭需要不显示的软件 打开 例此时我关闭了IDEA的显示 如果说只是隐藏&#xff0c;鼠标拖动一个道理 例QQ 如果说全部显示不隐藏

关税核爆72小时!跨境矩阵防御战紧急打响

一、T86崩塌&#xff1a;全球贸易链的至暗时刻 &#xff08;配图&#xff1a;美国海关系统深夜弹出红色警报&#xff09; 5月2日凌晨2:17&#xff0c;杭州某光伏企业的供应链系统突然发出刺耳警报——其价值1800万美元的逆变器模块被划入34%关税清单。这场代号"黑天鹅突…

蓝桥杯Java B组省赛真题题型近6年统计分类

困难题 题号题型分值代码量难度通过率内容2024-F解答1581困难0.12最短路问题 Dijkstra 期望2024-G解答20116困难0.19模拟 暴力 搜索 DFS 剪纸 枚举2023-H解答2070困难0动态规划2022-H解答20109困难0.032022-J解答25141困难0搜索2021-H解答2041困难0.18二分 思维 规律2021-I解答…

【网络流 图论建模 最大权闭合子图】 [六省联考 2017] 寿司餐厅

题目描述&#xff1a; P3749 [六省联考 2017] 寿司餐厅 题目描述 Kiana 最近喜欢到一家非常美味的寿司餐厅用餐。 每天晚上&#xff0c;这家餐厅都会按顺序提供 n n n 种寿司&#xff0c;第 i i i 种寿司有一个代号 a i a_i ai​ 和美味度 d i , i d_{i, i} di,i​&…

前端面试题(三):axios有哪些常用的方法

Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一些常用的方法来处理不同类型的请求。以下是 Axios 中常用的一些方法&#xff1a; 1. axios.get() 用于发送 GET 请求&#xff0c;从服务器获取数据。 axios.get(/api/d…

python match case语法

学习路线&#xff1a;B站 普通的if判断 def if_traffic_light(color):if color red:return Stopelif color yellow:return Slow downelif color green:return Goelse:return Invalid colorprint(if_traffic_light(red)) # Output: Stop print(if_traffic_light(yellow)) …

LLaMA-Factory大模型微调全流程指南

该文档为LLaMA-Factory大模型微调提供了完整的技术指导&#xff0c;涵盖了从环境搭建到模型训练、推理和合并模型的全流程&#xff0c;适用于需要进行大模型预训练和微调的技术人员。 一、docker 容器服务 请参考如下资料制作 docker 容器服务&#xff0c;其中&#xff0c;挂…

【HCIA】静态综合实验练习笔记

实验拓扑图如下&#xff1a; 实验配置思路如下&#xff1a; 1、网段划分、配置IP地址 2、配置DHCP&#xff0c;使客户端获得ip地址 3、配置静态明细路由&#xff0c;内网全网通 4、配置空接口防环 5、配置优先级&#xff0c;实现选路最佳 6、配置缺省路由&#xff0c;实现公网通…

大数据(4.5)Hive聚合函数深度解析:从基础统计到多维聚合的12个生产级技巧

目录 背景一、Hive聚合函数分类与语法1. 基础聚合函数2. 高级聚合函数 二、6大核心场景与案例场景1&#xff1a;基础统计&#xff08;SUM/COUNT&#xff09;场景2&#xff1a;多维聚合&#xff08;GROUPING SETS&#xff09;场景3&#xff1a;层次化聚合&#xff08;ROLLUP&…

RTOS基础 -- NXP M4小核的RPMsg-lite与端点机制回顾

一、RPMsg-lite与端点机制回顾 在RPMsg协议框架中&#xff1a; Endpoint&#xff08;端点&#xff09; 是一个逻辑通信端口&#xff0c;由本地地址&#xff08;local addr&#xff09;、远程地址&#xff08;remote addr&#xff09;和回调函数组成。每个消息都会发送到特定的…

NineData云原生智能数据管理平台新功能发布|2025年3月版

本月发布 15 项更新&#xff0c;其中重点发布 3 项、功能优化 11 项、性能优化 1 项。 重点发布 基础服务 - MFA 多因子认证 新增 MFA 多因子认证&#xff0c;提升账号安全性。系统管理员开启后&#xff0c;所有组织成员需绑定认证器&#xff0c;登录时需输入动态验证码。 数…

DAY 35 leetcode 202--哈希表.快乐数

题号202 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&a…

Maven+Spring实现后端开发

一、前置知识的介绍 1.Spring 轻量级的 DI / IoC 和 AOP 容器的开源框架 容器的开源框架网址&#xff1a;https://spring.io/projects/spring-framework 作用&#xff1a;可简化管理创建和组装对象之间的依赖关系 将controller----->service------->dao层的依赖配置…

解锁界面设计密码,打造极致用户体验

界面设计是对软件、网站、移动应用等产品的用户界面进行设计的过程&#xff0c;旨在为用户提供美观、易用、高效的交互体验。以下是关于界面设计的一些主要方面&#xff1a; 一、设计原则 用户中心原则&#xff1a;以用户为中心&#xff0c;了解用户的需求、期望、行为和习惯…