AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【干货】带你一步步搭建RAGFlow
发布日期:2024-09-02 22:03:47 浏览次数: 3220 来源:码农随心笔记


上星期给各位同学介绍了RAGFlow这个大模型RAG引擎,本篇给大家介绍一下RAGFlow的本地搭建,以下过程基于Ubuntu24,其它Linux系统的搭建方法也基本相同。
先来温补一下,RAGFlow是一个基于对文档深入理解的开源 RAG(检索增强生成)引擎。它的作用是可以让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大模型提问时,RAGFlow先查找自有知识库中的切块内容,接着把查找到的知识库数据输入到对话大模型中再生成答案输出。
它能凭借引用知识库中各种复杂格式的数据为后盾,为用户提供真实可信,少幻觉的答案。RAGFlow的技术原理涵盖了文档理解、检索增强、生成模型、注意力机制等,特别强调了深度文档理解技术,能够从复杂格式的非结构化数据中提取关键信息。下面我手把手教各位同学如何在Linux系统中搭建RAGFlow。

01
RAGFlow 安装


安装前,先确保电脑符合以下要求:
  • 硬件:CPU ≥ 4 核 ;   内存≥ 16 GB;  磁盘空间 ≥ 50 GB;

  • 软件:Docker版本 ≥ 24.0.0 ;Docker Compose 版本 ≥ v2.26.1,Docker 和 Docker Compos 必须预先安装好,并且达到版本要求,我就是因为之前安装的Docker Compose 版本太低,导致安装错误,研究了好久才解决问题。


1. 更改 vm.max_map_count 值,设定为:=262144。

这个值的作用是允许Linux系统中,一个进程创建的最大内存映射区域数。如果应用程序需要创建的内存映射区域数超过了这个限制,就会导致映射失败,并可能出现性能问题或者直接导致应用程序崩溃。因此,对于依赖大量内存映射区域的应用程序(例如数据库系统、搜索引擎等),需要适当调整这个参数。

sudo sysctl -w vm.max_map_count=262144

2. 改完后查看 

sysctl vm.max_map_count

3. 永久更改vm.max_map_count 值, 无需每次开机手动更改。

 编辑文件:/etc/sysctl.conf

 更改或加入 :vm.max_map_count=262144

4. 克隆仓库:

git clone https://github.com/infiniflow/ragflow.git

如果下载过程缓慢或不能连接,可以选用Github加速或代理,这里就不详细描述了。

5. 进入docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:

cd ragflow/dockerchmod +x ./entrypoint.shdocker compose -f docker-compose-CN.yml up -d


请注意,运行上述命令会自动下载 RAGFlow 的开发版本 docker 镜像。如果你想下载并运行特定版本的 docker 镜像,请在 docker/.env 文件中找到 RAGFLOW_VERSION 变量,将其改为最新版本。例如 RAGFLOW_VERSION=v0.10.0,v0.10.0是截止到目前最新的版本,然后再运行上述的命令。下载的包较大,超过10G,需要耐心等待。

另外,需要注意docker-compose 需要安装V2.26.1以上版本,如未更新,上述指令会出现这个错误。

unknown shorthand flag: 'f' in -fSee 'docker --help'.

更新方法可参考docker-compose Github:https://github.com/docker/compose#linux , 这里说明如下:

(1)这里选择较新的 docker-compose V2.29.0 下载,Github下载:https://github.com/docker/compose/releases/tag/v2.29.0,页面选择 docker-compose-linux-x86_64  文件下载。

(2)下载完成后,把docker-compose-linux-x86_64 改名为 docker-compose,放到以下目录即可:

- /usr/local/lib/docker/cli-plugins 

最后记得添加运行权限,进入存放docker-compose的文件夹,运行

sudo chmod +x docker-compose

对于不同的Linux系统,亦可尝试放这几处:

