《向量数据库指南》RAG 应用中的指代消解——解决方案初探

news2024/10/7 18:32:25

随着 ChatGPT 等大语言模型(LLM)的不断发展,越来越多的研究人员开始关注语言模型的应用。

其中,检索增强生成(Retrieval-augmented generation,RAG)是一种针对知识密集型 NLP 任务的生成方法,它通过在生成过程中引入检索组件,从已知的知识库中检索相关信息,并将这些信息与 LLM 的生成能力结合,从而提高生成的准确性和可靠性。这种方法可以用于实现各种知识密集型 NLP 任务,如问答、文摘生成、语义推理等。

本文将从解决优化 RAG 系统里的一个具体问题出发,通过展示使用 LLM Prompt Engineering 的方法,来解析传统 NLP 的问题。

01.

解决方案初探

开源项目 Akcio(https://github.com/zc277584121/akcio) 就是一套完整的 RAG 问答系统,用户导入各类私有专业知识,就可以构建专业领域的问答系统。

|Akcio 的架构图。专业知识是各类 Documents,通过 DataLoader 导入进 Store。在每次提问 Question 后,LLM 可以结合召回知识,加上 LLM 自身的自然语言生成能力,给出对应的回答。

举个例子,比如我们将一篇名为《2023 大模型落地进展趋势洞察报告》的文章,将它导入 Akcio,就可以问它这篇报告里的问题了,比如:

2023年,大模型行业的应用场景可以分为哪几类?

通过一些召回策略,在 Store 里召回出了《报告》中,与问题最相关的 3 条原文片段:

['在2023年,大模型行业的应用场景可分为生成和决策两类应用场景,决策场景预期业务值更高。',
'大模型行业的生成场景主要有对话交互,代码开发,智能体等。',
'NLP的应用场景有文本分类,机器翻译,情感分析,自动摘要等。']

很显然,最有用的片段是第一条,但没关系,Akcio 会把这 3 条都作为 context,去问 LLM,比如它是这样问的:

请根据下面知识回答问题:

知识:

在2023年,大模型行业的应用场景可分为生成和决策两类应用场景,决策场景预期业务值更高。
大模型行业的生成场景主要有对话交互,代码开发,智能体等。
NLP的应用场景有文本分类,机器翻译,情感分析,自动摘要等。

问题:

2023年,大模型行业的应用场景可以分为哪几类?

LLM 就可以给出合理的回答:

大模型行业的应用场景可以分为生成和决策两类应用场景。

这样的话整条链路就走通了。这套架构逻辑看似并不复杂,但如果深入到开发过程中,就会发现其中有一些难点需要解决。

比如在多轮对话的情况下,就需要解决一个问题:如果在最新一轮的提问,里面有些指代上文的代词,那么如果直接用这个问题去做召回,很可能会召回错误的知识,比如:

问1: 2023年,大模型行业的应用场景可以分为哪几类?
答1: 大模型行业的应用场景可以分为生成和决策两类应用场景。
问2: 它们有什么区别,能举例说明吗?

这里的“它们”很显然指的是“生成和决策两类应用场景”,问题的原意是“生成和决策场景有什么区别,能举例说明吗?”。但如果直接用这个问题“它们有什么区别,能举例说明吗?”去做召回,那很有可能召回的是比如这样的知识片段:

['BERT和GPT都是NLP领域的重要模型,但它们的设计和应用场景有很大的区别。',
'大模型和小模型的区别在于其规模和复杂度。大模型通常具有更多的参数和更复杂的结构,需要更多的计算资源和时间来训练和推理。而小模型则相对简单,参数较少,训练和推理速度较快。',
'但没有更多的信息来区分这两个产品,因为它们看起来非常相似。']

显然主体错了,那用这些召回的知识肯定也就不对了,LLM 利用这些无用的知识也不用给用户很好的回答了。

那么要解决这个问题有什么好的办法呢?

首先可以想到的是NLP领域中的一个常见任务:指代消解(Coreference resolution)。指代消解是自然语言处理(NLP)中的一项重要任务,用于确定文本中指代相同实体的词语。该任务旨在识别代词、名词短语等,将它们与先前提到的实体关联起来。例如,在句子“John saw Mary. He waved to her.”中,coreference resolution会将“He”和“John”以及“her”和“Mary”归纳为同一实体。

也许这个任务可以帮助我们解决这个问题,但经过实践发现,无论是通过 spacy,还是 huggingface,目前的开源模型,处理指代消解这个任务都有一定的局限性,只能处理比较简单的场景,比如:

问1:大模型是什么?
问2:它有什么用?

可以找出“它”指的是“大模型”。然而,对于复杂的指代,却不能识别出来,比如:

问1:GPT3是什么?
问2:GPT4又是什么时候发布的?
问3:二者有什么区别?后者有什么优势?

没法识别出“二者”指的是 GPT3 和 GPT4,“后者”指的是“GPT4”。再比如:

问1:GPT4又是什么时候发布的?
答1:GPT4是在 2023 年发布的
问2:这一年在计算机视觉有什么进展?

没法识别出“这一年”指的是“2023年”。

也就是说,现有的 NLP 小模型,只能处理识别“它”,“他”,“她”,“这个”等简单的代词,而对于复杂的指代表述,没法识别处理。

那该怎么办呢?对于复杂语言场景,也许最好的处理就是用大模型,毕竟 ChatGPT 火爆时可是号称是“让 NLP 不存在的”的终极武器。于是,我们可以尝试,让 LLM 来做这个指代消解任务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式学习-网络编程-Day1

Day1 思维导图 作业 实现一下套接字通信 代码 #include<myhead.h>int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET, SOCK_STREAM, 0);//参数1&#xff1a;通信域&#xff1a;使用的是ipv4通信//参数2&#xff1a;表示使用tcp通信//参…

Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类

目录 往期精彩内容&#xff1a; 前言 模型整体结构 1 变分模态分解VMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 故障VMD分解可视化 2.3 故障数据的VMD分解预处理 3 基于VMD-CNN-BiGRU-Attenion的轴承故障诊断分类 3.1 定义VMD-CNN-BiGRU-Attenion分类网…

批评与自我批评组织生活会发言材料2024年六个方面

生活就像一场马拉松&#xff0c;成功需要坚持不懈的奔跑。每一步都可能会遇到挫折和困难&#xff0c;但只要你努力向前&#xff0c;坚持不放弃&#xff0c;你就一定能够迎接胜利的喜悦。不要害怕失败&#xff0c;因为失败是成功的垫脚石。相信自己的能力&#xff0c;追求自己的…

机器学习 | 卷积神经网络

机器学习 | 卷积神经网络 实验目的 采用任意一种课程中介绍过的或者其它卷积神经网络模型&#xff08;例如LeNet-5、AlexNet等&#xff09;用于解决某种媒体类型的模式识别问题。 实验内容 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建&#xff…

青阳龙野网络文件传输系统Docker版

青阳龙野网络文件传输系统Docker版 基于底包debian:bookworm-slim制作 一键拉取命令如下&#xff1a; docker run -idt \ -p 8080:8080 \ -v /data:/kiftd-1.1.1-release/filesystem \ -v /kiftd/conf:/kiftd-1.1.1-release/conf \ -e TZAsia/Shanghai \ --privilegedtrue \…

PyTorch深度学习实战(30)——Deepfakes

PyTorch深度学习实战&#xff08;30&#xff09;——Deepfakes 0. 前言1. Deepfakes 原理2. 数据集分析3. 使用 PyTorch 实现 Deepfakes3.1 random_warp.py3.2 Deepfakes.py 小结系列链接 0. 前言 Deepfakes 是一种利用深度学习技术生成伪造视频和图像的技术。它通过将一个人的…

css 怎么绘制一个带圆角的渐变色的边框

1&#xff0c;可以写两个样式最外面的div设置一个渐变的背景色。里面的元素使用纯色。但是宽高要比外面元素的小。可以利用里面的元素设置padding这样挡住部分渐变色。漏出来的渐变色就像边框一样。 <div class"cover-wrapper"> <div class"item-cover…

Spark高级特性 (难)

Spark高级特性 (难) 闭包 /** 编写一个高阶函数&#xff0c;在这个函数要有一个变量&#xff0c;返回一个函数&#xff0c;通过这个变量完成一个计算* */Testdef test(): Unit { // val f: Int > Double closure() // val area f(5) // println(area)// 在这能否…

[易语言]易语言调用C++ DLL回调函数

易语言适合用于数据展示&#xff0c;数据的获取还是VC来的快、方便哈。 因此我一般使用VC编写DLL&#xff0c;使用易语言编写界面&#xff0c;同一个程序&#xff0c;DLL和EXE通讯最方便的就是使用接口回调了。 废话少说&#xff0c;进入主题。 1. VC编写DLL 为了DLL能够调…

精品量化公式——“风险指数”,适用于短线操作的交易系统,股票期货都适用!不漂移

不多说&#xff0c;直接上效果如图&#xff1a; ► 日线表现 代码评估 技术指标代码评估&#xff1a; 用于通过各种技术指标来分析股市走势。它使用了多个自定义变量&#xff08;VAR1, VAR2, VAR3, 等等&#xff09;&#xff0c;并且基于这些变量构建了复杂的条件和计算。以下…

PostgreSQL之SEMI-JOIN半连接

什么是Semi-Join半连接 Semi-Join半连接&#xff0c;当外表在内表中找到匹配的记录之后&#xff0c;Semi-Join会返回外表中的记录。但即使在内表中找到多条匹配的记录&#xff0c;外表也只会返回已经存在于外表中的记录。而对于子查询&#xff0c;外表的每个符合条件的元组都要…

爬虫入门学习(二)——response对象

大家好&#xff01;我是码银&#xff0c;代码的码&#xff0c;银子的银&#x1f970; 欢迎关注&#x1f970;&#xff1a; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 前言 在本篇文章&#xff0c;我们继续讨论request模块。从上一节&#xff08;爬虫学习(1)--reque…

【C++】异常机制

异常 一、传统的处理错误的方式二、C异常概念三、异常的使用1. 异常的抛出和捕获&#xff08;1&#xff09;异常的抛出和匹配原则&#xff08;2&#xff09;在函数调用链中异常栈展开匹配原则 2. 异常的重新抛出3. 异常安全4. 异常规范 四、自定义异常体系五、C 标准库的异常体…

编曲混音FL Studio21.2对电脑有什么配置要求

FL Studio 21是一款非常流行的音乐制作软件&#xff0c;它可以帮助音乐人和制作人创作出高质量的音乐作品。然而&#xff0c;为了保证软件的稳定性和流畅性&#xff0c;用户需要知道FL Studio 21对电脑的配置要求。本文将介绍FL Studio 21的配置要求&#xff0c;以帮助用户选择…

详解Java之Spring框架中事务管理的艺术

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天聊聊Spring框架中的事务管理。不管是开发小型应用还是大型企业级应用&#xff0c;事务管理都是个不可避免的话题。那么&#xff0c;为什么事务管理这么重要呢&#xff1f;假设在银行系统中转账时&#x…

Java实现海南旅游景点推荐系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

远程开发之vscode端口转发

远程开发之vscode端口转发 涉及的软件forwarded port 通过端口转发&#xff0c;实现在本地电脑上访问远程服务器上的内网的服务。 涉及的软件 vscode、ssh forwarded port 在ports界面中的port字段&#xff0c;填需要转发的IP:PORT&#xff0c;即可转发远程服务器中的内网端…

SSH镜像、systemctl镜像、nginx镜像、tomcat镜像

目录 一、SSH镜像 二、systemctl镜像 三、nginx镜像 四、tomcat镜像 五、mysql镜像 一、SSH镜像 1、开启ip转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward 1sysctl -psystemctl restart docker 2、 cd /opt/sshd/vim Dockerfile 3、生成镜像 4、启动容器并修改ro…

AirServer2024官方最新版免费下载

AirServer官方版是一款使用方便的投屏软件&#xff0c;在教室&#xff0c;会议室以及游戏中极为方便。AirServer官方版支持IOS、Android、Windows、mac、Chromebook等多种设备&#xff0c;使用AirServer不需要其他的设备即可完成投屏操作&#xff0c;相比其他投屏软件&#xff…

星图地球——Landsat5_C2_TOA_T1数据集

简介 Landsat 5是美国陆地卫星系列&#xff08;Landsat&#xff09;的第五颗卫星&#xff0c;于1984年3月1日发射&#xff0c;2011年11月停止工作。16天可覆盖全球范围一次。Landsat5_C2_TOA数据集是由Collection2 level1数据通过MTL文件计算得到的TOA反射率产品。数据集的空间…