首页 > 其他分享 >使用RAG-GPT和Ollama搭建智能客服

使用RAG-GPT和Ollama搭建智能客服

时间:2024-05-25 17:33:20浏览次数:23  
标签:RAG Ollama 智能 文档 LLM GPT 问答

引言

前面介绍了使用RAG-GPT和OpenAI快速搭建LangChain官网智能客服。有些场景,用户可能无法通过往外网访问OpenAI等云端LLM服务,或者由于数据隐私等安全问题,需要本地部署大模型。本文将介绍通过RAG-GPTOllama搭建智能客服。

RAG技术原理介绍

在介绍RAG-GPT项目之前,我们首先要理解RAG的基本原理,RAG在问答系统中的一个典型应用主要包括三个模块,分别是:

  • Indexing(索引):将文档分割成chunk,编码成向量,并存储在向量数据库中。
  • Retrieval(检索):根据用户输入query和向量数据库中chunks语义相似度检索与问题最相关的前k个chunk,形成本次问答的上下文。
  • Generation(生成):将原始问题和检索到的chunks整合形成合适的prompt一起输入到LLM中,让LLM输出与上下文有关的回答。

智能文档的在线检索流程可以用一张图说明,上图中展示了一个完整的问答流程:

  • 用户发起query
  • 结合Bot实际应用场景,评估是否对query进行rewrite
  • Retieval模块根据query检索出Indexing中的相关的文档
  • 将召回的文档进行Reranking
  • 并且根据relevance score进行过滤,过滤掉低质的文档
  • 形成合适的Prompt后输入到LLM大模型中,最后生成答案

以上是对RAG技术的基本介绍,如果想深入了解技术细节可以参考这篇文章:RAG技术全解析:打造下一代智能问答系统

如何快速实现RAG的智能问答系统?

从RAG的原理介绍中可以看到要实现RAG整套架构还是存在一定工作量,需要构建索引、检索、集成LLM、Prompt优化等一系列模块,具有一定的难度。

基于此,RAG-GPT提供了一整套开源解决方案,旨在利用LLM和RAG技术快速搭建一个全功能的客服解决方案。该项目基于Flask框架,包括前端用户界面、后端服务和管理员控制台,为企业利用LLM搭建智能客服等对话场景提供了一个完整的自动化解决方案,可以帮助开发者快速搭建一个智能问答系统,且代码完全开源。
项目地址:https://github.com/open-kf/rag-gpt

RAG-GPT的基本架构

RAG-GPT关键特性:

  • 内置LLM支持:支持云端LLM和本地LLM。
  • 快速设置:只需五分钟即可部署生产级对话服务机器人。
  • 多样化知识库集成:支持多种类型的知识库,包括网站、独立URL和本地文件。
  • 灵活配置:提供用户友好的后台,配备可定制的设置以简化管理。
  • 美观的用户界面:具有可定制且视觉上吸引人的用户界面。

从特性可以知道,RAG相比一些商业收费的基于知识库的问答系统优势在于:

  • 易用、快速搭建。
  • 能自主管理知识库,避免商业秘密和知识产权泄漏。
  • 可以自主选择LLM模型和甚至扩展部署本地模型。

RAG-GPT 快速搭建智能问答系统

RAG-GPT的基本组成分为三部分:
- 智能问答后端服务
- 管理后台系统
- 用户使用的ChatBot UI。

下面,将介绍如何启动RAG-GPT项目和使用这三个模块,将RAG-GPT集成到你的网站只需要5个步骤:

1. 下载源代码,通过Git克隆RAG-GPT的GitHub仓库:
git clone https://github.com/open-kf/rag-gpt.git && cd rag-gpt
2.配置环境变量

[!NOTE]

我们首先需要下载&安装Ollama

然后下载Embedding模型LLM底座模型

Ollama启动默认绑定的IP:PORT127.0.0.1:11434,可以参考这篇文档修改默认配置。

Embedding模型我们选择mxbai-embed-large

LLM底座模型我们选择llama3

通过 ollama list 命令,可以看到下载的模型列表信息。

