基于本地知识库的问答机器人langchain-ChatGLM

原文:基于本地知识的问答机器人langchain-ChatGLM - 知乎

背景

ChatGPT火了后,各种大语言模型(LLM)模型相继被发布,完全开源的有ChatGLM、BLOOM、LLaMA等。但是这些模型学到的知识是滞后的(比如ChatGPT的知识是截止到2021年),并且这些知识是通用领域的。

在实际应用场景中,除闲聊机器人外,大多数机器人是为了完成特定任务的。比如数字人虚拟主播、某公司的智能客服等都需要围绕具体的业务来进行问答。如何将具体业务知识融合到大语言模型里,是问答机器人落地应用需要考虑的一个重要问题。

一、langchain-ChatGLM简介

langchain-ChatGLM是一个基于本地知识的问答机器人,使用者可以自由配置本地知识,用户问题的答案也是基于本地知识生成的。github链接为:GitHub - imClumsyPanda/langchain-ChatGLM: langchain-ChatGLM, local knowledge based ChatGLM with langchain | 基于本地知识的 ChatGLM 问答。

二、以淘宝衣服为例,测试问答效果

以淘宝衣服属性构建本地知识,测试问答效果。将淘宝链接为https://detail.tmall.com/item.htm?abbucket=6&id=656544342321&ns=1&spm=a230r.1.14.48.b3f84f64A9YLJ0的"宝贝详情"和"尺码推荐"整理成《local_knowledge_clothing_describe.txt》,内容如下:

身高:160-170cm, 体重:90-115斤,建议尺码M。
身高:165-175cm, 体重:115-135斤,建议尺码L。
身高:170-178cm, 体重:130-150斤,建议尺码XL。
身高:175-182cm, 体重:145-165斤,建议尺码2XL。
身高:178-185cm, 体重:160-180斤,建议尺码3XL。
身高:180-190cm, 体重:180-210斤,建议尺码4XL。
身高:180-195cm, 体重:210-230斤,建议尺码5XL。
面料分类:涤纶
图案:几何图案
领型:连帽
衣门襟:拉链
颜色:黑色302春秋款(斜插口袋) 深灰色302春秋款(斜插口袋) 蓝色302春秋款(斜插口袋) 米色302春秋款(斜插口袋) 黑色303春秋款(工装口袋) 深灰色303春秋款(工装口袋) 蓝色303春秋款(工装口袋) 黑色303(冬季棉衣款加棉加厚) 深灰色303(冬季棉衣款加棉加厚) 蓝色303(冬季棉衣款加棉加厚) 黑色302(冬季棉衣款加棉加厚) 米色302(冬季棉衣款加棉加厚) 黑色303春秋款+黑色302春秋款 深灰色303春秋款+黑色302春秋款
袖型:收口袖
适用季节:春秋
袖长:长袖
厚薄:常规
适用场景:其他休闲
衣长:常规款
版型:宽松型
款式细节:假两件
工艺处理:涂层
适用对象:青少年
面料功能:防风
穿搭方式:外穿
材质成分:聚酯纤维100% 

加载《local_knowledge_clothing_describe.txt》作为本地知识,问答效果如下所示:

用户:身高173,体重144斤,选什么尺寸
客服您的身高为173厘米,体重为144斤,建议选择尺码为XL。这个尺寸适用于身高在170-178厘米之间,体重在130-150斤之间的人。选择XL尺寸可以确保衣服能够合适地遮盖住身体,同时不会过小或过大,确保穿着舒适。
用户:衣服是什么材质
客服: 衣服的材质成分为聚酯纤维100%

从测试的问答效果上来看,满足了基本的要求,具体情况仍需要更多的实测结果来说明。

三、langchain-ChatGLM的原理

先上图,langchain-ChatGLM的架构如下图所示:

图1、langchain-ChatGLM的架构

3.1、从本地知识中获取与用户query相关的context

通过Faiss搜索得到与query_embedding关系最紧密的Top K个Document,将这些Document的内容按换行符拼起来作为query的context。举例说明如下图所示:

图2、通过Faiss搜索得到query相关的context

3.2、用query和context填充模版得到prompt

模版示例如下,可根据问答效果自行修改

prompt_template = """基于以下已知信息,简洁和专业的来回答用户的问题。不允许在答案中添加编造成分。已知内容:{context}问题:{query}"""

