问答系统使用 Embedding 召回的局限及解决方案
近期LangChain[1] + LLM 方案高速发展,降低了知识问答等下游应用的开发门槛。但随着业务深入,一些局限性也日渐显露,比如:LLM 意图识别准确性较低,交互链路长导致时间开销大;Embedding 不适合多词条聚合匹配等。本文结合实际案例,分析上述问题存在的根源,并提出基于传统 NLP 技术的解决思路。
背景
以 LLM 为基础的知识问答系统构建方法核心在于:
将用户问题和本地知识进行 Embedding,通过向量相似度(Vector Similarity)实现召回;
通过 LLM 对用户问题进行意图识别;并对原始答案加工整合。
2023 年初 ChatGPT 声名鹊起之时,下游生态链不是很完善,业界一般通过 OpenAI API 和 ChatGPT 直接交互,缺陷也很明显:
上层应用和模型基座绑死。切换模型基座时,上层逻辑不得不大量修改。在 LLM 蓬勃发展的当下,无论是处于成本、License、研究热点还是性能等各方面考虑,基座变更几乎不可避免。
处理环节不完善,开发成本高。比如:向量存储和搜索,LLM 提示词生成,数据链路(导入、分片、加工)等等。如果全部手撸, ...
在单个GPU上基于QLoRA微调LLaMA2模型
2023年7月18日,Meta发布了LLaMA2-最新版本大型语言模型(LLM)。LLaMA2训练使用了2万亿个Tokens,在许多基准测试中(包括推理、编码、熟练度和知识)测试效果优于其他LLM,包括。此次发布有不同的版本,参数大小为7B、13B和70B。这些模型可供商业和研究用途免费使用。
为了满足各种文本生成需求并对这些模型进行微调,我们将使用QLoRA (Efficient Finetuning of Quantized LLMs,这是一种高效的微调技术,它将预训练的LLM量化为仅4位,并添加了小的“低秩适配器”。这种独特的方法可以只使用单个GPU对LLM进行微调!并且PEFT库已支持QLoRA方法。
相关依赖
要成功微调LLaMA 2模型,您需要以下内容:
填写Meta的表格以请求访问下一个版本的Llama。事实上,使用Llama 2受Meta许可证的管理,您必须接受该许可证才能下载模型权重和分词器。
拥有Hugging Face账户(使用与Meta表单中相同的电子邮件地址)。
拥有Hugging Face令牌。
访问LLaMA 2可用模型(7B、13B或70B版本)的页面 ...
使用LLM构建AI Agents的正确姿势
以LLM(大语言模型)作为核心控制器构建智能体是一个很酷的概念。AutoGPT、GPT-Engineer和BabyAGI等几个概念验证演示都是鼓舞人心的示例。LLM的潜力不仅仅限于生成写得好的副本、故事、论文和程序;它可以被视为一个强大的通用问题解决器。
智能体系统概述
在 LLM 支持的自主智能体系统中,LLM 充当智能体的大脑,并由几个关键组件进行补充:
规划
子目标和分解:智能体将大型任务分解为更小的、可管理的子目标,从而能够有效处理复杂的任务。
反思和完善:智能体可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
反思和完善:智能体可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
记忆
短期记忆:认为所有的上下文学习都是利用模型的短期记忆来学习。
长期记忆:这为智能体提供了长时间保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索。
工具使用
智能体学习调用外部 API 来获取模型权重中缺失的额外信息(通常在 ...
InstructBLIP:Towards General-purpose Vision-Language Models with Instruction Tuning
InstructBLIP 是 BLIP 作者团队在多模态领域的又一续作。现代的大语言模型在无监督预训练之后会经过进一步的指令微调 (Instruction-Tuning) 过程,但是这种范式在视觉语言模型上面探索得还比较少。InstructBLIP 这个工作介绍了如何把指令微调的范式做在 BLIP-2 模型上面。用指令微调方法的时候会额外有一条 instruction,如何借助这个 instruction 提取更有用的视觉特征是本文的亮点之一。InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。在指令微调期间只训练 Q-Former,冻结图像编码器和 LLM 的参数。作者将26个数据集转化成指令微调的格式,把它们分成13个 held-in 数据集用于指令微调,和13个 held-out 数据集用于 Zero-Shot 能力的评估。
论文地址: https://arxiv.org/pdf/2305.06500.pdf
指令微调
在 NLP 领域,指令微调技术 (Instruction-Tuni ...
ReAct:Synergizing Reasoning and Acting in Language Models
在本文中,我们介绍ReAct,这是一种将推理和行动与语言模型相结合以解决各种语言推理和决策制定任务的通用范式。采取动态的方式构建prompt,即根据将用户请求以及之前的观察向大模型请求,依据模型的推理思决策下一步的动作行为,在执行完指定动作后,将结果作为prompt的一部分,继续请求语言模型,直到任务完成。改方法在QA数据集HotpotQA、事实验证数据集Fever上,结合维基百科API,能够提高可解释性。另外,在交互决策数据集ALFWorld、WebShop数据集上效果比模仿学习和强化学成功率分别提升34%和10%。
论文地址: https://arxiv.org/pdf/2210.03629.pdf
代码地址: https://github.com/ysymyth/ReAct
ReAct是Reasoning and Acting(也有一说是Reason Act)缩写,意思是LLM可以根据逻辑推理(Reason),构建完整系列行动(Act),从而达成期望目标。LLM灵感来源是人类行为和推理之间的协同关系。人类根据这种协同关系学习新知识,做出决策,然后执行。LLM模型在逻辑推理上有 ...
Instruction Tuning 阶段性总结
ChatGPT 大火之后,在 2023 年 2 月 24 日,LLaMA 的出现让 instruction tuning 这个方向变得火热;3 月 18 日,Alpaca 让大家看到从成熟的模型 distill 小模型成为还不错的 ChatBot 的可能性,从而引发羊驼系模型寒武纪大爆发。但仅仅过去三个月,大家开始发现意识到用 ChatGPT 的数据训练 LLaMA 的各种问题。本文回顾在过去三个月内的 LLaMA 系模型的发展,讨论 Instruction Tuning 的下一步挑战。
1 - 起源
最开始三篇
InstructGPT: Training language models to follow instructions with human feedback
FLANv1: Finetuned Language Models Are Zero-Shot Learners
T0: Multitask Prompted Training Enables Zero-Shot Task Generalization
对比
InstructGPT 的目标是对齐,zero-sh ...
比LLM更重要的多模态学习
这次想要和大家分享的内容主要包括以下几个方面。首先,我会介绍下多模态学习的基础知识,包括相关概念、应用场景、意义等。然后,我将探讨一些多模态学习中的核心技术以及代表性的模型。最后,我们还会一起看看多模态学习面临的挑战以及未来可能的发展方向。不管你是对人工智能有浓厚兴趣的新手,还是已经在这个领域摸爬滚打了一段时间的老兵,相信你都能从这次分享中找到自己需要的。
多模态学习相关概念介绍
那么,我们先来聊聊什么是多模态学习。模态(Modality)可能是大家比较陌生的词汇,但实际上,在我们日常生活中,经常会接触到不同的模态的数据,例如文字、语音、图片等等。这些都是明显的不同模态的数据。如果我们进一步拓宽视野,会发现模态其实可以理解成一个表达、记录或感知某个事物的方式,或者说这种信息被记录或数据被存储的一种方式。每种不同的存储方式都可以被认为是一种不同的模态。
比如,有的模态可能更接近传感器的原始数据,比如语音、图像等;而有的模态则可能涉及更抽象的概念,比如情绪、物体分类等。在过去,我们可能更倾向于处理单一模态的数据,比如仅处理文字或者仅处理图片。但现在,随着科技的发展,我们不仅需要处理更多的模 ...
大语言模型100K上下文窗口的秘诀
上下文窗口(context window)是指语言模型在进行预测或生成文本时,所考虑的前一个token或文本片段的大小范围。
在语言模型中,上下文窗口对于理解和生成与特定上下文相关的文本至关重要。较大的上下文窗口可以提供更丰富的语义信息、消除歧义、处理上下文依赖性,并帮助模型生成连贯、准确的文本,还能更好地捕捉语言的上下文相关性,使得模型能够根据前文来做出更准确的预测或生成。
最新发布的语言大模型的上下文窗口越来越大。本文详细探讨了大型上下文窗口的技术可能性,尤其分析了将上下文长度增加到100K背后的六大优化技巧。
最近有几个新的语言大模型(LLM)发布,这些模型可以使用非常大的上下文窗口,例如65K 个tokens(MosaicML的MPT-7B-StoryWriter-65k+)和100K个tokens的上下文窗口(Antropic)。在Palm-2技术报告中,谷歌并没有透露具体上下文大小,但表示他们“显著增加了模型的上下文长度”。
相比之下,当前GPT-4模型可以使用32K个输入tokens的上下文长度,而大多数开源LLM的上下文长度为2K个tokens。
如此大的上下文长度意味 ...
LLM应用开发的架构参考
大型语言模型是构建软件的强大新工具。但由于它们是如此之新,而且行为方式与普通计算资源如此不同,因此如何使用它们并不总是显而易见的。
在这篇文章中,我们将分享新兴 LLM 应用程序栈的参考架构。它展示了我们所见过的人工智能初创公司和尖端科技公司所使用的最常见的系统、工具和设计模式。这个堆栈仍处于早期阶段,可能会随着底层技术的发展而发生重大变化,但我们希望它能为现在使用 LLM 的开发人员提供有用的参考。
1、LLM App技术栈
这是我们当前的 LLM 应用程序栈视图:
以下是每个项目的链接列表,以供快速参考:
Data pipelines
Embedding model
Vector database
Playground
Orchestration
APIs/plugins
LLM cache
Databricks
OpenAI
Pinecone
OpenAI
Langchain
Serp
Redis
Airflow
Cohere
Weaviate
nat.dev
LlamaIndex
Wolfram
SQLite
Unstructured
Hugging F ...
BLIP:Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation
BLIP 是一种多模态 Transformer 模型,主要针对以往的视觉语言训练 (Vision-Language Pre-training, VLP) 框架的两个常见问题:
大多数现有的预训练模型仅在基于理解的任务或者基于生成的任务方面表现出色,很少有可以兼顾的模型。
大多数现有的预训练模型为了提高性能,使用从网络收集的嘈杂图像-文本对扩展数据集。这样虽然提高了性能,但是很明显这个带噪声的监督信号肯定不是最优的。
BLIP 这种新的 VLP 框架可以灵活地在视觉理解任务上和生成任务上面迁移,这是针对第一个问题的贡献。至于第二个问题,BLIP 提出了一种高效率利用噪声网络数据的方法。即先使用嘈杂数据训练一遍 BLIP,再使用 BLIP 的生成功能生成一系列通过预训练的 Captioner 生成一系列的字幕,再把这些生成的字幕通过预训练的 Filter 过滤一遍,得到干净的数据。最后再使用干净的数据训练一遍 BLIP。
论文地址: https://larxiv.org/pdf/2201.12086.pdf
背景
视觉语言训练 (Vision-Language Pre-trainin ...