在启动RAG-GPT服务之前,需要修改相关配置,以便程序正确初始化。

cp env_of_ollama .env

.env 文件中的变量

LLM_NAME="Ollama"
OLLAMA_MODEL_NAME="xxxx"
OLLAMA_BASE_URL="http://127.0.0.1:11434"
MIN_RELEVANCE_SCORE=0.3
BOT_TOPIC="OpenIM"
URL_PREFIX="http://127.0.0.1:7000/"
USE_PREPROCESS_QUERY=0
USE_RERANKING=1
USE_DEBUG=0

对 .env 中的变量做以下调整:

  • 不要修改 LLM_NAME
  • 更新 OLLAMA_MODEL_NAME 设置,这里我们使用llama3,请求和响应的API接口,可以和OpenAI兼容
  • 更新 OLLAMA_BASE_URL 设置,我们修改为http://192.168.2.36:11434。注意,这里只需要配置IP:PORT,尾部不要加上 / 或者其它URI
  • 将 BOT_TOPIC 更改为你的机器人的名称。这非常重要,因为它将在构造Prompt中使用。我在这里要搭建关于OpenSSL Cookbook的智能客服,所以改写为OpenSSL
  • 调整 URL_PREFIX 以匹配你的网站的域名。
  • 有关常量的含义和用法的更多信息,可以查看 server/constant 目录下的文件。
3.执行启动命令

分别执行以下命令,即可启动。

[!NOTE]

请使用 Python 3.10.x 或以上版本。

先安装python依赖项

python3 -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

启动项目即可:

python create_sqlite_db.py
python rag_gpt_app.py

或者执行

sh start.sh

4.快速体验聊天效果
  • 启动服务后先打开管理后台。

首先要登录到管理后台,浏览器输入:http://192.168.2.36:7000/open-kf-admin/
登录账号为:admin 密码 :open_kf_AIGC@2024 .


  • 导入知识库,这里上传openssl-cookbook.pdf

在管理后台切换到 Source tab,从本地磁盘上传openssl-cookbook.pdf
然后点击 Upload 即可一键上传本地文档作为知识库。

上传本地文档到服务端后,初始状态是 Recorded。 服务端会通过一个异步任务解析上传的文档,并且计算Embedding,然后存入向量数据库。

服务端处理完后,可以看到上传文档的日志。

在admin页面,在管理后台上,上传文档展示的状态都是 Trained 。

浏览器打开http://192.168.2.36:7000/open-kf-chatbot/,就可以访问Bot了。

5.一键嵌入到网站

RAG-GPT提供了将聊天机器人嵌入到网站的方法,使得用户可以直接在网站上使用智能问答服务。
打开管理后台菜单切换到embed,复制两个代码即可实现一键嵌入,这两个代码片效果分别如下:一个是iframe嵌入一个聊天窗口,一个是在页面右下角点击弹出聊天窗口。
可以新建一个文本文件,将代码复制进去,用浏览器打开就可以看到嵌入效果了。

6.管理后台其他功能
  • 管理员可以通过仪表板查看用户的历史请求记录,以便进行分析和优化。

可以按照时间、用户查询聊天记录和修改问答对的答案以更符合自身需求。

  • 配置聊天对话的UI

用户可以定制化聊天对话框的风格,使其更符合自身网站的风格特性。

结语

RAG-GPT项目具备开源免费、易于部署集成、开箱即用和功能丰富的特点,为LLM大模型在特定领域的应用落地提供了一套企业级的解决方案。RAG-GPT已经支持本地文件知识库,集成国内LLM大模型等特性,使得RAG-GPT满足更多样化的需求。

关于我们

OpenIM是领先的开源即时通讯(IM)平台,目前在GitHub上的星标已超过13k。随着数据和隐私安全的重视以及信息技术的快速发展,政府和企业对于私有部署的IM需求急剧增长。OpenIM凭借“安全可控”的特点,在协同办公软件市场中占据了一席之地。在后AIGC时代,IM作为人机交互的首要接口,其价值愈发重要,OpenIM期待在此时代扮演更关键的角色。