将context和query填充到模版得到的prompt,加它输入给ChatGLM-6B就能生成response。

四、langchain-ChatGLM使用中

五、问答需要优化的环节

个人认为langchain-ChatGLM是一种使用本地知识进行问答的框架,它的实际问答效果与下面两个问题相关:

1、如何通过得到query相关性高的context,即与query相关的Document尽可能多的能被召回;

2、如何让LLM基于query和context得到高质量的response。

5.1、让query相关的Document尽可能多的被召回

将本地知识切分成Document的时候,需要考虑Document的长度、Document embedding质量和被召回Document数量这三者之间的相互影响。在文本切分算法还没那么智能的情况下,本地知识的内容最好是已经结构化比较好了,各个段落之间语义关联没那么强。Document较短的情况下,得到的Document embedding的质量可能会高一些,通过Faiss得到的Document与query相关度会高一些。

使用Faiss做搜索,前提条件是有高质量的文本向量化工具。因此最好是能基于本地知识对文本向量化工具进行Finetune。另外也可以考虑将ES搜索结果与Faiss结果相结合。

5.2、基于query和context让LLM得到高质量的response

有了query相关的context后,如何让LLM生成高质量的response,也是一个非常重要的问题。优化的点有两个:①、尝试多个的prompt模版,选择一个合适的,但是这个可能有点玄学;②、用与本地知识问答相关的语料,对LLM进行Finetune。

编辑于 2023-04-20 19:08・IP 属地浙江

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28801.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

诞生的新职业——提示工程师,年薪已经达到了25万-33万美元

提示工程,可以说是玩转ChatGPT、DALLE 2等等这类AI模型的「必修课」。 但这个「提示」(prompt)具体要怎么写,多少都有些玄学在里面…… 也难怪由此诞生的新职业——提示工程师,年薪已经达到了25万-33万美元。 就在前不…

安全运营场景下的语言模型应用

