liuqianglong.com

本文介绍了通过Docker安装Dify,然后集成Ollama和XInference,并利用Dify快速搭建一个基于知识库问答的应用。

一、Dify简介

Dify是一款开源的大语言模型(LLM)应用开发平台,旨在帮助开发者快速构建和部署生成式AI应用。以下是Dify的主要功能和特点[1]:

  • 融合Backend as Service和LLMOps理念:Dify将后端即服务(Backend as Service)和LLMOps的理念结合,使开发者能够快速搭建生产级的生成式AI应用。
  • 支持多种模型:Dify支持数百种专有和开源的LLM模型,包括GPT、Mistral、Llama3等,能够无缝集成来自多家推理提供商和自托管解决方案的模型。
  • 直观的Prompt编排界面:Dify提供了一个直观的Prompt IDE,用于编写提示、比较模型性能,并向基于聊天的应用程序添加语音转换等附加功能。
  • 高质量的RAG引擎:Dify拥有广泛的RAG功能,涵盖从文档摄取到检索的一切,并支持从PDF、PPT等常见文档格式中提取文本。
  • 集成Agent框架:用户可以基于LLM函数调用或ReAct定义代理,并为代理添加预构建或自定义工具。Dify提供了50多种内置工具,如Google搜索、DELL·E、Stable Diffusion和WolframAlpha。
  • 灵活的流程编排:Dify提供了一个强大的可视化画布,用于构建和测试强大的AI工作流,使开发者可以直观地设计和优化他们的AI流程。
  • 全面的监控和分析工具:Dify提供了监控和分析应用日志和性能的工具,开发者可以根据生产数据和注释不断改进提示、数据集和模型。
  • 后端即服务:Dify的所有功能都附带相应的API,因此可以轻松将Dify集成到您自己的业务逻辑中。

二、Dify安装

拷贝Dify Github代码到本地[2]。

git clone https://github.com/langgenius/dify.git  

进入 dify 源代码的 docker 目录,拷贝环境变量。

cd dify/docker  
cp .env.example .env  

通过docker compose安装应用。

docker compose up -d  

进入ollama容器,启动qwen2:7b模型。

root@ip-172-31-30-167:~/dify/docker# docker pull ollama/ollama  
root@ip-172-31-83-158:~/dify/docker# docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always -e OLLAMA_KEEP_ALIVE=-1 ollama/ollama  
root@ip-172-31-83-158:~/dify/docker# docker exec -it ollama bash  
root@b094349fc98c:/# ollama run qwen2:7b  

三、Dify 添加Ollama模型问答

通过EC2的公网IP地址加上80端口,登录Dify主页,创建管理账户。

通过管理员账号登录。

点击用户-设置。

添加Ollama模型。

模型添加指南

  • 模型名称: qwen2:7b

  • 启动方式: 通过Ollama在本机启动

  • 访问地址: 本地IP地址

  • 端口号: 114341

特性说明

  • 技术基础: 利用YARN技术增强模型长度外推能力

  • 上下文支持: 最大支持 131,072 tokens

  • 使用建议:

  • 用户输入限制: 建议不超过 128,000 tokens

  • 输出限制: 最大输出为 6,144 tokens 请确保遵循上述指导以保障正常使用与正常输出效果。

点击 工作室-创建空白应用

创建“聊天助手”类型的应用,设置应用名称为Qwen2-7B,点击创建。

为应用设置提示词"你是一个人工智能助手",可以和Qwen2:7B进行对话测试,这里是和大模型本身进行对话,没有引入外部的知识库,后续会引入知识库比较回答的结果。

四、Dify 基于知识库问答

添加Xorbits Inference提供的模型。


添加了一个新的文本嵌入模型,命名为bge-m3。该模型已经部署在服务器上,可以通过访问http://172.31.30.167:9997来使用。此服务器地址为本地IP,因此可以确保网络和端口的可达性。此外,已经在本机上成功启动了XInference服务,并且bge-m3模型也已经准备就绪,可以开始进行文本嵌入任务。

