当前位置: 首页 > article >正文

浅谈人工智能之基于ollama本地大模型结合本地知识库搭建智能客服

浅谈人工智能之基于ollama本地大模型结合本地知识库搭建智能客服

摘要

随着人工智能技术的飞速发展,基于大型语言模型(LLMs)的智能客服系统逐渐成为提升企业服务质量和效率的关键工具。然而,对于注重数据隐私和安全的企业而言,使用云服务可能会引发数据泄露的风险。因此,构建基于Ollama的本地大模型,并结合自建知识库的智能客服系统,成为了一种理想的选择。本文档旨在提供一个详尽的指南,介绍如何利用Ollama搭建一个高效、安全且定制化的本地智能客服系统。

1. 引言

1.1 Ollama简介

Ollama是一个开源项目,它使得在本地部署和运行大型语言模型变得简单易行。通过Ollama,用户可以绕过云服务,直接在本地服务器或设备上运行包括Llama系列在内的多种预训练模型,从而保障数据的隐私性和可控性。
关于ollama的安装,可以参考之前的文章:根据操作系统进行选择部署
浅谈人工智能之Windows:基于ollama进行本地化大模型部署
浅谈人工智能之Linux:基于ollama进行本地化大模型部署

1.2 本地知识库的重要性

本地知识库是指存储于企业内部服务器上的、专门用于智能客服系统的数据集合。它包含了公司的产品信息、常见问题解答、客户服务政策等,是智能客服系统精准回答用户提问的基础。相较于云端知识库,本地知识库能够更好地控制数据访问权限,防止敏感信息外泄。

2. 系统架构概述

2.1 技术栈

● Ollama:本地模型运行环境。
● LangChain:LangChain是一项革新性的技术应用,它专注于优化和提炼信息的核心价值。通过先进的自然语言处理算法,LangChain能够对文本进行深度分析,巧妙地剥离冗余部分,而精心保留最为关键的信息要素。这一过程不仅提升了信息的密度与质量,还确保了内容传达的精准度与效率,同时忠实地维护了原文的风格、语气及逻辑框架。其结果是一种更为精炼、有力且易于消化的信息表达形式,尤其适用于学术交流、专业报告及知识总结等领域,展现了技术与人文科学的完美融合,为读者带来既深刻又优雅的阅读体验。
● Embedding:嵌入技术是机器学习和自然语言处理领域中的一项核心技术,主要用于将高维稀疏数据(如文本、图像特征等)转换为低维稠密向量,这样的向量能够捕捉原始数据的语义信息和模式。这一转换过程使得数据在向量空间中具备了计算相似度的能力,从而便于在诸如推荐系统、语义搜索、机器翻译等多种应用中使用。

2.2 工作流程

  1. 模型训练:对知识库模型进行简单训练。
  2. 用户提问:通过前端界面提交问题。
  3. 请求处理:API Gateway接收并解析请求。
  4. 知识检索:查询本地知识库获取相关信息。
  5. 模型推理:Ollama根据输入的问题和知识库信息生成回复。
  6. 结果返回:回复通过API Gateway返回前端展示给用户。

3. 应用实例

3.1 模型下载

我们这里用到的模型使用:bce-embedding-vase_v1
下载路径(国内请使用这个环境):
BCE模型下载
如果大家跟外网是互通的,则可以通过git命令进行下载,如果是不互通的,则需要通过其他方式进行下载,我这边由于网络不通是在页签“Files and versions”界面安装他的目录一个个下载到本地
在这里插入图片描述
本地目录结构,模型存放地址:D:\vec\bce-embedding-vase_v1
在这里插入图片描述

3.2 构建本地知识库

  1. 选择文档内容:假设我有一个常见的FAQ文档需要生成知识库,知识库的内容如下:

问题1:git克隆失败-文件名太长
答案1:查看错误信息中是否包含关键字:Filename too long
问题2:git克隆失败-access_token失效
答案2:查看错误信息中是否包含关键字:Authentication failed for、 Access denied、invalid_token。解决方法:重新生成一个有效的access_toekn
问题3:git克隆失败-网络超时
答案3:查看错误信息中是否包含关键字:Connection timed out、Unknown error、Could not resolve host等。可能是执行机与yfgitlab网络不通或者网络波动导致,执行机dns配置有问题,不能访问yfgitlab的域名
问题4:git克隆失败-CI站点上配置的工程信息异常
答案4:查看错误信息中是否包含关键字:FETCH_HEAD error: Sparse checkout leaves no entry on working directory。可能原因:1)、工程信息中填写的脚本路径斜杠反了,比如不正确的写法:TEST\Stability\ITC,正确的写法:TEST/Stability/ITC;2)多个脚本路径用英文分号拼接,不能使用其他符号,比如TEST/PI/SD,TEST/PI/COMMON使用逗号拼接的是异常的
问题5:git克隆失败-‘git’ 不是内部或外部命令,也不是可运行的程序
答案5:1、检查下执行机上是否安装了git;2、可能链接jenkins的时候没有安装git,链接成功后才安装的git,联系工厂客服删除节点,用户重新部署执行机。
问题6:git克隆失败-分支名中带有.号
答案6:查看错误信息中是否包含关键字:Invalid argument Cloning into 。换一个没有.号的分支名
问题7:git克隆失败-git链接不是以.git结尾
答案7:查看错误信息中是否包含关键字:没有找到项目名称(xxx)对应的项目id。需要填写完整的git地址
问题8:git克隆失败-out of memory
答案8:查看错误信息中是否包含关键字:out of memory、No space left on device。用户需要检查下执行机硬盘空间

  1. 向量数据库生成代码
# coding=utf-8
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.embeddings import  HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.llms import Ollama
from langchain.chains import RetrievalQA


# 导入文本
loader = TextLoader(r"D:\vec\document\test.txt")
# 将文本转成 Document 对象
data = loader.load()
print(f'documents:{
     len(data)}')

# 初始化加载器
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=0)
# 切割加载的 document
split_docs = text_splitter.split_documents(data)
print("split_docs size:",len(split_docs))

model_name = r"D:\vec\bce-embeddin

http://www.kler.cn/news/312256.html

相关文章:

  • 2024最新版,人大赵鑫老师《大语言模型》新书pdf分享
  • 嵌套函数的例子(TypeScript)
  • QT QObject源码学习(二)
  • Netty源码解析-请求处理与多路复用
  • uniapp中使用picker-view选择时间
  • vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
  • 信息收集常用指令
  • PDF样本册如何分享到朋友圈
  • Qt自定义信号、带参数的信号、lambda表达式和信号的使用
  • elemntui el-switch 在表格内改变状态失败,怎么复原???
  • 一文读懂SpringCLoud
  • 【RabbitMQ 项目】服务端数据管理模块之交换机管理
  • prometheus监控linux虚拟机
  • 操作系统迁移(CentOs -> Ubuntu)
  • Wacom 和 Splashtop 携手共赴 IBC 2024 展会,宣布向欧洲市场隆重推出 Wacom Bridge
  • XSS漏洞挖掘利用总结(附个人常用payload)
  • MyBatis 分批次执行(新增,修改,删除)
  • ROS激光雷达介绍
  • WPF中图片的宫格显示
  • TPDO触发条件如何满足?
  • AI学习指南深度学习篇-Adam的Python实践
  • 如何配置和使用自己的私有 Docker Registry
  • python的6种常用数据结构
  • 3.大语言模型LLM的公开资源(API、语料库、算法库)
  • Python中的树与图:构建复杂数据结构的艺术
  • 图论三元环(并查集的高级应用)
  • 天润融通创新功能,将无效会话转化为企业新商机
  • 青柠视频云——视频丢包(卡顿、花屏、绿屏)排查
  • Python 集合的魔法:解锁高效数据处理的秘密
  • 工厂模式(一):简单工厂模式