接上篇,将安全运营的定义为“使用算法能力提取关键信息”,以此来规避算法误判漏判带来的责任问题,同时提升运营人员的工作效率。在这篇尝试对语言模型的使用方法做一下讨论和分享。 1. 语言模型 先聊一下语言模型。(这里刻意规避…

聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜

今日要闻:ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜;亚马逊游戏部门百名员工被裁;国内一公司推出太空葬;苹果将在印度国金融中心开设零售店 ChatGPT 停止 Plus 付费 4 月 5 日消息,ChatGPT 目前…

chatgpt赋能python:Python读取CSV:简单易懂的教程

Python读取CSV:简单易懂的教程 Python是一种功能强大的编程语言,它可以处理各种不同类型的数据。当需要处理大量的数据时,CSV文件就是一种非常方便的处理方式。这篇文章将介绍如何使用Python来读取CSV文件,帮助您更高效地进行数据…

chatgpt赋能python:Python如何选取CSV某几列数据

Python如何选取CSV某几列数据 在数据处理过程中,CSV是一种非常常见的数据文件类型。CSV文件中的数据由逗号分隔的值(Comma-Separated Values)组成。处理CSV数据的任务之一是从CSV文件中选择特定的列数据,以进行数据分析或处理。在…

chatgpt赋能python:Python实现CSV文件只取某两列的方法详解

Python实现CSV文件只取某两列的方法详解 介绍 CSV是一种常见的数据格式,通常使用逗号或分号分隔不同的字段。在处理CSV文件时,我们经常需要只提取其中的某些列,以便进行进一步的分析或处理。使用Python语言,可以很方便地实现这一…

postman读取csv文件

postman读取csv文件 (1)创建登录接口,传入用户名和密码 (2)创建读取的csv文件 (3)运行脚本读取csv文件内容 (4)读取csv文件结果 备注: 1.需要将csv文件转换为utf-8编码格式的…

.csv文件与数据的读取

.csv文件的介绍 .csv文件(comma seperated value:逗号分隔值),是一种常见的用来存储一维或者二维的数据文件,它使用换行符与逗号存储数据,实际上是一种txt文件。 如图,左侧为原二维数据表格,右…

csv文件读取

csv文件读取 文章目录 csv文件读取第一种方式:列表第二种方式:字典 CSV文件写入第一种方式:列表第二种方式:字典 第一种方式:列表 示例: import csv with open("stock.csv",r,encodingGBK) as …

chatgpt赋能python:Python如何导入CSV的完全指南

Python如何导入CSV的完全指南 CSV是一种常见的数据格式,在数据分析和处理中使用广泛。使用Python,我们可以轻松地读取、处理和分析CSV文件。在本指南中,我们将介绍如何使用Python导入CSV文件。 什么是CSV文件? CSV文件是按照逗…

chatgpt赋能python:Python如何保存数据到CSV文件中

Python如何保存数据到CSV文件中 作为一门广泛应用于数据分析和机器学习的编程语言,Python提供了许多方法来处理和保存数据。其中之一是将数据保存到CSV文件中。本篇文章将介绍如何使用Python保存数据到CSV文件,在此过程中,我们会提到一些有用…

读取csv数据结果包含“\t”的问题

1、实例 1、这个是我手动创建的csv文档,内容是从Word复制粘贴到表格 2、这是我读取数据用的代码 import csvfile open(r"C:\Users\Administrator\Desktop\cs1.csv","r",errors"ignore",encoding"utf-8") csv_file csv…

【使用ChatGPT自动化】批量转换.csv文件为.xlsx文件

第1次提问: 我:我想使用Python批量转换.csv文件为.xlsx文件,请你提供代码 它:好的,以下是使用Python批量转换.csv文件为.xlsx文件的代码: import os import glob import pandas as pddef csv_to_xlsx(pa…

chatgpt赋能python:Python加速读取CSV文件的方法

Python加速读取CSV文件的方法 介绍 CSV文件是一种常见的数据格式,因为其简单和易于理解,被广泛应用于数据处理和数据分析。然而,在处理大型CSV文件时,读取速度会成为问题。Python作为一种高级编程语言,具有易学易用的…

C# 读取CSV文件

上一篇写到了读取文本文件的各种方式,这次我们来读取一下CSV文件; CSV文件在日常工作中用到的也很多,很多时候我们导出大量表格数据的时候,EXCEL无法存储,CSV就是很不错的选择; CSV文件其实也是一种文本文…

C++读取CSV文件中的数据

CSV文件是一种文本文件&#xff0c;表示的是Excel表格数据&#xff0c;可以由办公软件Excel轻松生成。为了在程序中使用Excel数据&#xff0c;就需要以文本的形式操作Excel数据&#xff0c;具体就是操作CSV表格数据。如下所示&#xff0c; #include <iostream> #include …

chatgpt赋能python:Python转CSV:一种简便的数据格式转换方法

Python 转 CSV&#xff1a;一种简便的数据格式转换方法 在本文中&#xff0c;我们将介绍如何使用 Python 将数据从其他数据格式转换为 CSV 格式。CSV 是一种广泛使用的数据格式&#xff0c;它非常适合用于存储大规模数据&#xff0c;并能够被许多应用程序和编程语言读取和处理…

30、【backtrader股票策略】《151 trading strategies》中的支撑与阻力策略(support and resistance)

在《151 trading strategies》中的3.14节,提到了一个关于支撑与阻力的策略,在本策略中,将尝试在全A股中进行测试这个策略,本节主要包含四个部分: 策略逻辑的说明策略实现代码策略测试结果策略绩效的简单分析策略逻辑 我们使用全市场的A股日数据进行测试,只做多头。 资金…

谷歌股票“打折”卖,一股换20股

西雅图IT圈&#xff1a;seattleit 【今日作者】 Powerball选号机 身体和灵魂总有一个要 走在买PowerBall的路上 PART 0 1 . 本周二谷歌母公司Alphabet宣布董事会通过了以1&#xff1a;20的比例拆股计划。 具体实施中&#xff0c;在22年7月1日收盘时拥有谷歌股票的股东&#xff…

如何使用 Yahoo! Finance stock API 获取股票数据

本站曾介绍过&#xff0c;通过代码添加雅虎财经的股票走势图到自己网站的方法&#xff08;添加美国股市 &#xff0c;添加沪深股市 &#xff09;&#xff0c;调用的是一张图片。今天在德馨 网站&#xff0c;看到了从雅虎财经频道获取股票数据的API&#xff08;Yahoo! Finance s…