社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

RAG系统落地工程实现 - 基于Docker的RAGFlow快速部署指南

蔡荔谈AI • 3 周前 • 58 次点击  

一、需求分析 & RAG框架选型

    对于中小企业来说,选择一个适合的 RAG(Retrieval-Augmented Generation,检索增强生成) 框架需要综合考虑以下因素:易用性成本部署灵活性功能完备性以及社区支持


    RAGFlow 提供了直观的界面和简化的工作流程,中小企业无需深厚的技术背景即可快速上手。它支持多种文档格式(如 PDF、Word、Excel 等)的智能解析和上传,用户只需上传文档即可构建知识库并进行问答,极大降低了使用门槛。

    开源RAG框架中,综合评价最高的就是RAGFlow。今天花一点时间介绍一个基于Docker的RAGFlow系统工程快速部署指南。

    二、安装Docker

    1. 访问 https://www.docker.com/ 下载Docker Desktop
    2. 双击安装包,按照向导完成安装
    3. 启动Docker Desktop,确认状态栏显示“Docker Desktop is running”

    说明:Docker是一个容器平台,它能将RAGFlow所需的所有组件(MySQL、Redis、ElasticSearch等)打包在一起,实现一键部署,避免复杂的环境配置。选择Docker是为了方便将来的运维,希望大家都要有相应的思维。

    在dockers的设置里找到Docker Engine,这个配置修改,目的是为了在国内的用户也可以通过镜像下载RAGflow在国外的image。

    三、下载并配置RAGFlow

    3.1 从GitHub获取RAGFlow代码

    方法1: 使用Git命令(推荐)

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

    方法2: 直接下载ZIP文件

    1. 访问 https://github.com/infiniflow/ragflow
    2. 点击绿色的"Code"按钮,然后选择"Download ZIP"
    3. 下载完成后解压到任意位置

    3.2 修改环境配置文件

    1. 找到刚下载的ragflow文件夹
    2. 进入ragflow/docker目录
    3. 用记事本打开.env文件
    4. 找到大约第81-84行的RAGFLOW_IMAGE相关内容
    5. 注释掉第81行(在行首添加#号)
    6. 取消第84行的注释(去掉行首的#号)

    这一步很重要,它将确保下载RAGFlow自带的embedding模型,用于将本地文档转换为向量表示。 7. 取消"HF_ENDPOINT"的镜像的注释(去掉行首的#号)

    四、使用Docker部署RAGFlow

    4.1 启动Docker

    双击桌面上的Docker Desktop图标,等待Docker完全启动(状态栏显示"Docker Desktop is running")

    4.2 【可选】配置Docker国内镜像源加速

    如果发现下载速度太慢,可以配置国内镜像源:

    1. 点击Docker Desktop右上角的设置图标(⚙️)
    2. 选择"Docker Engine"
    3. 在配置JSON中添加或修改"registry-mirrors"部分:
    {
      "registry-mirrors": [
        "https://registry.cn-hangzhou.aliyuncs.com",
        "https://mirror.baidubce.com"
      ],
      // 其他已有配置...
    }
    1. 点击"Apply & Restart"应用更改

    4.3 启动RAGFlow

    1. 打开CMD或PowerShell
    2. 进入RAGFlow的docker目录: cd 你的路径\ragflow\docker docker compose -f docker-compose.yml up -d [Image]
    3. 等待命令执行完成,当看到类似以下输出时表示安装成功:
    [+] Running 4/4
     ✓ Container ragflow-elasticsearch  Started ✓ Container ragflow-mysql          Started ✓ Container ragflow-redis          Started ✓ Container ragflow                Started

    注意:第一次安装可能需要较长时间,取决于网络状况和电脑性能,需要下载一个20G左右的镜像文件。安装完成后,以后只需启动Docker Desktop,RAGFlow就会自动启动,可以马上使用。

    五、配置RAGFlow

    5.1 创建账户与登录

    1. 打开浏览器,访问:http://127.0.0.1
    2. 第一次访问需要注册账号:
    • 输入用户名、邮箱和密码(邮箱不会验证,但需要记住账号信息)
    • 点击"Register"完成注册

    5.2 配置大语言模型

    1. 点击右上角的头像图标
    2. 选择"Settings"
    3. 在左侧菜单中选择"System Model Settings"
    4. 在"LLM"标签页中点击"Add"按钮
    5. 填写模型信息:
    • Name: 自定义名称(如"gpt-4")
    • Type: 选择模型提供商(如"OpenAI")
    • API Base: 填写API地址(OpenAI默认为"https://api.openai.com/v1")
    • API Key: 填入你的API密钥
    • Model: 选择具体模型(如"gpt-4"、"gpt-3.5-turbo"等)
  • 点击"Confirm"保存
  • 5.3 配置嵌入模型 (Embedding)

    1. 切换到"Embedding"标签页
    2. 点击"Add"按钮
    3. 填写模型信息:
    • Name: 自定义名称(如"embedding-ada")
    • Type: 选择"OpenAI"
    • Model: 选择"text-embedding-ada-002"或其他嵌入模型
  • 点击"Confirm"保存
  • 说明:RAGFlow支持多种大语言模型,包括OpenAI、Azure、Anthropic、DeepSeek、本地Ollama等。如果想使用本地模型,可以选择相应的模型提供商。

    六、创建知识库并上传文档

    6.1 创建知识库

    1. 在左侧菜单中点击"Knowledge Base"
    2. 点击右上角的"Create"按钮
    3. 填写知识库信息:
    • Knowledge Base Name: 给知识库起个名字(如"企业文档库")
    • Embedding Model: 选择刚才配置的嵌入模型
  • 点击"Confirm"创建知识库
  • 6.2 上传文档

    1. 在新创建的知识库页面,点击"+ Add file"按钮
    2. 选择要上传的文档(支持PDF、Word、Excel等格式)
    3. 文档上传后,会出现在文件列表中
    4. 点击文件右侧的"▶️"(解析)按钮开始处理文档
      5. 等待处理完成,状态变为"SUCCESS"

    提示:对于较大的文档,处理可能需要几分钟时间。处理过程中,RAGFlow会将文档分割成多个小块(Chunks)并创建向量索引。

    七、创建聊天助手

    7.1 创建助手

    1. 在上方的菜单中点击"聊天"
    2. 点击左上角的"新建助理"按钮
    3. 填写助手信息:
    • Name: 给助手起个名字(如"企业知识助手")
    • System Prompt: 设置系统提示语(定义助手的角色和行为)
    • Welcome Message: 设置欢迎语
    • Knowledge Base: 选择刚才创建的知识库
    • LLM: 选择要使用的大语言模型
  • 点击"Confirm"创建助手
  • 7.2 设置适合的口吻

    根据使用场景,可以在System Prompt中设置不同的口吻: 

    针对小学生的口吻:

    You are an explainer for primary school students.
    Use short sentences, vivid examples, and emojis when helpful.
    Always explain complex concepts in simple terms a child can understand.

    职场专业口吻:

    You are a professional corporate assistant answering in concise bullet points.
    Maintain formal language and focus on factual information.
    Highlight key takeaways that are relevant to business contexts.

    八、开始使用RAG系统

    创建完成后,你可以直接在浏览器中与RAG系统交互:

    1. 进入Chat Assistant页面
    2. 点击刚创建的助手
    3. 在输入框中输入问题,如"公司的年假政策是什么?"
    4. 系统会检索知识库中的相关信息并给出回答

    九、使用RAGAS评估RAG系统性能

    RAGAS是一个专门用于评估RAG系统质量的框架,它提供了四个核心指标来衡量系统性能:

    • Context Precision:检索内容的准确性
    • Context Recall:检索内容的完整性
    • Answer Relevancy:回答与问题的相关程度
    • Faithfulness:回答内容对检索内容的忠实度

    9.1 安装RAGAS

    pip install ragas datasets

    9.2 创建评估脚本

    创建一个名为evaluate_rag.py的文件,内容如下:

    from ragas.testset import TestsetGenerator
    from ragas.datasets import Dataset
    from ragas.embeddings import OpenAIEmbeddings
    from ragas.llms import OpenAI as RagasOpenAI
    from ragas import evaluate
    from ragas.metrics import context_precision, context_recall, answer_relevancy, faithfulness

    import pandas as pd

    sample = pd.DataFrame([
      {"question""公司年假政策是什么?""ground_truth""每年 15 天带薪年假"},
      {"question""周报包括什么内容?""ground_truth""本周工作、问题、进度、需要支持"}
    ])

    generator = TestsetGenerator.from_langchain(llm=RagasOpenAI(), embedding=OpenAIEmbeddings())
    dataset = generator.generate_with_ground_truth(sample)

    results = evaluate(dataset, [context_precision, context_recall, answer_relevancy, faithfulness])
    for m, score in results.items():
        print(f"{m}: {score*100:.2f}%")

    9.3 运行评估

    python evaluate_rag.py

    9.4 分析评估结果

    运行后,你将看到类似以下的输出:

    ===== RAGAS评估结果 =====
    context_precision: 83.45%
    context_recall: 76.92%
    answer_relevancy: 91.23%
    faithfulness: 87.86%
    总体性能得分: 84.87%
    ✅ 性能达标!
    • 低于80%的指标需要特别关注和改进
    • Context Recall低:可能表示重要信息未被检索出来,考虑调整Chunk大小
    • Faithfulness低:表示模型产生了"幻觉",考虑在系统提示中加强对事实准确性的要求
    • 先用一个20组对话的小样本做测试,在最后可以考虑一个100-200组对话的数据集做一个更完整的系统评估测试。

    十、完整项目结构

    一个典型的RAGFlow项目结构如下:

    ragflow-project/
    ├── docker/                    # Docker配置文件
    │   ├── docker-compose.yml     # Docker Compose配置
    │   ├── .env                   # 环境变量配置
    │   └── ...

    ├── app/                       # Python应用代码
    │   ├── main.py                # 主应用程序
    │   ├── requirements.txt       # 依赖项列表
    │   └── .env                   # 应用环境变量

    ├── evaluation/                # 评估脚本
    │   ├── evaluate_rag.py        # RAGAS评估脚本
    │   └── test_questions.csv     # 测试问题集

    ├── knowledge_base/            # 知识库备份(可选)
    │   ├── documents/             # 原始文档备份
    │   └── exports/               # 知识库导出文件

    ├── ui/                        # 自定义UI(可选)
    │   ├── index.html             # 前端页面
    │   ├── styles.css             # 样式文件
    │   └── app.js                 # 前端JavaScript

    └── README.md                  # 项目说明文档

    十一、常见问题解决

    11.1 Docker容器未正常启动

    症状:访问http://localhost无响应

    解决方法:

    1. 打开Docker Desktop,检查容器状态
    2. 如果有容器未启动,查看日志:
    docker logs ragflow
    1. 按照日志提示解决问题,或重新启动容器:
    docker compose -f docker-compose.yml restart

    11.2 文档处理失败

    症状:上传文档后状态显示"FAILED"

    解决方法:

    1. 检查文档格式是否受支持
    2. 确认文档不是加密的或有特殊保护
    3. 尝试将文档转换为PDF或TXT格式再上传

    11.3 检索效果不佳

    症状:系统无法找到明显应该在知识库中的信息

    解决方法:

    1. 点击Knowledge Base,进入知识库详情页
    2. 点击文档名称查看自动分割的Chunks
    3. 调整Chunk大小或手动编辑关键Chunks

    十二、总结与最佳实践

    12.1 系统部署最佳实践

    1. 版本锁定:使用特定版本标签(如v0.18.0)而非latest,避免自动更新导致不兼容
    2. 资源配置:为Docker分配足够资源(至少4GB内存)以确保系统稳定运行
    3. 定期备份:备份Docker卷中的数据,特别是ragflow-data和infinity-data目录
    4. 安全措施:在生产环境中部署时,配置反向代理和SSL证书,确保数据传输安全

    12.2 知识库优化最佳实践

    1. 文档预处理:上传前清理文档,移除不必要的页眉页脚、水印和装饰性内容
    2. 控制文档质量:确保知识库中的文档准确、最新,并定期更新过时内容
    3. 分块策略:根据文档类型选择合适的分块模板,文本密集型文档适合较小的块,表格型文档适合较大的块
    4. 手动优化:对重要文档中的关键Chunk进行手动编辑,添加关键词以提高检索准确性

    12.3 系统提示优化最佳实践

    1. 清晰指示:在系统提示中明确指导模型如何使用检索到的信息
    2. 处理未知问题:指导模型在无法从知识库找到答案时,明确告知用户"知识库中没有相关信息"
    3. 引用来源:要求模型在回答中注明信息来源,增加透明度
    4. 定制口吻:根据目标用户调整语言风格,如面向小学生、专业人士或管理层的不同表达方式

    12.4 性能评估最佳实践

    1. 持续评估:使用RAGAS定期评估系统性能,特别是在更新知识库或修改配置后
    2. 增量优化:基于评估结果有针对性地进行改进,而不是一次性大规模调整
    3. 用户反馈:收集真实用户的使用反馈,并将其纳入评估指标
    4. 维持基准:建立一套固定的测试问题集,用于比较不同版本或配置的性能变化

    通过遵循这些最佳实践,你可以构建一个高性能、可靠且用户友好的RAG系统,为企业提供高效的知识检索和智能问答能力。整个部署和配置流程只需1-2小时,但带来的效率提升却是长期的。


    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/182446
     
    58 次点击