RAGFlow部署与使用(开源本地知识库管理系统,包括kibana配置)

embedded/2025/3/18 14:17:11/

RAGFlow__0">一、RAGFlow 简介

戳我访问RAGFlow

RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。它可以给我们搭建本地知识库,将用户的知识文档上传到RAGFlow后,通过文档切分、向量入库,在用户向大语言模型提问后,从数据库中检索与问题相关的文档,把查找到的知识库数据输入到对话大模型中再生成答案输出。

RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。它主要适用于需要动态生成内容且依赖外部知识库的场景,例如智能客服、文档生成、数据分析等。

此为系统架构图

在这里插入图片描述

RAGFlow_10">二、部署RAGFlow

预先工作

安装前确保已经安装好了Docker

确保 vm.max_map_count 不小于 262144

sysctl vm.max_map_count

如果 vm.max_map_count 的值小于 262144,可以进行重置

sudo sysctl -w vm.max_map_count=262144

改动会在下次系统重启时被重置。如果希望做永久改动,还需要在 /etc/sysctl.conf 文件里把 vm.max_map_count=262144 再相应更新一遍,:

vi /etc/sysctl.conf

修改后保存。

  1. 克隆仓库
git clone https://github.com/infiniflow/ragflow.git

Docker方式

RAGFLOW_IMAGE__RAGFlow__v0160__40">1. 修改 .env 文件,设置 RAGFLOW_IMAGE 来下载 RAGFlow 镜像的 v0.16.0 完整发行版。

默认的是 v0.16.0-slim 版本的,这个版本没有内置的内嵌模型,可能不太方便,建议安装完整发行版,即删除后面的-slim。

cd ragflow/docker
vi .env

修改 RAGFLOW_IMAGE=docker.1ms.run/infiniflow/ragflow:v0.16.0,注意这里的docker镜像代理也可以改成其他的。

RAGFlow__50">2. 启动 RAGFlow ,查看启动日志

docker compose -f docker-compose.yml up -d
docker logs -f ragflow-server

出现以下界面提示说明服务器启动成功

     ____   ___    ______ ______ __/ __ \ /   |  / ____// ____// /____  _      __/ /_/ // /| | / / __ / /_   / // __ \| | /| / // _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ //_/ |_|/_/  |_|\____//_/    /_/ \____/ |__/|__/* Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:9380* Running on http://x.x.x.x:9380INFO:werkzeug:Press CTRL+C to quit

访问服务器对应的 IP 地址并登录 RAGFlow。

可以在模型提供商中选择接入一些开源的平台,比如 GPUStack 中部署的模型,即可使用LLM。

在这里插入图片描述

3. kibana 配置(可视化查看向量数据库 ElasticSearch 相关存储的数据)

main 分支的 kibana 相关的docker-compose被删除了,不知道什么原因。

我们在 ragflow/docker 下 创建两个文件 docker-compose-admin-tool.yml 和 init-kibana.sh ,然后docker compose运行,即可在 6601 端口使用 kibana。
默认用户名密码在 .env 文件中配置, 用户名密码:rag_flow,infini_rag_flow

# docker-compose-admin-tool.yml 
include:- path: ./docker-compose.ymlenv_file: ./.envservices:kibana:image: kibana:${STACK_VERSION}container_name: ragflow-kibanaenvironment:ELASTICSEARCH_USERNAME: ${KIBANA_USER}ELASTICSEARCH_PASSWORD: ${KIBANA_PASSWORD}ELASTICSEARCH_HOSTS: "http://es01:9200"ports:- ${KIBANA_PORT}:5601depends_on:es01:condition: service_healthykibana-user-init:condition: service_completed_successfullynetworks:- ragflowkibana-user-init:image: appropriate/curldepends_on:es01:condition: service_healthyvolumes:- ./init-kibana.sh:/app/init-kibana.shenvironment:- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}- KIBANA_USER=${KIBANA_USER}- KIBANA_PASSWORD=${KIBANA_PASSWORD}command: /bin/sh -c "sh /app/init-kibana.sh"networks:- ragflowrestart: 'no'
# init-kibana.sh
#!/bin/bash# unset http proxy which maybe set by docker daemon
export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY=""echo "Elasticsearch built-in user: elastic:${ELASTIC_PASSWORD}"# Wait Elasticsearch be healthy
while true; doresponse=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" "http://es01:9200")exit_code=$?status=$(echo "$response" | tail -n1)if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; thenecho "Elasticsearch is healthy"breakelseecho "Elasticsearch is unhealthy: $exit_code $status"echo "$response"sleep 5fi
done# Create new role with all privileges to all indices
# https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html#privileges-list-indices
echo "Going to create Elasticsearch role own_indices with all privileges to all indices"
while true; doresponse=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" -X POST http://es01:9200/_security/role/own_indices -H 'Content-Type: application/json' -d '{"indices": [{"names": ["*"], "privileges": ["all"]}]}')exit_code=$?status=$(echo "$response" | tail -n1)if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; thenecho "Elasticsearch role own_indices created"breakelseecho "Elasticsearch role own_indices failure: $exit_code $status"echo "$response"sleep 5fi
doneecho "Elasticsearch role own_indices:"
curl -u "elastic:${ELASTIC_PASSWORD}" -X GET "http://es01:9200/_security/role/own_indices"
echo ""PAYLOAD="{\"password\": \"${KIBANA_PASSWORD}\", \"roles\": [\"kibana_admin\", \"kibana_system\", \"own_indices\"], \"full_name\": \"${KIBANA_USER}\", \"email\": \"${KIBANA_USER}@example.com\"}"echo "Going to create Elasticsearch user ${KIBANA_USER}: ${PAYLOAD}"# Create new user
while true; doresponse=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" -X POST http://es01:9200/_security/user/${KIBANA_USER} -H "Content-Type: application/json" -d "${PAYLOAD}")exit_code=$?status=$(echo "$response" | tail -n1)if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; thenecho "Elasticsearch user ${KIBANA_USER} created"breakelseecho "Elasticsearch user ${KIBANA_USER} failure: $exit_code $status"echo "$response"sleep 5fi
doneecho "Elasticsearch user ${KIBANA_USER}:"
curl -u "elastic:${ELASTIC_PASSWORD}" -X GET "http://es01:9200/_security/user/${KIBANA_USER}"
echo ""exit 0

