本文对高级检索增强生成技术及算法进行了全面研究,梳理了各类方法、实现案例及研究内容。
由于本文旨在对现有的RAG算法和技术进行综述及阐释,所以不会深入探讨代码实现细节,只是提及相关内容,并将具体的代码实现留给大量已有的文档和教程来讲解。
如果你熟悉RAG概念,请直接跳到“高级RAG”部分。
一、简介
检索增强生成(Retrieval Augmented Generation,简称RAG)是为大型语言模型(LLM)提供从数据源检索到的信息,使其生成的答案基于这些信息。基本上,RAG就是搜索 + LLM提示,即要求模型根据搜索算法找到的信息作为上下文来回答所提供的查询。查询内容和检索到的上下文都会被嵌入发送给LLM的提示信息中。
2023年,RAG是基于LLM的系统中最受欢迎的架构。有许多产品几乎完全基于RAG构建——从将网络搜索引擎与LLM相结合的问答服务,到数百个能与自有数据对话的应用程序。
就连向量搜索领域也因这股热潮而受到推动,尽管基于嵌入的搜索引擎早在2019年就已借助Faiss问世。像Chroma、Weaviate.io和Pinecone这样的向量数据库初创公司,都是基于现有的开源搜索索引(主要是Faiss和NMSLib)构建的,并且最近还增加了输入文本的额外存储以及一些其他工具。
有两个用于基于LLM的流程和应用程序的最杰出的开源库——LangChain和LlamaIndex,它们分别于2022年10月和11月成立,前后相隔一个月,二者均受ChatGPT发布的启发,并在2023年得到了广泛应用。
本文的目的是梳理关键的高级RAG技术,并参考它们的实现方式(主要是在LlamaIndex中的实现),以便帮助其他开发人员深入了解这项技术。
问题在于,大多数教程都是挑选一两种技术,详细讲解如何实现它们,而不是描述现有的各种可用工具。
另外,LlamaIndex和LangChain都是很棒的开源项目,它们的发展速度非常快,以至于其文档已经比2016年的机器学习教材还要厚了。
二、基础RAG
本文中RAG流程的起点是一个文本文档集——在此之前的所有步骤我们都略过不提,将其留给那些出色的开源数据加载器,它们可以连接从YouTube到Notion等任何能想象到的数据源。
以下是一个示意图,本文后续出现的所有示意图也是如此。
简单来说,常规的RAG流程如下:将文本分割成块,然后使用某种Transformer编码器模型将这些块嵌入为向量,把所有这些向量放入一个索引中,最后为LLM创建一个提示,告知模型根据搜索步骤中找到的上下文来回答用户的查询。
在运行时,我们使用相同的编码器模型将用户的查询向量化,然后针对该索引执行查询向量的搜索,找到排名前k的结果,从数据库中检索出相应的文本块,并将它们作为上下文输入到LLM的提示信息中。
提示信息可能如下所示:
def question_answering(context, query):
prompt = f"""
Give the answer to the user query delimited by triple backticks ```{query}```\
using the information given in context delimited by triple backticks ```{context}```.\
If there is no relevant information in the provided context, try to answer yourself,
but tell user that you did not have any relevant context to base your answer on.
Be concise and output the answer of size less than 80 tokens.
"""
response = get_completion(instruction, prompt, model="gpt-3.5-turbo")
answer = response.choices[0].message["content"]
return answer
提示工程是改进RAG流程时成本最低的尝试手段,请务必查看OpenAI提示工程指南。
显然,尽管OpenAI作为LLM供应商在市场上处于领先地位,但也有许多替代方案,比如Anthropic公司的Claude,近期热门的虽规模较小但功能强大的模型,如Mistral公司的Mixtral、微软的Phi-2,以及许多开源选项,如Llama2、OpenLLaMA、Falcon等,所以你可以为自己的RAG流程选择合适的“大脑”(即语言模型)。
三、高级RAG
现在我们将深入概述高级RAG技术。
这里有一个示意图,描绘了涉及的核心步骤和算法。为了使示意图清晰可读,省略了一些逻辑循环和复杂的多步骤智能体行为。
(此处是一个高级RAG架构的一些关键组件示意图,它更多是展示可用工具的选择,而非一个蓝图式的架构图)
示意图中的绿色元素是我们接下来要进一步讨论的核心RAG技术,蓝色元素表示文本。并非所有高级RAG理念都能轻易在单个示意图中呈现出来,例如,各种上下文扩展方法就未在图中体现——我们会在后续内容中详细探讨。
1.分块与向量化
首先,我们要创建一个向量索引,用以表示文档内容,然后在运行时搜索所有这些向量与查询向量之间的最小余弦距离,该查询向量对应着最相近的语义含义。
1.1 分块
Transformer模型有固定的输入序列长度,而且即便输入的上下文窗口很大,一个句子或几个句子的向量往往比跨越几页文本取平均后的向量更能代表其语义含义(这也取决于模型,但总体上是这样的),所以要对数据进行分块——将初始文档按一定大小分割成块,同时不丢失其语义(将文本按句子或段落进行分割,而不是把单个句子切成两部分)。有多种文本分割器实现方式可以完成这项任务。
块的大小是一个需要考虑的参数——它取决于你使用的嵌入模型及其可处理的令牌数量,像基于BERT的Sentence Transformers这类标准的Transformer编码器模型最多能处理512个令牌,OpenAI的ada-002能够处理更长的序列,比如8191个令牌,但这里需要权衡的是,要为LLM提供足够用于推理的上下文,同时也要有足够具体的文本嵌入以便高效地执行搜索。在LlamaIndex中,这一功能由NodeParser类实现,它还提供了一些高级选项,比如定义你自己的文本分割器、元数据以及节点/块的关系等。
1.2 向量化
下一步是选择一个模型来嵌入我们的块——有不少可选方案,我倾向于选择搜索优化型模型,比如BGE-large或者E5嵌入系列——只需查看MTEB排行榜就能获取最新动态。
要查看分块与向量化步骤的端到端实现示例,可以查看LlamaIndex中完整的数据摄取管道示例。
2.搜索索引
2.1 向量存储索引
在本示意图以及本文后续各处内容中,为简化示意图,我省略了编码器模块,直接将查询发送到索引。当然,查询总是先进行向量化处理。对于排名前k的块也是如此——索引检索的是排名前k的向量,而非块,但我将其替换为块,因为获取块是一个很简单的步骤。
RAG流程的关键部分是搜索索引,它存储着我们在上一步中得到的向量化内容。最基础的实现方式是使用扁平索引——即对查询向量和所有块向量之间进行暴力距离计算。
一个经过优化、能在包含10000 +个元素的规模上进行高效检索的合适搜索索引是向量索引,比如Faiss、NMSLib或Annoy,它们使用一些近似最近邻实现方法,如聚类、树状结构或HNSW算法。
也有一些托管解决方案,如OpenSearch或ElasticSearch,以及向量数据库,它们在后台处理步骤1中描述的数据摄取管道,例如Pinecone、Weaviate或Chroma。
根据你的索引选择、数据以及搜索需求,你还可以将元数据与向量一起存储,然后使用元数据过滤器按日期或数据源等条件来搜索信息。
LlamaIndex支持众多向量存储索引,但也支持其他一些更简单的索引实现方式,如列表索引、树索引以及关键词表索引——我们会在“融合检索”部分讨论后者。
2.2 分层索引
如果你需要从众多文档中进行检索,就需要能够在其中高效搜索、找到相关信息,并将其整合到一个带有来源引用的单一答案中。在大型数据库的情况下,一种有效的做法是创建两个索引——一个由文档摘要组成,另一个由文档块组成,然后分两步进行搜索,首先通过摘要筛选出相关文档,然后仅在这组相关文档内部进行搜索。
2.3 假设性问题与HyDE
另一种方法是让LLM为每个块生成一个问题,并将这些问题嵌入向量,在运行时针对这个问题向量索引执行查询搜索(在我们的索引中用问题向量替换块向量),然后在检索后转回到原始文本块,并将它们作为上下文发送给LLM以获取答案。
这种方法由于查询与假设性问题之间的语义相似度比查询与实际块之间的语义相似度更高,所以能提高搜索质量。
还有一种逆向逻辑方法,称为HyDE——你让LLM根据查询生成一个假设性响应,然后使用其向量以及查询向量来提升搜索质量。
2.4 上下文扩充
这里的概念是检索较小的块以提高搜索质量,但要添加周围的上下文供LLM进行推理。
有两种选择——通过检索到的较小块周围的句子来扩展上下文,或者将文档递归地分割成多个包含较小子块的较大父块。
2.4.1 句子窗口检索
在这种方法中,文档中的每个句子都单独进行嵌入,这使得查询与上下文的余弦距离搜索具有很高的准确性。
为了在获取最相关的单个句子后能更好地基于找到的上下文进行推理,我们在检索到的句子前后各扩展k个句子的上下文窗口,然后将这个扩展后的上下文发送给LLM。
(图中绿色部分是在索引中搜索时找到的句子嵌入,整个黑色 + 绿色段落会被发送给LLM,以便在对所提供的查询进行推理时扩展其上下文)
2.4.2 自动合并检索器(又名父文档检索器)
这里的思路与句子窗口检索器非常相似——先搜索更细粒度的信息,然后在将上下文提供给LLM进行推理之前扩展上下文窗口。文档被分割成指向较大父块的较小子块。
(文档被分割成块的层级结构,然后最小的叶子块被发送到索引中。在检索时,我们检索k个叶子块,如果有n个块指向同一个父块(较大的块),我们就用这个父块替换它们,并将其发送给LLM用于生成答案)
在检索时先获取较小的块,然后如果在排名前k的检索块中有超过n个块与同一个父节点(较大的块)相关联,我们就用这个父节点替换发送给LLM的上下文——这就像是自动将几个检索到的块合并成一个较大的父块,因此得名。需要注意的是,搜索仅在子节点索引内进行。如需深入了解,请查看LlamaIndex关于递归检索器 + 节点引用的教程。
2.5 融合检索或混合搜索
这是一个相对较老的想法,即可以取两种检索方式的长处——基于关键词的传统搜索(如稀疏检索算法tf - idf或搜索行业标准的BM25)以及现代语义或向量搜索——并将它们组合在一个检索结果中。
这里唯一的诀窍在于如何恰当地组合具有不同相似度得分的检索结果——这个问题通常借助互反排名融合算法来解决,该算法会对检索结果重新排序以生成最终输出。
在LangChain中,这是通过集成检索器(Ensemble Retriever)类实现的,它可以组合你定义的一系列检索器,例如Faiss向量索引和基于BM25的检索器,并使用互反排名融合算法进行重新排序。
在LlamaIndex中,实现方式与之非常相似。
混合或融合搜索通常能提供更好的检索结果,因为它将两种互补的搜索算法结合起来,同时考虑了查询与存储文档之间的语义相似度和关键词匹配情况。
3.重新排序与筛选
我们已经通过上述任意一种算法获得了检索结果,现在是时候通过筛选、重新排序或某些转换来对其进行优化了。在LlamaIndex中,有各种各样可用的后处理器,它们可以基于相似度得分、关键词、元数据来筛选结果,或者使用其他模型(如大型语言模型、句子转换交叉编码器、Cohere重新排序端点)对结果进行重新排序,也可以基于像日期新近度这样的元数据来操作——基本上,你能想到的方式它都涵盖了。
这是在将检索到的上下文提供给大型语言模型以获取最终答案之前的最后一步。
现在,我们该探讨更复杂的RAG技术了,比如查询转换和路由,这两者都涉及大型语言模型,因而体现出智能体行为——在我们的RAG流程中涉及一些包含大型语言模型推理的复杂逻辑。
4.查询转换
查询转换是一系列利用大型语言模型作为推理引擎来修改用户输入,以提高检索质量的技术。有多种实现方式。
查询转换原理示例
如果查询比较复杂,大型语言模型可以将其分解为几个子查询。例如,如果你问:
——“在GitHub上,Langchain和LlamaIndex哪个框架的星标数更多?”
并且我们不太可能在语料库的某些文本中直接找到这样的对比内容,所以将这个问题分解为两个预设能进行更简单、更具体信息检索的子查询是合理的:
——“Langchain在GitHub上有多少个星标?”
——“LlamaIndex在GitHub上有多少个星标?”
这两个子查询将并行执行,然后将检索到的上下文合并到一个提示信息中,供大型语言模型综合生成针对初始查询的最终答案。这两个库都实现了这一功能——在Langchain中是作为多查询检索器(Multi Query Retriever),在LlamaIndex中则是作为子问题查询引擎(Sub Question Query Engine)。
回溯提示(Step-back prompting)是利用大型语言模型生成一个更通用的查询,通过对该通用查询进行检索,我们能获得一个更通用或更高级别的上下文,这有助于为原始查询的答案提供依据。
同时也会执行针对原始查询的检索,并且在最终生成答案阶段,这两种上下文都会提供给大型语言模型。
这里有一个LangChain的实现示例。
查询重写(Query re-writing)是利用大型语言模型重新表述初始查询,以改进检索效果。LangChain和LlamaIndex都有相应的实现方式,尽管略有不同,但我觉得LlamaIndex的解决方案在这方面更强大。
5.聊天引擎
构建一个能针对单个查询多次有效工作的优质RAG系统的另一个关键在于聊天逻辑,它需要考虑对话上下文,就像前大型语言模型时代的经典聊天机器人那样。
这对于支持后续问题、指代以及与之前对话上下文相关的任意用户指令是很有必要的。它通过查询压缩技术来解决,该技术会将聊天上下文与用户查询一并考虑。
一如既往,针对上述上下文压缩有几种不同的方法——
一种流行且相对简单的方法是上下文聊天引擎(ContextChatEngine),它首先检索与用户查询相关的上下文,然后将其与内存缓冲区中的聊天历史记录一起发送给大型语言模型,以便大型语言模型在生成下一个答案时能知晓之前的上下文。
更复杂一点的情况是浓缩加上下文模式(CondensePlusContextMode),在每次交互中,聊天历史记录和最后一条消息会被浓缩成一个新查询,然后这个查询会被发送到索引中,检索到的上下文会与原始用户消息一起传递给大型语言模型以生成答案。
需要注意的是,LlamaIndex也支持基于OpenAI智能体的聊天引擎,它提供了一种更灵活的聊天模式,而且Langchain也支持OpenAI的功能API。
(此处是不同聊天引擎类型及原理的示意图)
还有其他聊天引擎类型,比如ReAct智能体,但我们先跳过这部分,在第7节再探讨智能体相关内容。
6.查询路由
查询路由是基于大型语言模型进行决策的步骤,即根据用户查询决定下一步做什么——通常的选项包括进行总结、针对某个数据索引执行搜索,或者尝试多种不同的途径,然后将它们的输出整合到一个答案中。
查询路由器还用于选择要将用户查询发送到的索引,或者更宽泛地说,选择数据存储位置——要么你有多个数据源,例如,一个经典的向量存储和一个图数据库或者关系型数据库,要么你有索引的层级结构——对于多文档存储来说,一个很典型的情况就是有一个摘要索引和另一个文档块向量索引。
定义查询路由器需要设置它可以做出的选择。
路由选项的选择是通过调用大型语言模型来执行的,它会以预定义的格式返回结果,用于将查询路由到指定的索引,或者,如果涉及智能体行为,还会将查询路由到子链甚至其他智能体,如下文多文档智能体方案所示。
LlamaIndex和LangChain都支持查询路由器。
7.RAG中的智能体
智能体(Langchain和LlamaIndex都支持)几乎从首个大型语言模型API发布时就出现了——其理念是为具备推理能力的大型语言模型提供一组工具以及要完成的任务。这些工具可能包括一些确定性函数,比如任何代码函数或外部API,甚至其他智能体——LangChain这个名字正是源于这种大型语言模型链式调用的理念。
智能体本身是一个庞大的主题,在一篇RAG综述中不可能对其进行足够深入的探讨,所以我将继续以基于智能体的多文档检索案例为例,在OpenAI助手这部分稍作停留,因为它是一个相对较新的事物,在最近的OpenAI开发者大会上以GPTs的形式呈现,并且在下面要描述的RAG系统背后发挥作用。
OpenAI助手基本上实现了许多围绕大型语言模型所需的工具,这些工具我们之前在开源项目中也有——聊天历史记录、知识存储、文档上传接口,或许最重要的是函数调用API。后者提供了将自然语言转换为对外部工具的API调用或数据库查询的能力。
在LlamaIndex中有一个OpenAIAgent类,它将这种高级逻辑与聊天引擎(ChatEngine)和查询引擎(QueryEngine)类相结合,在一次对话回合中提供基于知识且能感知上下文的聊天功能,以及多次调用OpenAI函数的能力,这真正实现了智能体的智能行为。
让我们来看一下多文档智能体方案——这是一个相当复杂的设置,涉及针对每个文档初始化一个智能体(OpenAIAgent),该智能体具备文档总结和经典的问答机制功能,还有一个顶层智能体,负责将查询路由到文档智能体,并负责最终答案的合成。
每个文档智能体有两个工具——一个向量存储索引和一个摘要索引,并且根据路由过来的查询决定使用哪一个。
而对于顶层智能体来说,所有的文档智能体都是它可调用的工具。
这个方案展示了一种高级的RAG架构,其中每个涉及的智能体都要做出很多路由决策。这种方法的优势在于能够比较不同文档及其摘要中描述的不同解决方案或实体,以及经典的单文档总结和问答机制——这基本上涵盖了使用文档集进行聊天的最常见用例。
(此处是一个展示多文档智能体的示意图,涉及查询路由和智能体行为模式)
从图中可以猜到这种复杂方案的缺点——由于智能体内部与大型语言模型之间存在多次来回交互,所以它的运行速度会有点慢。需要说明的是,在RAG流程中,大型语言模型调用始终是最耗时的操作——而搜索在设计上是经过优化以提高速度的。所以对于大型多文档存储,我建议考虑对这个方案进行一些简化,使其具备可扩展性。
8.答案合成器
这是任何RAG流程的最后一步——基于我们精心检索到的所有上下文以及初始用户查询来生成答案。
最简单的方法就是将所有检索到的(相关性高于某个阈值的)上下文与查询一次性连接起来,然后提供给大型语言模型。
但和往常一样,还有其他更复杂的方法,涉及多次调用大型语言模型来优化检索到的上下文并生成更好的答案。
答案合成的主要方法有:
(1)将检索到的上下文逐块发送给大型语言模型,迭代式地优化答案。
(2)对检索到的上下文进行总结,使其能适配到提示信息中。
(3)基于不同的上下文块生成多个答案,然后将它们连接起来或进行总结。
编码器和大型语言模型微调
这种方法涉及对我们RAG流程中涉及的两个深度学习模型中的某一个进行微调——要么是负责嵌入质量进而影响上下文检索质量的Transformer编码器,要么是负责最佳利用所提供的上下文来回答用户查询的大型语言模型——幸运的是,后者是一种善于少量样本学习的模型。
如今的一大优势在于有像GPT - 4这样的高端大型语言模型可用于生成高质量的合成数据集。
但你始终要清楚,使用专业研究团队在精心收集、清理和验证过的大型数据集上训练好的开源模型,然后使用小型合成数据集进行快速微调,可能会普遍削弱模型的能力。
编码器微调
我一直对编码器微调方法持些许怀疑态度,因为最新的针对搜索优化的Transformer编码器已经相当高效了。
所以我在LlamaIndex笔记本环境中测试了对bge - large - en - v1.5(在撰写本文时位于MTEB排行榜前4位)进行微调所带来的性能提升,结果显示检索质量提高了2%。虽然提升幅度不大,但了解这个选项还是很有好处的,特别是当你正在为某个特定领域的数据集构建RAG时。
排序器微调
另一个传统的好方法是,如果你不完全信任基础编码器,可以使用交叉编码器对检索到的结果进行重新排序。
它的工作方式如下:你将查询以及检索到的排名前k的每个文本块传递给交叉编码器,各部分之间用分隔符(SEP)隔开,然后对其进行微调,使其对相关块输出1,对不相关块输出0。
在这里可以找到这种微调过程的一个很好的示例,结果显示通过交叉编码器微调,成对得分提高了4%。
大型语言模型微调
最近,OpenAI开始提供大型语言模型微调API,LlamaIndex有一篇关于在RAG环境中微调GPT - 3.5 - turbo以“提取”部分GPT - 4知识的教程。其思路是拿一份文档,用GPT - 3.5 - turbo生成一些问题,然后使用GPT - 4根据文档内容生成这些问题的答案(构建一个基于GPT - 4的RAG流程),接着在这个问答对数据集上对GPT - 3.5 - turbo进行微调。用于RAG流程评估的ragas框架显示,在忠实度指标方面提高了5%,这意味着经过微调的GPT - 3.5 - turbo模型比原始模型能更好地利用所提供的上下文来生成答案。
在Meta AI Research最近发表的论文《RA - DIT:检索增强的双重指令微调》中展示了一种更复杂的方法,该方法建议针对查询、上下文和答案三元组对大型语言模型和检索器(原论文中为双编码器)同时进行微调。如需了解实现细节,请参考该指南。
这种技术既被用于通过微调API对OpenAI大型语言模型进行微调,也被用于对Llama2开源模型进行微调(在原论文中),在知识密集型任务指标方面(与带有RAG的Llama2 65B相比)提高了约5%,在常识推理任务方面也提高了几个百分点。
如果你知道针对RAG的更好的大型语言模型微调方法,请在评论区分享你的经验,特别是如果这些方法适用于规模较小的开源大型语言模型的话。
评估
有几个用于评估RAG系统性能的框架,它们都秉持着采用几个独立指标的理念,比如整体答案相关性、答案依据性、忠实度以及检索到的上下文相关性。
上一节提到的ragas框架,将忠实度和答案相关性作为生成答案的质量指标,将经典的上下文准确率和召回率作为RAG方案中检索部分的指标。
在吴恩达最近发布的精彩短课程《构建和评估高级RAG》以及LlamaIndex和评估框架Truelens中,他们提出了RAG三元组概念——检索到的上下文与查询的相关性、依据性(大型语言模型的答案在多大程度上得到所提供上下文的支持)以及答案与查询的相关性。
关键且最可控的指标是检索到的上下文相关性——基本上,上述高级RAG流程的第1 - 7部分加上编码器和排序器微调部分都是为了提高这一指标,而第8部分和大型语言模型微调则侧重于答案相关性和依据性。
在这里可以找到一个相当简单的检索器评估流程示例,并且在编码器微调部分也应用了这一示例。
OpenAI的示例代码集展示了一种更先进的评估方法,它不仅考虑命中率,还考虑平均倒数排名(一种常见的搜索引擎指标),以及生成答案的指标,如忠实度和相关性。
LangChain有一个相当先进的评估框架LangSmith,在其中可以实现自定义评估器,并且它能监控RAG流程内部的运行轨迹,以使你的系统更加透明。
如果你使用LlamaIndex进行构建,有一个名为rag_evaluator的Llama包,它提供了一个利用公开数据集快速评估你的流程的工具。
结论
还有许多其他需要考虑的方面,比如基于网络搜索的RAG(LlamaIndex的RAG、webLangChain等),对智能体架构进行更深入的探讨(以及OpenAI在这场博弈中的最新布局),以及关于大型语言模型长期记忆的一些想法。
除了答案相关性和忠实度之外,RAG系统面临的主要生产挑战是速度,特别是当你采用更灵活的基于智能体的方案时,但这是另一篇文章要讨论的内容了。ChatGPT和大多数其他助手所使用的流式传输功能并非随意为之的赛博朋克风格,而仅仅是一种缩短感知到的答案生成时间的方式。
这就是为什么我认为小型大型语言模型有着非常光明的未来,近期发布的Mixtral和Phi-2正引领我们朝着这个方向发展。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】