部署重排模型 bge-reraker-v2-m3 指南

概述

本文档旨在指导如何在本地或远程服务器上部署重排模型 bge-reraker-v2-m3,并确保其通过网络和端口可达。

部署步骤

1. 环境准备

确保服务器 172.31.30.167 上已安装并启动了 XInference 服务。

2. 模型部署

在服务器上部署模型 bge-reraker-v2-m3。请参考上一篇文章中的详细步骤。

3. 网络配置

确保模型服务器的网络和端口配置正确,以便客户端可以通过 http://172.31.30.167:9997 访问模型。

4. 测试连接

在部署完成后,进行网络连接测试,确保客户端能够成功连接到模型服务器。

注意事项

  • 请确保服务器的 IP 地址和端口号正确无误。

  • 如果服务器部署在其他机器上,请确保网络连接和端口配置正确。

  • 参考文档应详细说明模型的启动和配置步骤。

总结

通过上述步骤,您可以成功部署并访问重排模型 bge-reraker-v2-m3。确保遵循所有步骤和注意事项,以保证模型的正常运行和访问。

查看系统默认设置。

点击“知识库”-“导入已有文本”-“上传文本文件”-选择《促进和规范数据跨境流动规定》的文档。

导入成功后,设置文本检索方式,开启Rerank模型,选择bge-reranker-v2-m3模型,开启默认的Score阈值为0.5(即文本匹配度低于0.5分时,不会召回,不会添加到大模型的上下文中)。

在之前的聊天应用中,添加上面创建的知识库,重新询问大模型相同的问题,可以看到模型结合知识库进行了回答。

可以点击“Prompt日志”,查看日志文件,可以查看系统提示词,将匹配的知识库内容放在了<context></context>中。

点击创建的知识库-点击“召回测试”,可以输入一段文本,用与匹配知识库中的文本,匹配到的文本有一个权重分数,上面设置过的阈值是0.5,即大于这个分数的才会显示为“召回段落”。

一、Dify.AI 官网介绍

Dify.AI 是一个开源的 LLM 应用开发平台,它提供了从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,使得开发者可以轻松构建和运营生成式 AI 原生应用。Dify 以其易用性著称,比 LangChain 更易用,让开发者可以专注于创造应用的核心价值。

Dify Orchestration Studio

Dify Orchestration Studio 是一个可视化编排生成式 AI 应用的专业工作站,提供 All in One Place 的解决方案。它为开发者提供了健全的应用模版和编排框架,可以快速构建大型语言模型驱动的生成式 AI 应用,将创意变为现实,并支持按需无缝扩展,驱动业务增长。

二、Dify Docker Compose 部署指南

在部署 Dify 之前,请确保机器满足最低安装要求:CPU >= 2 Core,RAM >= 4 GiB。部署步骤如下:

  1. 克隆 Dify 代码仓库至本地环境。
  2. 根据系统上的 Docker Compose 版本选择合适的命令启动容器。
  3. 检查所有容器是否正常运行,并确认包括业务服务和基础组件在内的容器状态和端口映射。
  4. 更新 Dify 时,进入源代码的 docker 目录执行一系列命令,包括停止容器、拉取最新代码、重新启动容器等。
  5. 访问 Dify 的管理员初始化页面设置管理员账户,并访问 Dify 主页面。

三、通义千问模型 API 使用指南

通义千问开源系列模型提供了强大的自然语言处理能力,可以通过 API 接口调用模型,集成到业务中。使用前需要获取 API-KEY,并在模型概览中选择需要的模型。支持的调用方式包括 OpenAI Python SDK、DashScope SDK 或 HTTP 接口调用。 提供了丰富的场景示例,包括单轮对话、多轮对话和流式输出等,帮助用户快速理解和使用通义千问模型。