RAGFlow_197">三、RAGFlow知识库构建相关

创建好知识库后,配置需要选择对应的文档语言以及嵌入模型(文档向量化用)。

在这里插入图片描述

可以打开知识图谱

在这里插入图片描述

解析方法需要选择对应的类型

在这里插入图片描述

正确配置知识库对于未来的AI聊天至关重要。例如,选择错误的嵌入模型或分块方法会导致聊天中意外的语义丢失或不匹配的答案。

RAGFlow提供了多个分块模板,以方便对不同布局的文件进行分块,并确保语义完整性。在Chunk方法中,您可以选择适合文件布局和格式的默认模板。下表显示了每个支持的区块模板的说明和兼容的文件格式:

模板描述文件格式
General文件将根据预设的块标记编号连续分块。DOCX, EXCEL, PPT, PDF, TXT, JPEG, JPG, PNG, TIF, GIF
Q&AEXCEL, CSV/TXT
ManualPDF
TableEXCEL, CSV/TXT
PaperPDF
BookDOCX, PDF, TXT
LawsDOCX, PDF, TXT
PresentationPDF, PPTX
PictureJPEG, JPG, PNG, TIF, GIF
One整个文档被分块为一个。DOCX, EXCEL, PDF, TXT

在这里插入图片描述


http://www.ppmy.cn/embedded/173614.html

相关文章

本地部署Deep Seek-R1,搭建个人知识库——笔记

目录 一、本地部署 DeepSeek - R1 1:安装Ollama 2:部署DeepSeek - R1模型 3:安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1:安装Ollama 1.打开Ollama下载安装 未科学上网,I 先打开迅雷再下…

css模拟雷达扫描动画

<div class"radar-scan"><div class"radar-container" /></div> 样式&#xff1a; .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…

为wordpress核心functions文件瘦身

在wordpress主题开发过程中&#xff0c;常会用到functions.php这个文件&#xff0c;通过这个文件&#xff0c;可以让wordpress主题变得很强大。但是随着&#xff0c;功能的越来越多functions文件也会变得越来越臃肿庞大。要修改起functions文件来&#xff0c;也就越麻烦。特别是…

Unity物理射线滤除某层

关键点&#xff1a;使用LayerMask&#xff0c;针对Physics里检测collider的射线&#xff08;raycast、OverlapSphere...&#xff09;都适用 1.使用layerMask过滤层 int ignoreLayer LayerMask.NameToLayer("IgnoreRaycast");// 获取要忽略的层 int layerMask ~(1…

Lisp语言的网络管理

Lisp语言在网络管理中的应用 引言 随着网络技术的迅猛发展和信息化进程的加速&#xff0c;网络管理的复杂性逐渐增加。网络管理员需要处理大量的数据&#xff0c;监控网络的各个方面&#xff0c;并进行故障排查。在众多编程语言中&#xff0c;Lisp以其独特的特性和灵活性&…

C# 分部类 详解

从C#2.0起支持分部类。 分部类&#xff1a;是一个类的多个部分&#xff0c;编译器可把它们合并成一个完整的类。 分部类的目的&#xff1a;将一个类的定义划分到多个文件中。通过分部类&#xff0c;由工具处理的文件可独立于开发者手动编码的文件。 1.1定义分部类 使用clas…

LightGBM + TA-Lib A股实战进阶:Optuna调优与Plotly可视化详解

LightGBM TA-Lib A 股实战进阶&#xff1a;Optuna 调优与 Plotly 可视化详解 本文系统讲解了 LightGBM 在 A 股市场的应用&#xff0c;涵盖模型构建、Optuna 参数调优及 Plotly 可视化。通过实战案例&#xff0c;帮助读者全面掌握相关技术&#xff0c;提升在金融数据分析与预测…

机器视觉最佳光源方案 = 目标特征最大化 + 干扰最小化 + 环境适应性 + 成本可控,机器视觉检测项目中工业光源方案设计原则

机器视觉的最佳光源方案需要根据具体应用场景、检测目标、环境条件以及系统需求来综合设计。以下是一些关键原则和考虑因素,可帮助确定最佳光源方案: 核心目标 突出检测特征:光源应最大化目标与背景的对比度,突出关键特征(如边缘、缺陷、颜色差异)。 消除干扰:减少环境光…