基于 Ragflow 搭建知识库-初步实践
一、简介
Ragflow 是一个强大的工具,可用于构建知识库,实现高效的知识检索和查询功能。本文介绍如何利用 Ragflow 搭建知识库,包括环境准备、安装步骤、配置过程以及基本使用方法。
二、环境准备
-
硬件要求
- CPU:建议 4 核及以上,以确保系统能够流畅运行,尤其是在处理大规模知识库数据和复杂查询时。
- RAM:至少 16GB 内存,为系统运行和数据处理提供足够的空间,避免因内存不足导致性能下降或程序崩溃。
- Disk:50GB 及以上的磁盘空间,用于存储知识库数据、索引文件以及系统运行过程中产生的其他数据。
-
软件要求
-
Docker desktop:确保已安装最新版本的 Docker desktop,可从官方网站下载并按照安装向导进行安装。
-
RAGFLOW:从官方 GitHub 仓库获取 RAGFLOW 相关文件,具体地址为https://github.com/infiniflow/ragflow
https://github.com/infiniflow/ragflow/blob/main/README_zh.md 根据这个文档一步步搭建即可。
-
大模型(如 deepseek):选择一个合适的大模型,并确保已开通其 API 访问权限。本示例中提及了 deepseek 模型,但您可以根据实际需求选择其他支持的模型。
-
-
版本要求 (2024年12月28日版本)
- Docker:版本需大于等于 24.0.0,确保具备较新的功能和稳定性支持。
- Docker Compose:版本大于等于 v2.26.1,用于管理和编排容器化应用。
三、安装与配置
-
修改镜像源(如果能正常下载,可以不需要修改)
-
找到 Ragflow 源码中 docker/.env 文件,将其中的 RAGFLOW_IMAGE 修改为华为镜像源:
RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:dev
需要注意的是,根据 2024 年 12 月 28 日官方文档,替换如下的镜像源会出现一个问题:
https://github.com/infiniflow/ragflow/issues/3418 查找不到 ‘/ragflow/conf/service_conf.yaml’ 这个文件
swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
-
-
启动 Ragflow
-
打开终端,进入 Ragflow 项目目录(包含 docker-compose.yml 文件的目录)。
-
执行以下命令启动 Ragflow 服务,这将在后台启动 Ragflow 相关的容器服务。
$ cd ragflow $ docker compose -f docker/docker-compose.yml up -d
-
-
访问主页
- 打开浏览器,访问http://127.0.0.1,进入 Ragflow 的主页。
四、知识库搭建流程
-
注册与登录
- 在主页上,按照页面提示流程,先注册一个账号,填写必要的信息并完成注册。
- 注册成功后,使用注册的账号登录系统。
-
创建知识库
-
登录后,点击相应按钮创建一个新的知识库,为知识库命名以便识别和管理。
-
上传本地文件到知识库,供知识库进行解析。在上传文件时,注意文件格式的支持情况,确保文件能够被正确解析。目前支持的文件格式可能包括常见的文档格式(如 PDF、DOCX 等)、文本文件等。上传完成后,系统将显示文件的相关信息,如分块数、上传日期、解析方法和解析状态等。例如:
-
分块数:表示文件被分割成的块数,用于后续的索引和检索。
-
上传日期:记录文件上传的时间,方便跟踪文件管理。
-
解析方法:显示系统采用的解析方式,可能根据文件类型自动选择合适的解析器。
-
解析状态:初始上传后可能显示为 “解析中”,解析完成后将更新为 “已解析” 或相应的成功状态。如果解析出现问题,可查看错误信息并根据提示进行排查。
-
-
-
配置模型提供商
-
点击个人头像,进入配置页面。
-
在模型提供商配置区域,选择您使用的模型提供商(如 deepseek),并将对应的 API key 粘贴到指定位置。如果您选择搭建本地大模型,也需要在此处进行相应的配置,确保 Ragflow 能够与本地模型进行通信和交互。不同的模型提供商可能有不同的配置参数和要求,详细信息请参考模型提供商的文档。
-
-
创建助理
-
等待知识库文件解析完成后,进入聊天界面。
-
点击新建一个助理,为助理命名并进行配置。初始配置可以先使用默认值,后续根据实际需求进行调整。
-
在模型设置页面,选择之前添加的模型提供商的模型,并根据需要调整模型参数,如:
- 温度(Temperature):控制模型输出的随机性,取值范围通常在 0 到 1 之间。较高的值(如 0.90)会使输出更具随机性,而较低的值会使输出更确定性。
- Top P:用于控制模型在生成响应时考虑的前几个概率最高的词元的比例。例如,Top P 值为 0.90 表示模型将考虑概率总和占前 90% 的词元。
- 存在处罚(Presence Penalty):对模型生成的新单词进行惩罚,以鼓励模型生成多样化的文本。取值范围一般在 0 到 1 之间,较高的值会增加模型生成新单词的可能性。
- 频率惩罚(Frequency Penalty):对模型生成中频繁出现的单词进行惩罚,以避免重复。取值范围通常在 0 到 1 之间,较高的值会减少频繁单词的出现。
- 最大 token 数(Max Tokens):限制模型生成的响应中包含的最大词元数量,以控制响应的长度。例如,设置为 512 表示模型生成的响应最多包含 512 个词元。
-
五、使用知识库
完成上述配置后,即可与创建的助理进行聊天。在聊天输入框中输入问题,助理将根据知识库中的内容和配置的模型进行回答,为您提供准确、有用的信息。例如,您可以询问知识库中关于特定主题的知识、请求对某个问题的解释或寻求相关的建议等。
六、注意事项
- 在整个搭建和使用过程中,密切关注系统的运行状态和日志信息。如果遇到任何问题,如服务启动失败、文件解析错误、模型响应异常等,及时查看日志文件(通常位于 Ragflow 项目目录下的特定日志文件夹中),根据错误提示进行排查和解决。
- 定期备份知识库数据,以防止数据丢失或损坏。可以制定定期备份计划,将知识库数据备份到外部存储设备或云端存储服务中。
- 关注 Ragflow 官方文档和社区论坛,获取最新的版本更新、功能改进和问题解决方案。官方文档可能会不断更新,提供更详细的配置说明和最佳实践,社区论坛则是与其他用户交流经验、分享问题和解决方案的好去处。