一、引言:GenAI热潮下的RAG应用挑战
如今,人们成长为生成式人工智能(GenAI)专家的速度令人惊叹。每个人都宣称GenAI将带来下一次工业革命。这是一个宏大的承诺,我也认同,这次是真的。人工智能终将彻底改变我们的工作和生活方式,很难想象会再次陷入人工智能寒冬。
大语言模型(LLMs)和多模态模型在现有流程中非常实用,而且“相对”容易实现。只需一个向量数据库,几行处理原始数据的代码,再加上几个API调用——至少理论上是这样。
尽管听起来很简单,但Matt Turck最近在领英上的一篇帖子或许能更好地描述行业的实际进展:
-
2023年:我希望生成式人工智能不会把我们都干掉!
-
2024年:我希望生成式人工智能在未来12到18个月内,能从我们公司的概念验证实验发展到小规模生产部署,用于读取PDF文件!
是的,构建一个RAG应用原型很容易,但要将其转化为可投入生产的解决方案却困难重重。这篇文章就是为那些在过去一个月里构建了自己的第一个LLM应用并开始将其产品化的人准备的。我们将探讨17种技术,帮助你规避RAG过程中的一些陷阱,并逐步将你的应用发展成一个强大且稳健、可持续的解决方案。
二、Naive RAG:最基础的RAG系统概述
在构建RAG系统时,我们站在了巨人的肩膀上,利用现有的概念和技术,并以合适的方式将它们组合起来。很多技术都源于搜索引擎领域,目标是围绕LLMs建立一个流程,为模型提供正确的数据,以便做出决策或总结信息。
除了Transformer模型,我们还使用了一系列技术,比如语义搜索技术、处理文本数据的技术、知识图谱以及小型的分类/回归/NLP模型等等。这些技术其实已经存在多年,例如向量搜索库FAISS在2019年就已发布,文本向量化也不是什么新鲜事。
RAG所做的就是将这些组件连接起来,以解决特定的问题。就像必应搜索,它将传统的“必应”网络搜索与LLMs的能力相结合,使得其聊天机器人能够回答与现实生活数据相关的问题,比如 “谷歌今天的股价是多少?”
在标准的RAG过程中,当用户提出问题时,Naive RAG会直接将用户的问题与我们向量数据库中的任何内容进行比较。我们想要找到相似的内容,而相似内容是指在向量空间中彼此接近的内容,其距离通常通过计算余弦相似度来衡量。
举个例子,问题是 “汤姆·布雷迪(Tom Brady)打过什么位置?” 假设我们的向量数据库中有两个主要数据源:一是汤姆·布雷迪的维基百科文章,二是一本烹饪书的文章。在这个例子中,维基百科的内容应该更相关,因此与用户问题的距离更近。
但多“近”才算足够“近”呢?我们无法设置一个相似度分数的阈值来区分相关和不相关的内容,你可以自己试试,就会发现这并不实际。
当我们找到了一些与用户问题相似的内容后,就需要将它们打包成一个有意义的提示。一个合适的提示至少包含三个组成部分:系统提示,用于告诉LLM该如何表现;用户的问题;以及在进行相似度搜索后找到的相关文档,即上下文。
例如这样一个简单的提示模板:
[系统提示:请仅使用提供的信息回答问题。]
[用户问题:汤姆·布雷迪(Tom Brady)打过什么位置?]
[上下文:[从向量数据库中找到的相关文档内容]]
系统提示中 “...使用仅提供的信息” 这部分,将LLM变成了一个处理和解释信息的系统,在这种情况下,我们不直接利用模型的知识来回答问题。
这就是Naive RAG的基本过程,一个向量存储、一个嵌入模型、一个LLM、几行Python代码,当然还有一些文档,就构成了这样一个简单的系统。但当我们将这些系统扩展,从原型转变为生产解决方案时,就会遇到各种现实问题。
三、RAG在实际应用中的潜在陷阱
在实际应用中,RAG系统可能会遇到各种问题:
-
有价值内容与干扰项:最近邻搜索总会找到一些相关内容,但这些内容的相关性究竟有多高呢?我们把那些对回答用户问题不相关的数据点称为干扰项。比如在搜索与体育相关的问题时,却出现了一些与体育无关的烹饪类内容。
-
分块优化:单个内容片段的大小应该是多少,才能既足够具体,又包含足够的上下文信息呢?如果分块太大,可能会包含过多不相关的信息;如果分块太小,又可能无法提供足够的上下文来准确回答问题。
-
监控与评估:在实际操作中,我们该如何监控我们的解决方案呢?也就是LLMOps(大语言模型操作)方面的问题,比如如何衡量模型的性能、是否存在偏差等。
-
智能体与多重提示:对于一些更复杂的查询,无法用单个提示解决时,我们该如何处理呢?比如一些需要多步骤推理或涉及多个领域知识的问题。
四、提升RAG系统性能的关键步骤与技术
为了解决上述问题,我们可以从以下几个方面对RAG系统进行改进,主要包括五个过程步骤:预检索(将嵌入数据摄入向量存储)、检索(找到相关内容)、后检索(在将结果发送给LLM之前进行预处理)、生成(使用提供的上下文解决用户问题)、路由(请求的整体路由,比如使用智能体方法将问题分解并与模型来回交互)。下面我们详细来看每个步骤的具体改进技术:
(一)原始数据创建与准备
在很多情况下,我们并非只能被动地使用已有的数据,而是可以影响文档的创建过程。通过LLMs和RAG应用,我们突然需要对知识库进行结构化。在Naive RAG中,模型只能看到单个文本片段,而不是整个维基百科的上下文,这就会带来问题,比如当文档中包含特定领域或文档特定的缩写、与维基百科其他部分相关联的文本段落时,没有背景知识的人很难理解这些文本片段的完整含义,LLM也会遇到同样的困难。
为了改善这种情况,我们可以在数据准备阶段就采取一些措施,比如以一种自解释的方式准备数据。举个例子,在教程和技术文档中常见的内容结构,如果没有多模态模型辅助,纯LLM很难完全理解左边版本1的内容,而右边版本2至少给了它更好的理解机会。
(二)索引与分块:分块优化
由于Transformer模型有固定的输入序列长度限制,所以我们发送给LLM和嵌入模型的提示的标记大小也受到限制。但这并非完全是坏事,我们可以思考文本片段和提示的最佳长度,因为这对系统性能有显著影响,比如响应时间(以及成本)、相似度搜索准确性等。
有多种文本分割器可以用来分块文本,分块的大小是一个需要考虑的参数,它取决于你使用的嵌入模型及其标记容量。例如,基于BERT的句子Transformer等标准Transformer编码器模型最多接受512个标记,而有些嵌入模型能够处理更长的序列,达到8191个标记甚至更多。但并不是块越大越好,有时候找到书中包含最重要信息的两个句子,比找到包含答案的5页内容更有效。
为了解决分块大小选择的问题,有不同的方法,比如:
-
滑动窗口:这是确保所有信息被正确捕获且不被遗漏的最简单方法,即将整个文本严格分成若干部分,且文本部分相互重叠。
-
递归结构感知分割:根据文本的结构层次进行分割,考虑到文本的逻辑关系。
-
结构感知分割(按句子、段落):按照句子或段落的自然结构进行分割。
-
内容感知分割(Markdown、LaTeX、HTML):根据文本的格式(如Markdown、LaTeX、HTML等)进行分割,以更好地保留文本的结构信息。
-
使用NLP进行分块:跟踪主题变化:通过自然语言处理技术,根据文本主题的变化进行分块。
(三)增强数据质量:处理缩写、技术术语和链接
数据清理技术可以去除不相关的信息,或将文本部分置于合适的上下文中,使其更易于理解。有时候,一个较长文本中特定段落的含义,在知道书籍上下文的情况下似乎很清楚,但如果上下文缺失,就会变得难以理解。缩写、特定技术术语或公司内部术语会让模型很难理解文本的完整含义。
例如,如果你对篮球一无所知,就永远不会将MJ与 “迈克尔·乔丹(Michael Jordan)” 联系起来;如果你不知道某个句子描述的是供应链背景下的内容,可能会认为PO是 “邮局(post office)” 或其他以P和O开头的单词组合。为了缓解这个问题,我们可以在处理数据时引入必要的额外上下文,比如使用缩写翻译表将缩写替换为全文。在处理文本到SQL的用例时,这一点尤为重要,因为很多数据库的字段名常常很奇怪,只有开发者才知道其背后的含义,比如SAP(企业资源规划解决方案)经常使用德语单词的缩写来标记字段,“WERKS” 是德语单词 “Werkstoff” 的缩写,意思是零件的原材料。
(四)添加元数据
在所有向量数据库中,你都可以向向量数据添加元数据。元数据可以在进行向量搜索之前,帮助我们对整个向量数据库进行(预)过滤。例如,假设我们向量存储中的数据一半针对欧洲用户,另一半针对美国用户,如果我们知道用户的位置,就不想搜索整个数据库,而是希望能够直接搜索相关的部分。如果我们将用户位置信息作为元数据字段,大多数向量存储都允许我们在进行相似度搜索之前对数据库进行预过滤。
(五)优化索引结构:全搜索与近似最近邻,HNSW与IVFPQ
虽然我认为相似度搜索并不是大多数RAG系统的弱点(至少从响应时间来看不是),但还是值得一提。在大多数向量存储中,相似度搜索速度非常快,即使有几百万个条目,因为它们使用了近似最近邻技术,比如FAISS、NMSLIB、ANNOY等。对于只有几千个条目的用例,使用近似最近邻搜索(ANN)或全最近邻搜索对RAG系统的响应时间影响不大。但如果你想建立一个可扩展的系统,优化索引结构肯定可以加快速度。
(六)选择合适的嵌入模型
将文本块嵌入有多种选择,如果你不确定使用什么模型,可以参考现有的衡量文本嵌入模型性能的基准测试,比如MTEB(大规模文本嵌入基准测试)。在进行嵌入时,我们通常需要决定嵌入的维度,更高的维度可以捕获和存储句子更多的语义方面,但需要更多的空间来存储和更多的计算时间。现在有多个不同提供商的模型可供选择,你可以查看langchain.embeddings模块支持的模型,在该模块的源代码中,你会找到一长串支持的模型,如OpenAIEmbeddings、AzureOpenAIEmbeddings、CacheBackedEmbeddings等等。
五、检索优化技术
检索优化主要包括查询翻译、查询重写和查询扩展等方法,它们的本质都是利用LLMs的能力来增强我们发送给向量搜索的查询。具体有以下几种方式:
(一)查询扩展与生成答案:HyDE等技术
在进行相似度搜索之前,使用LLM生成一个答案。如果是一个只能使用我们内部知识回答的问题,我们就间接地让模型进行“幻觉”,并使用这个幻觉的答案来搜索与答案相似的内容,而不是用户的原始查询。有多种技术可以实现这一点,比如HyDE(假设文档嵌入)、Rewrite-Retrieve-Read、Step-Back Prompting、Query2Doc、ITER-RETGEN等。在HyDE中,我们先让LLM在没有上下文的情况下为用户的查询创建一个答案,然后使用这个答案在我们的向量数据库中搜索相关信息。
(二)多重系统提示
这个方法的思路很简单,我们生成例如4个不同的提示,这些提示会产生4个不同的响应。你可以发挥创意,提示之间的差异可以是任何方面的。比如当我们有一段长文本并想要总结它时,可以使用不同的提示在文本中寻找某些方面的信息,并在最终答案中总结这些发现;或者有4个大致相同的提示,上下文也相同,但系统提示略有不同,这样我们就以稍微不同的方式告诉LLM 4次该如何处理文本或如何措辞答案。这个概念在数据科学中很常见,就像在提升算法中,我们通常有简单的模型,每个模型略有不同,做出一个小决策,最后我们以某种方式整合结果,这个概念非常强大。当然,这种方法的缺点是计算时间和/或响应时间会更高。
(三)查询路由
在查询路由中,我们利用LLMs的决策能力来决定下一步该做什么。假设我们的向量存储中有来自不同领域的数据,为了更有针对性地搜索相关内容,让模型在第一步决定我们应该使用哪个数据池来回答问题是很有意义的。例如,我们的示例向量存储包含来自世界各地的新闻,包括体育和足球新闻、烹饪趋势以及政治新闻。当用户向我们的聊天机器人查询时,我们不希望混合这些数据,因为国家之间的体育竞争不应该与政治混合,而且如果用户在寻找政治新闻,烹饪相关的内容可能也没有帮助。通过这种方式,我们可以显著提高性能,还可以为最终用户提供选择用于回答问题的主题的选项。
(四)混合搜索
基本上,RAG管道的检索步骤就相当于一个搜索引擎,这可能是我们RAG系统中最重要的部分。当我们想要提高相似度搜索时,值得研究一下搜索领域的方法,混合搜索就是一个例子。我们同时进行向量搜索和词汇(关键词)搜索,并以某种方式将这些结果结合起来。在机器学习中,这是一种常见的方法,即使用不同的技术、不同的模型来预测相同的输出,并总结结果,就像一群专家试图找到解决方案并做出妥协,往往比一个独立的专家做出的决策更好。
六、后检索优化:上下文增强
通常我们试图保持文本块较小,以便实际找到我们要找的内容并保持较高的搜索质量。但另一方面,不仅看到最匹配的句子,还看到它周围的上下文,往往更容易给出正确的答案。例如,我们有一堆来自维基百科关于德国足球俱乐部拜仁慕尼黑的文本块,虽然第一个文本片段可能具有最高的相似度分数,但第二个块中的信息可能更相关,我们也希望捕获到它,这时上下文增强就发挥作用了。
有多种方法可以增强上下文,这里简要介绍两种:
(一)句子窗口检索
具有最高相似度分数的文本块代表了找到的最佳匹配内容。在将内容发送给LLM之前,我们添加找到的文本块之前和之后的k个句子。这是有意义的,因为这些信息很可能与中间部分相关,而且中间文本块中的信息可能不完整。
(二)自动合并检索器(又名父文档检索器)
自动合并检索器的工作方式类似,只是这次每个小块文本都被分配了特定的“父”块,这些“父”块不一定是找到的文本块之前和之后的块。你可以充分发挥创造力,定义和识别文本块之间的相关关系。例如,在查看技术文档或法律合同时,段落或部分经常引用合同的其他部分,挑战在于用来自其他段落的相关信息丰富段落,所以我们需要能够识别文本中指向文档其他部分的链接。我们可以在此基础上建立一个完整的层次结构,就像一个具有不同级别的父节点、子节点和叶节点的决策树。例如,我们可以有3个级别,不同的块大小(如LlamaIndex,2024):
-
第一级:块大小为2048
-
第二级:块大小为512
-
第三级:块大小为128(叶节点)
当我们索引数据并进行相似度搜索时,我们使用最小的块,即叶节点。在此步骤之后,我们找到与叶节点匹配的父节点。
七、生成与智能体
(一)选择合适的LLM和提供商:开源与闭源,服务与自托管,小模型与大模型
为你的应用选择合适的模型并不像你想象的那么容易,这取决于具体的应用和你的流程。有些人可能会说,最明显的解决方案是直接使用最强大的模型,但使用较小、更便宜和更快的模型也有一些不可否认的优势。在RAG过程的某些部分,对准确性的要求可以低一些,但响应时间应该快,比如当我们使用基于智能体的方法时,需要在管道中不断做出简单的决策。而且,如果较小模型的响应和决策能力对我们的用例来说已经足够强大,那么就没有必要选择最强大的模型,这样可以降低解决方案的运营成本,用户也会因为系统响应时间的提高而受益。那么如何选择模型呢?有几个基准测试从不同角度比较了不同的LLMs,但最终,我们还是需要为自己的RAG解决方案亲自尝试这些模型。
(二)智能体
智能体将一些组件组合起来,并根据一定的规则迭代执行它们。智能体使用所谓的“思维链推理”概念,描述了以下迭代过程:发送请求、使用LLM解释响应、决定下一步并再次行动。例如,有些问题通常太复杂,无法一次性回答,因为答案可能没有写在任何地方,人类会将其分解为更简单的子问题来回答,然后计算出我们要找的答案,在这种情况下,智能体也会做同样的事情。通过基于智能体的方法,我们可以显著提高准确性。当然,这总是有一个权衡,与单次提示相比,我们增加了所需的计算能力和响应时间,但提高了准确性。最终,这种方法可能会让较小、更快的模型超越更大模型的准确性,这可能是适合你解决方案的更好方法,但这总是取决于你的具体用例。例如,当我们构建一个纯粹用于信息检索的机器人时,我们总是要与搜索引擎的超短响应时间竞争,在这种情况下,响应时间就是关键,让用户等待几秒甚至几分钟来获取结果体验会非常糟糕。
八、评估RAG系统
基于RAG的系统的性能在很大程度上取决于所提供的数据以及LLM提取有用信息的能力。为了评估整个系统,我们通常不仅要跟踪整体性能,还要了解各个组件是否按预期运行。我们可以将其分为对检索器组件和生成器组件的评估。
对于检索部分,我们可以使用典型的搜索指标,如DCG(折扣累积增益)和nDCG(归一化折扣累积增益)来评估排名质量,它们检查在相似度搜索中真正相关的内容是否实际上被正确分类。
然而,评估模型的响应本身却很棘手。因为语言具有模糊性,我们如何给输出一个评价呢?最直接的方法是询问很多人他们是否认为答案有帮助,比如找1000个人对LLM的答案进行评分,这能让我们对模型的表现有一个大致的了解,但对于生产级解决方案来说,这相当不切实际。因为每次我们对RAG流程稍作更改,都会影响结果,而且要说服领域专家来测试我们的解决方案也很困难,我们不可能每次更改管道中的某些内容时都这么做。
所以我们需要想出更好的方法,其中一种方法是不使用人类评估,而是使用其他LLM来评估结果,也就是“LLM作为评判者”的方法。
(一)LLM作为评判者
使用“LLM作为评判者”的方法来评估生成部分,这个概念很简单:
-
步骤一:生成合成评估数据集
通常是一组包含(1)上下文、(2)问题和(3)答案的数据集。我们不一定有一个完整的数据集,可以通过向LLM提供上下文并让它猜测可能的问题来自己创建,逐步构建一个合成数据集。 -
步骤二:设置所谓的批评智能体
批评智能体是另一个LLM(通常是功能强大的),我们用它根据一些标准来评估系统的响应。例如,评估标准可以包括专业性,其定义可以是“专业性是指使用正式、尊重且适合上下文和受众的沟通风格。通常包括避免过于随意的语言、俚语或口语表达,而是使用清晰、简洁和尊重的语言”。评分提示可以是:专业性:如果答案使用专业语气书写,以下是不同分数的详细信息: - 分数1:语言非常随意、不正式,可能包括俚语或口语表达,不适合专业场合。 - 分数2:语言随意但总体尊重,避免强烈的不正式或俚语,在一些非正式的专业场合可以接受。 - 分数3:语言总体正式,但仍有一些随意的单词/短语,处于专业场合的边缘。 - 分数4:语言平衡,避免极端的不正式或正式,适合大多数专业场合。 - 分数5:语言明显正式、尊重,避免随意元素,适合正式的商业或学术场合。
-
步骤三:测试RAG系统
使用刚刚创建的评估数据集来测试系统。对于我们要测试的每个指标/标准,我们定义一个详细的描述(例如在1到5的范围内),然后让模型做出决定。这不是一门精确的科学,模型的答案会有所不同,但它能让我们了解系统的性能表现。你可以在Prometheus的提示模板或Databricks的这个MLFlow教程中找到一些这种评分提示的示例。
(二)RAGAs(检索增强生成评估)
RAGAs是一个框架,允许你评估RAG系统的每个组件。其核心概念之一同样是“LLM作为评判者”/“LLM辅助评估”的思想,但Ragas提供了更多功能,包括不同的工具和技术,使你的RAG应用能够持续学习。一个值得一提的核心概念是“组件级评估”。Ragas提供了预定义的指标来单独评估RAG管道的每个组件,例如:
生成方面:
-
忠实度:生成的答案在事实上的准确性如何?
-
答案相关性:生成的答案与问题的相关性如何?
检索方面:
-
上下文精度:检索到的上下文的信噪比。
-
上下文召回率:它能否检索到回答问题所需的所有相关信息?
其他指标则侧重于评估RAG管道的端到端性能,比如答案语义相似度和答案正确性。
(三)持续从应用和用户那里收集数据
收集数据是具体识别和填补流程中差距的关键。通常,我们提供给系统的知识库中的数据本身可能不够好。为了意识到这一点,我们需要引入一些方法,让用户尽可能轻松地提供反馈。其他有趣的指标包括时间戳、RAG管道中每个步骤的响应时间(向量化、相似度搜索、LLM响应等)、使用的提示模板、找到的相关文档及其版本、LLM响应等等。RAG系统是由不同步骤组成的概念,为了优化性能和响应时间,我们需要知道瓶颈在哪里,这就是为什么我们要监控这些步骤,以便能够针对最关键的部分进行改进。
九、总结:探索RAG之路,在试错中前行
在RAG系统的发展和应用中,并没有一条清晰明确的道路可以遵循,这需要大量的尝试和错误。就像其他任何数据科学用例一样,我们有一系列特定的工具可以用来尝试找到解决我们特定问题的方案。
这也正是这些项目的乐趣所在,如果有一本固定的“食谱”可以遵循,那该多无趣啊。从Naive RAG到各种进阶的RAG技术,我们在不断地优化和改进,以应对实际应用中出现的各种挑战。无论是数据质量的提升、索引和分块的优化、检索和生成过程的改进,还是系统的评估和持续数据收集,每一个环节都至关重要。
通过合理运用这17种进阶RAG技术,我们能够将RAG应用从一个简单的原型逐步发展成为一个强大的、可投入生产的解决方案,更好地服务于用户,推动人工智能在实际场景中的应用和发展。希望这些技术和方法能够为正在探索RAG领域的你提供一些帮助和启发,让我们一起在RAG的世界里不断探索和进步。
如果你在实际应用中对这些技术有任何疑问,或者有新的想法和经验,欢迎在评论区留言分享,让我们共同成长,共同推动RAG技术的发展。
一、大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
二、如何学习大模型 AI ?
🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
* 大模型 AI 能干什么?
* 大模型是怎样获得「智能」的?
* 用好 AI 的核心心法
* 大模型应用业务架构
* 大模型应用技术架构
* 代码示例:向 GPT-3.5 灌入新知识
* 提示工程的意义和核心思想
* Prompt 典型构成
* 指令调优方法论
* 思维链和思维树
* Prompt 攻击和防范
* …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
* 为什么要做 RAG
* 搭建一个简单的 ChatPDF
* 检索的基础概念
* 什么是向量表示(Embeddings)
* 向量数据库与向量检索
* 基于向量检索的 RAG
* 搭建 RAG 系统的扩展知识
* 混合检索与 RAG-Fusion 简介
* 向量模型本地部署
* …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
* 为什么要做 RAG
* 什么是模型
* 什么是模型训练
* 求解器 & 损失函数简介
* 小实验2:手写一个简单的神经网络并训练它
* 什么是训练/预训练/微调/轻量化微调
* Transformer结构简介
* 轻量化微调
* 实验数据集的构建
* …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
* 硬件选型
* 带你了解全球大模型
* 使用国产大模型服务
* 搭建 OpenAI 代理
* 热身:基于阿里云 PAI 部署 Stable Diffusion
* 在本地计算机运行大模型
* 大模型的私有化部署
* 基于 vLLM 部署大模型
* 案例:如何优雅地在阿里云私有部署开源大模型
* 部署一套开源 LLM 项目
* 内容安全
* 互联网信息服务算法备案
* …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】