基于这样的视角,我们最近开源了RAG-GPT项目,已被部分企业采用并持续完善中。
如果您对RAG-GPT感兴趣,可以访问以下链接了解更多信息:

项目地址: https://github.com/open-kf/rag-gpt

在线Demo: https://demo.rentsoft.cn/

我们的目标是改进文件管理功能,更有效地管理数据,并整合企业级知识库。欢迎大家在GitHub上Star并关注,支持我们的开源旅程。

开源说明:RAG-GPT采用Apache 2.0许可,支持免费使用和二次开发。遇到问题时,请在GitHub提Issue或加入我们的OpenKF开源社区群讨论。如果您需要更智能的客服系统,请与我们联系。

标签:RAG,Ollama,智能,文档,LLM,GPT,问答
From: https://blog.csdn.net/zhuyingxiao/article/details/139129601

相关文章

  • 【揭秘!在线ChatGPT神器,体验入口在此!】
    ......
  • CMU 15-445 Lecture #05: Storage Models & Compression笔记总结(上)
    这是cmu15-445第五节课程StorageModels&Compression的上半部分,主要包括StorageModels的内容,压缩部分下次再整理,学完这部分可以去做hw2的第一部分课程主页:CMU15-445/645::IntrotoDatabaseSystems(Fall2023)(有几张图片目前没上传,过两天补一下)DatabaseWorkloads......
  • 利用英特尔 Gaudi 2 和至强 CPU 构建经济高效的企业级 RAG 应用
    检索增强生成(RetrievalAugmentedGeneration,RAG)可将存储在外部数据库中的新鲜领域知识纳入大语言模型以增强其文本生成能力。其提供了一种将公司数据与训练期间语言模型学到的知识分开的方式,有助于我们在性能、准确性及安全隐私之间进行有效折衷。通过本文,你将了解到英特尔......
  • LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、A
    LLM大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)模型的推理过程是一个复杂函数的计算过程,这个计算一般以矩阵乘法为主,也就是涉及到了并行计算。一般来说,单核CPU可以进行的计算种类更多,速度更快,但一般都是单条计算;而显卡能进行的......
  • 折叠 MacBook 价格或比肩 Vision Pro;必应全球宕机波及 ChatGPT 丨RTE 开发者日报 Vol.
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,......
  • 来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析
    背景介绍前面介绍过有道QAnything源码解析,通过深入了解工业界的知识库RAG服务,得到了不少调优RAG服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源RAG服务RagFlow的完整实现流程,希望同样有所收获。项目概述框架设计首先依旧可以先......
  • Ollama+Open WebUI本地搭建大模型并发布公网分享好友体验AI交互
    文章目录前言1.运行Ollama2.安装OpenWebUI2.1在Windows系统安装Docker2.2使用Docker部署OpenWebUI3.安装内网穿透工具4.创建固定公网地址前言本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装OpenWebUI结合cpolar内网穿透软件,实......
  • GPT-4o使用教程,一篇教程解决你不会使用GPT-4o
    2024年5月最新GPT-4o模型使用教程和简介2024年5月13日,openai发布了最新的模型 GPT4o。很多同学还不知道如何访问GPT-4、GPT-4Turbo和GPT-4o等模型,这篇文章介绍如何在ChatGPT中访问GPT-4o,以及通过OpenAIAPI访问GPT-4、GPT-4Turbo和GPT-4o。一、什么是GPT-4o?GPT-4o......
  • SwiftUI中的手势(DragGesture拖拽手势及Drag动画组件)
    上一篇文章我们了解了如何使用.gesture修饰符和@GestureState属性包装器,让我们看看另一种常见的手势:DragGesture拖拽手势。下面先看个效果图:这个效果中,我们实现了一个Text文本,并添加了拖拽手势,可以拖动到屏幕的任意位置,松手后停留在目标位置,而非回到原来的起点位置。UI......
  • 使用RAG和文本转语音功能,我构建了一个 QA 问答机器人
    节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学.针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。汇总合集:《大模型实战宝典》(2024版)正式发......