今时今日的LLM基础模型非常强大,可以处理繁复任务,例如撰写故事、推荐个人数据等。但为什么企业仍需要自订基础模型?主要原因是需要处理特定任务,尤其是使用自己的数据集。

基础模型通常没有我们数据集的知识。因此,我们需要用不同的方法来解决这个问题。而检索增强生成 (RAG) 是表现较理想的方案。以下将介绍RAG的好处以及在AWS上实践RAG的工具。

其中一个自订方法是提示工程 (prompt engineering),将问题和数据内容作为提示,直接传递给LLM,让它回答和分析。但大如整个企业的数据集,需要输入很多token,按token计费就会十分昂贵,更谈不上许多LLM有token限制。另一种技术是微调 (fine-tuning)。用户提供较小的数据集给微调模型以理解特定知识。但按AWS技术人员的经验,当提供全微调的数据集以使模型理解知识时,实际效果并不理想。这带出了为何需要RAG技术。

检索增强生成(Retrieval-Augmented Generation,RAG),第一步就是检索。使用RAG技术从旧数据源中检索更相关的资讯,然后再传递给生成模型。通过用户查询从外部知识库中获取相关内容,然后将用户的查询增强为提示,中间也可加入一些指令,将其输入给基础模型。最后,利用生成模型帮助我们基于增强的提示来总结资讯。

比较各种自订基础模型方法的成本与效果

以往检索数据较常以关键字匹配,即是搜索足球就会找到包含“足球”关键字的资讯。但现在有更先进的技术在RAG中应用到,称为语义搜索。例如有几个关键字:纽约、巴黎、动物和马。通过嵌入模型 (embedding model),我们会将文本转换为数字,这串数字称为矢量 (vectors)。纽约和巴黎之间的数字相对较近,而动物和马之间的数字则相对较远。这意味着转换为数字格式实际上可以提供我们的关系。例如输入足球,我们也可以找到像“世界杯”或“阿根廷”等资讯,获得更准确的上下文,然后将其传递给RAG系统。

AWS正正提供完全管理解决方案 – Amazon Bedrock知识库,为客户提供端到端的RAG直接流程。这意味着这包括一个嵌入模型、矢量存储以及一个生成模型,全部打包在一起。不需要使用不同的组件来逐步构建。

Bedrock KB兼容性强大。首先,数据来源能与我们的存储S3集成,适合存储各种文件,如PDF、DOC等等。然后,支持不同的Amazon Titan嵌入体系,以及其合作伙伴Cohere。Cohere同时支持英语和多语言版本。是相当受欢迎的嵌入模型,在Hugging Face嵌入模型中名列前茅。它还支持更多存储方式,比如开源的无服务器存储,Postgres SQL以及Pinecone、Redis和MongoDB。重点是这一切都是自动化,全由Bedrock KB管理,无需逐步构建。

使用Bedrock KB十分方便。基本上,用户就只需要进行一次检索和生成的API调用并提供问题。你不需要考虑调用哪个嵌入模型、查询哪个矢量存储,以及使用哪个LLM。甚至不需要提示工程,只需一次API调用,就能获得答案。

Bedrock KB调用API流程图