- /usr/local/libexec/docker/cli-plugins`

- /usr/lib/docker/cli-plugins

- /usr/libexec/docker/cli-plugins


6. 服务器启动成功后再次确认服务器状态:

docker logs -f ragflow-server


如果您跳过这一步系统确认步骤就登录 RAGFlow,你的浏览器有可能会提示 `network anomaly` 或 `网络异常`,因为 RAGFlow 可能并未完全启动成功,所以需要执行上述指令,确保RAGFlow 安装后能成功运行。


7. 在浏览器中输入服务器对应的 IP 地址并登录 RAGFlow。

我在浏览器中打开:http://192.168.1.112 ,,即可成功打开登录页。此地址为本机IP,可以在终端中用 ifconfig 查看。

登录页中点击sign up进行注册, 填入电邮地址和密码后,返回登录页,就可以用刚刚注册的电邮地址和密码登录了。

8. 关于本地对话大模型的搭建。

在对RAGFlow进行配置前,需要先确认是否搭建本地对话大模型,如果需要全套系统本地搭建的同学,也需要在本地先搭建好开源模型,我这里选用了Ollama + llama3.1:8b。
关于Ollama的本地搭建也比较简单,可以参考这篇文章。

【干货】手把手教你搭建Ollama+OpenWebUI


配置前,需要把Ollama 运行起来:

Ollama run llama3.1:8b


然后用浏览器打开 http://localhost:11434 

可以看到页面中显示:Ollama is running,此为保证RAGFlow模型正确配置的必备条件。

另外,如果不想在本地搭建大模型,RAGFlow也可以连接各大在线模型,在配置前,各位同学需要先获取选用模型的API key 和 链接地址,这里就不做详细介绍了,大家可参考官网。


02
RAGFlow 配置


1. 创建知识库

在RAGFlow系统中,用户可以拥有多个知识库,构建更灵活、更多样化的问答。这里创建第一个知识库,点击创建知识库,填入知识库名称。


2. 配置知识库

以下显示了知识库的配置页面。正确配置知识库对于 AI 聊天至关重要。如果选择了错误的嵌入模型或块方法,会导致聊天中出现意外的语义丢失或不匹配的答案。

这里需要注意带星号的配置包括:语言,权限,嵌入模型,解析方法。

(1)解析方法的说明

RAGFlow 提供了多个分块模板,以便于不同布局的文件进行分块,并确保语义完整性。在 Chunk method (块方法) 中,您可以选择适合文件布局和格式的默认模板。下表显示了系统所有支持的块模板的内容及文件格式,大家根据需求自行选择。
模板描述
文件格式   
常规文件根据预设的块标记编号连续分块。DOCX, EXCEL, PPT, PDF, TXT, JPEG, JPG, PNG, TIF, GIF
问答
EXCEL, CSV/TXT
手动
PDF
表格
EXCEL, CSV/TXT
论文

PDF
书本

DOCX, PDF, TXT
法律

DOCX, PDF, TXT
介绍

PDF, PPTX
图片
JPEG, JPG, PNG, TIF, GIF
唯一
整个文档被分成唯一块。DOCX, EXCEL, PDF, TXT


(2)上传知识库文件,并做相应的配置,我这里选了2个关于单片机Lwip库的说明文件。

(3)选择解析方法

如无特殊要求,按默认值即可。


(4)选择 embedding model

嵌入模型(embedding model) ,这里选择默认的BAAI/bge-large-zh-v1.5,这个模型专门针对中文语义理解进行了优化,能够将文本映射为低维稠密向量,这些向量可以用于检索、分类、聚类或语义匹配等任务。


(5)解析文件

必须先对上传的文件进行解析,才能让RAGFlow执行检索知识库功能。文件解析是知识库配置中的一个关键步骤。RAGFlow 文件解析的含义有两个:基于文件布局对文件进行分块,并在这些块上构建嵌入和全文(关键字)索引。选择 chunk 方法和 embedding 模型后,您可以开始解析文件:

单击 UNSTART 旁边的播放按钮以开始文件解析。

如果文件解析长时间停止,单击红叉图标停止后,再单击刷新。

如上所示,RAGFlow 允许您对特定文件使用不同的块方法,从而提供更大的灵活性。

如上所示,RAGFlow 允许您启用或禁用单个文件,从而对基于知识库的 AI 聊天提供更精细的控制。


3. 运行检索测试

RAGFlow 在其聊天中使用全文搜索和矢量搜索的多次调用。在设置 AI 聊天之前,请考虑调整以下参数以确保预期信息始终出现在答案中:
  • 相似度阈值:相似度低于阈值的数据块将被过滤。默认设置为 0.2。

  • 向量相似度权重:向量相似度占总分的百分比。默认设置为 0.3。


4. 配置本地对话模型

在 RAGFlow 的配置页中,单击页面右上角的徽标> 然后点击右边栏的Model Providers,然后将 本地运行的Ollama 添加到 RAGFlow。


按以上内容填入,Base url需要填入本机的IP地址,并且需要在本地运行Ollama;Mode Name 我用的是llama3.1:8b;本地运行Ollama,API-key无需填写;

本地对话模型添加成功,如上图。


5. 开始 AI 聊天

RAGFlow 中的聊天基于特定知识库或多个知识库。创建知识库,完成文件解析,并且配置完对话模型后,各位同学可以开始 AI 对话了。

(1)通过创建助手来开始 AI 对话。

单击页面顶部中间的 Chat 选项卡> Create an assistant 以显示下一个对话的 Chat Configuration 对话框。

(2)更新 Assistant Setting(助理配置):

配置页中需要关注以下选项:

  • Assistant name 是您的聊天助理的名称。每个助手都对应于一个对话框,其中包含知识库、提示、混合搜索配置和大模型设置的唯一组合。

  • Empty response(空响应):当RAGFlow 没有在知识库中检索到答案时,它会统一响应您在此处设置的内容。

  • 如果希望 RAGFlow 未能在你的知识库中检索到答案时,根据对话大模型的内容即兴创作,请将其留空,但这可能会出现幻觉答案。

  • Show Quote(显示引述的文档): 这是 RAGFlow 的一个关键功能,默认情况下是启用的。RAGFlow 不像黑匣子那样工作,让人无法得知引述的内容。相反,它清楚地显示了其答案的信息来源。


(3)更新 Prompt Engine(提示引擎):这里的内容一般根据系统默认即可,有需要的同学,可以查看官方文档。


(4)更新 Model Setting (模型配置)

  • Model :选择 Chat (对话) 模型。尽管您在系统模型设置中选择了默认聊天模型,但 RAGFlow 允许您为对话选择替代聊天模型,选择正确的对话模型十分重要,这个影响到系统能否正常运行,如果对话模型配置错误,将导致不能输出正确的对话内容。

  • Freedom:指 LLM 即兴创作的级别。从 Improvise、Precise 到 Balance,每个自由度级别都对应于 Temperature、Top P、Presence Penalty 和 Frequency Penalty 的独特组合。

  • Temperature: LLM 的预测随机性水平。值越高,LLM 的创意就越大。

  • Top P:也称为“细胞核采样”,选用默认值即可

  • Max Tokens:LLM 响应的最大长度。请注意,如果此值设置得太低,则响应可能会减少。


(6)完成以上配置后,我们就可以来到对话页,让大模型根据你的知识库内容,开始一段淋漓畅快的对话了。


03
总结


RAGFlow是一个基于检索增强生成(Retrieval-Augmented Generation,简称RAG)的框架,它结合了检索(Retrieval)和生成(Generation)两个关键的自然语言处理技术。为我们提供了一种强大的方式来处理复杂的自然语言处理任务,它能够生成更加准确、丰富和相关的结果。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询