检索增强生成(RAG)的挑战与优化措施

news2024/11/26 23:33:23

如何理解检索增强生成(RAG)

简单来说,RAG就是让LLM通过外部知识源获取额外信息,从而生成更准确、更符合上下文的答案,并减少错误信息(或称为“幻觉”)的产生。

我们都知道,最先进的LLM是通过训练大量数据来获得广泛的通用知识,这些知识被储存在神经网络的权重(参数记忆)中。但是,当我们让LLM生成需要训练数据之外的知识(比如最新的、专有的或特定领域的信息)时,就可能导致事实上的不准确,也就是我们所说的“幻觉”。

因此,让模型适应特定的行业或私有信息就变得非常重要。我们通常会对模型进行微调。这个方法虽然行得通,但它既耗费大量计算资源,又花费不菲,还得需要技术高手来操刀,因此在迅速适应信息更新上就显得有些笨重了。

那么,有没有更加灵活的办法呢?早在2020年,Lewis和他的团队在一篇名为《知识密集型NLP任务的检索增强生成》的论文中给出了答案。他们提出了一种新技术,叫做检索增强生成(RAG)。这个方法的亮点在于,它把一个能生成内容的模型和一个能进行信息检索的模块结合在一起。这样,模型就可以直接从一个容易更新的外部知识源那里获得所需信息了。

对大型语言模型(LLM)来说,检索增强生成(RAG)就像是开卷考试一样。在开卷考试中,学生可以携带参考资料,比如教科书或笔记,用它们来查找回答问题所需的相关信息。开卷考试的理念在于,考试重点在于考察学生的推理能力,而不是记忆特定信息的能力。

类似地,在RAG中,事实知识从LLM的推理能力中分离出来,存储在一个容易访问和更新的外部知识源中:

  • 参数化知识:在训练期间学习,隐式地存储在神经网络的权重中。
  • 非参数化知识:存储在外部知识源中,比如向量数据库。

检索增强生成(RAG)的基本工作流程如下:

img

  1. 检索:使用用户的查询来从外部知识源检索相关上下文。为此,需要用嵌入模型将用户查询嵌入到与向量数据库中额外上下文相同的向量空间。这样就可以进行相似性搜索,从向量数据库中返回最接近的前k个数据对象。
  2. 增强:将用户查询和检索到的额外上下文放入一个提示模板中。
  3. 生成:最后,将增强后的提示输入到大型语言模型(LLM)中进行生成。

这个流程就像是让LLM在处理查询时,先去查阅一下外部的“参考资料”,然后再基于这些信息给出回答。这样的做法让LLM在回答问题时更加准确和丰富,因为它不仅仅依赖于训练时学到的知识,还可以利用最新的、来自外部的信息。

基于Langchain实现

要实现检索增强生成(RAG)流程,我们可以使用LangChain来协调整个过程,结合OpenAI的大型语言模型(LLM)、Weaviate向量数据库和OpenAI嵌入模型。以下是实现此流程所需的准备工作和具体步骤:

准备工作——Python环境配置

pip install langchain openai weaviate-client

  • langchain:用于协调整个流程。
  • openai:提供嵌入模型和LLM。
  • weaviate-client:用于操作Weaviate向量数据库。

此外,在根目录的 .env 文件中定义相关的环境变量。要获取 OpenAI API 密钥,我们需要一个 OpenAI 的API 密钥(没有的小伙伴可以私信我免费领取)。

OPENAI_API_KEY="<YOUR_OPENAI_API_KEY>"

然后,运行以下命令以加载相关的环境变量。

import dotenv
dotenv.load_dotenv()

准备工作——数据加载及处理

除了Python环境,我们还需要准备一个向量数据库作为包含所有其他信息的外部知识源。首先是收集和加载数据,可以使用LangChain的众多内置 DocumentLoader 之一,比如 TextLoader 。

import requests
from langchain.document_loaders import TextLoader
​
with open("xxxxx.txt", "w") as f:
    f.write(res.text)
​
loader = TextLoader('./xxxxx.txt')
documents = loader.load()

接下来,由于文档可能太长,需要进行分块,否则无法加载入 LLM 的上下文窗口,LangChain提供了许多内置的文本分割工具来帮助完成这个任务。示例如下,我们可以使用CharacterTextSplitter来分割文本,设置chunk_size大约为500,chunk_overlap为50,这样可以确保文本在各个块之间的连贯性。

from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)

最后一步是嵌入和存储这些小块。为了实现跨文本块的语义搜索,我们需要为每个块生成向量嵌入,然后将它们连同嵌入一起存储。生成向量嵌入时,我们可以使用OpenAI的嵌入模型;存储它们时,可以使用Weaviate向量数据库。通过调用.from_documents(),向量数据库会自动填充这些文本块。

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Weaviate
import weaviate
from weaviate.embedded import EmbeddedOptions
​
client = weaviate.Client(
  embedded_options = EmbeddedOptions()
)
​
vectorstore = Weaviate.from_documents(
    client = client,    
    documents = chunks,
    embedding = OpenAIEmbeddings(),
    by_text = False
)

步骤1——检索

填充向量数据库后,可以将其定义为检索器组件,该组件根据用户查询和嵌入块之间的语义相似性,在Weaviate数据库中进行相似性搜索,找到最相关的内容。

retriever = vectorstore.as_retriever()

步骤2——增强

接下来,将检索到的内容与用户查询结合,形成一个新的提示,需要准备一个提示模板。可以从提示模板轻松自定义提示,如下

from langchain.prompts import ChatPromptTemplate
​
template = """You are an assistant for question-answering tasks. 
Use the following pieces of retrieved context to answer the question. 
If you don't know the answer, just say that you don't know. 
Use three sentences maximum and keep the answer concise.
Question: {question} 
Context: {context} 
Answer:
"""
prompt = ChatPromptTemplate.from_template(template)
​
print(prompt)

步骤3——生成

最后,我们可以将这个增强后的提示输入到OpenAI的LLM中,生成最终的回答。

from langchain.chat_models import ChatOpenAI
from langchain.schema.runnable import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
​
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
​
rag_chain = (
    {"context": retriever,  "question": RunnablePassthrough()} 
    | prompt 
    | llm
    | StrOutputParser() 
)
​
query = "What did the president say about the business? "
rag_chain.invoke(query)

这样我们就构建了一个高效且定制化的RAG系统,可以根据具体需求进行调整,例如改变嵌入模型、调整检索策略或者优化生成的提示模板,适用各种复杂的查询和任务。

检索增强生成(RAG)技术的挑战

在探讨这些策略之前,让我们先剖析导致RAG系统性能不佳的关键挑战,将它们分为三个不同的类别:数据检索、信息增强以及后续生成过程。除了技术上的复杂性之外,数据偏差、不断发展的领域和语言的动态性质等外部因素也使情况进一步复杂化。本文深入探讨了这些失败背后的无数原因,提供了RAG实施所面临的障碍的整体观点。

数据检索问题

通常,如果RAG系统性能不佳,这是因为检索步骤很难找到用于生成的正确上下文。当使用矢量搜索返回基于相似性的结果时,可能会由于多种原因而出现差异:

  • 语义歧义: 向量表示(例如词嵌入)可能无法捕捉概念之间的细微差别。例如,“苹果”一词可能指的是水果或科技公司。嵌入可能会混淆这些含义,导致不相关的结果。
  • 大小与方向: 余弦相似度是一种常见的度量,重点关注向量的方向而不是它们的大小。这可能会导致语义上遥远但方向上相似的匹配。
  • 粒度不匹配: 您的查询向量可能代表特定概念,但如果您的数据集仅包含更广泛的主题,则您可能会检索到比预期更广泛的结果。
  • 向量空间密度: 在高维空间中,密切相关和不相关的项之间的距离差异可能非常小。这可能导致看似不相关的结果被认为是相关的。
  • 全局相似性与局部相似性: 大多数向量搜索机制都识别全局相似性。有时,您可能对未捕获的本地或上下文相似之处感兴趣。
  • 稀疏检索挑战: 检索机制可能很难在庞大的数据集中识别正确的段落,特别是当所需的信息稀疏地分布在多个文档中时。

例如,当查询诸如“云安全中的图机器学习用例”之类的小众主题时,如果检索系统获取有关“云安全”的通用文章而没有图机器学习的具体信息,则后续生成将造成错误。

随着生成式人工智能和Transformer网络变得越来越流行,动态嵌入(dynamic embeddings)和上下文感知搜索(context-aware searches)可能会减少其中一些差异。此外,结合符号和子符号人工智能元素的混合模型可能会提供更好的精度。

信息增强问题

1.上下文的集成: 这里的挑战是将检索到的段落的上下文与当前的生成任务顺利地集成。如果做得不好,输出可能会显得脱节或缺乏连贯性。

示例:如果检索到的段落提供了有关“Python的历史”的深入信息,而生成任务是详细说明“Python的应用程序”,则输出可能会过分强调历史而忽视应用程序。

2.冗余和重复: 如果多个检索到的段落包含相似的信息,则生成步骤可能会产生重复的内容。

示例:如果检索到的三篇文章都提到“PyTorch的动态计算图”,则生成的内容可能会多次冗余地强调这一点。

3.排名和优先级: 确定多个检索到的段落对于生成任务的重要性或相关性可能具有挑战性。增强过程必须适当权衡每个段落的价值。

示例:对于“云安全最佳实践”的查询,如果检索到的有关“双因素身份验证”的段落排名低于不太重要的点,则最终输出可能会歪曲双因素身份验证的重要性。

4.风格或语气不匹配: 检索到的内容可能来自具有不同写作风格或语气的来源。增强过程需要协调这些差异以确保一致的输出。

示例:如果检索到的一段文章是用随意的语气写的,而另一段则比较正式,那么最后一代可能会在这些风格之间摇摆不定,导致反应缺乏凝聚力。

5.过度依赖检索内容: 生成模型可能过于依赖增强信息,导致输出重复检索内容,而不是增加价值或提供合成。

示例:如果检索到的段落提供了有关“图机器学习技术”的多种观点,但生成的输出仅重申了这些观点,而没有综合或提供额外的见解,则增强并没有增加实质性价值。

生成模型问题

常用的生成模型-大语言模型(LLM)存在以下问题:

  • 幻觉(Hallucinations): 大语言模型会编造非事实数据。
  • 错误信息(Misinformation): 训练数据包含不正确的信息。
  • 上下文(context)长度受限: 你将受到所选大语言模型的背景长度的限制。通常,上下文长度越大,您可以提交的上下文就越多。

下面列出了可能会损害RAG管道性能的生成模型问题:

1.连贯性和一致性: 确保生成的输出在逻辑上连贯并保持一致的叙述,特别是在集成检索到的信息时,可能具有挑战性。

示例:输出可能会开始讨论“Python在机器学习中的效率”,然后突然切换到“Python在Web开发中的使用”,而没有明确的过渡。

2.冗长或冗余的输出: 生成模型可能会产生不必要的冗长响应或重复某些点。

示例:在阐述“PyTorch的优点”时,模型可能会以不同的措辞多次提及“动态计算图”。

3.过度概括: 模型可能提供通用答案,而不是针对查询定制的具体、详细的响应。

示例:关于“PyTorch和TensorFlow之间的差异”的查询可能会得到有关深度学习框架重要性的广泛回应,但没有解决具体差异。

4.缺乏深度或洞察力: 即使有相关的检索信息,生成的响应也可能不够深入或提供有洞察力的综合。

示例:当被问及“图机器学习在云技术中的潜在应用”时,该模型可能会列出一般应用程序,而不会详细说明或提供独特的见解。

5.检索中的错误传播: 检索数据中的错误或偏差可以在生成过程中继续传播和放大。

示例:如果检索到的段落不准确地声称“next.js是后端框架”,则生成的内容可能会在此错误的前提下扩展。

6.风格不一致: 生成的内容可能无法保持一致的风格,尤其是在尝试混合来自不同检索源的信息时。

示例:在同一响应中将正式的技术解释与随意的轶事内容混合在一起。

7.未能解决矛盾: 如果检索到的段落包含矛盾信息,则生成模型可能难以协调这些差异,甚至可能在输出中重现矛盾。

示例:如果一个检索到的来源说“PyTorch主要用于研究”,而另一个来源说“PyTorch广泛用于生产”,则生成的响应可能会在没有澄清的情况下混淆两者。

8.上下文忽略: 生成的响应有时可能会错过或误解查询背后更广泛的上下文或意图。

示例:为了回应“告诉我一个关于机器学习的有趣事实”,该模型可能会产生一个技术性很强的观点,而不是对一般受众来说轻松有趣的内容。

这些生成问题凸显了生成准确、相关和高质量内容的复杂性,即使在使用检索到的数据进行增强时也是如此。它强调需要迭代细化、反馈循环,甚至可能进行特定领域的调整来优化生成过程,特别是在云技术和机器学习等专业领域。接下来我们将看看如何解决这些问题。

检索增强生成(RAG)技术优化措施

数据优化

对于高性能RAG系统,数据需要干净、一致且上下文丰富。 文本应该被标准化,以去除特殊字符和不相关的信息,从而提高检索器的效率。应消除实体和术语的歧义以保持一致性,同时应消除重复或冗余信息以简化检索器的焦点。真实性是关键;应尽可能验证每条数据的准确性。实现特定领域的注释可以添加另一层上下文,并结合用户反馈循环进行持续更新,确保系统适应现实世界的交互。时间敏感的主题需要一种机制来刷新过时的文档。总体而言,重点应放在清晰度、上下文和正确性上,以使系统高效可靠。 以下是最佳实践列表:

  • 文本清理: 规范文本格式,去除特殊字符和不相关信息。这提高了检索器的效率并避免垃圾进垃圾出。
  • 实体解析: 消除实体和术语的歧义以实现一致的引用。例如,将“ML”、“机器学习”和“机器学习”标准化为通用术语。
  • 重复数据删除: 删除重复文档或冗余信息,以增强检索者的注意力和效率。
  • 文档分割: 将长文档分解为可管理的块,或者相反,将小片段组合成连贯的文档以优化检索器性能。
  • 特定于领域的注释: 使用特定于领域的标签或元数据来注释文档。例如,考虑到您关注的云技术,您可以标记与云相关的技术,例如“AWS”、“Azure”等。
  • 数据增强: 使用同义词、释义甚至其他语言的翻译来增加语料库的多样性。
  • 层次结构和关系: 识别文档之间的父子或兄弟关系,以提高上下文理解。
  • 用户反馈循环: 使用基于现实世界交互的新问答对不断更新您的数据库,标记它们的事实正确性。
  • 时间敏感数据: 对于经常更新的主题,实施一种机制来使过时的文档失效或更新。

表征优化

OpenAI的表征是固定大小且不可微调的。对于固定的OpenAI表征,重点确实是优化RAG管道的其他部分(例如检索机制或数据语料库的质量),以确保您充分利用现有的表征。

如果您的表征模型是可微调的,您可以利用微调表征模型、动态表征或

a. 微调表征(具有可微调/可训练的嵌入)

RAG中表征的微调对其功效有直接影响。通过使表征适应领域的具体情况,检索步骤变得更加清晰,确保获取的内容与查询高度相关。这种微调的检索为后续生成步骤奠定了更准确的基础。特别是在专业领域,或者在处理不断发展或罕见的术语时,这些定制的表征至关重要。本质上,对于RAG来说,微调表征类似于在让声音说话之前调整耳朵,确保听到的(检索到的)内容能够最佳地影响所说的(生成的)内容。

目前您无法微调ada-embedding-02,bge嵌入模型,如bge-large-en是可微调的候选高性能表征模型。可以使用LLaMaIndex来微调bge嵌入模型。要创建训练数据来微调bge模型,首先需要使用gpt-35-turbo等LLM为文档块创建问题,(问题,答案)对(pair)是进行微调的微调数据。

b. 动态表征(具有可微调/可训练的表征)

动态表征根据单词出现的上下文进行调整,这与用单个向量表示每个单词的静态表征不同。例如,在像BERT这样的Transformer模型中,同一个单词可以根据周围的单词有不同的表征。

还有经验证据表明,当文本长度(例如<5个标记)时,OpenAI的嵌入模型text-embedding-ada-002会给出意想不到的高余弦相似度结果。理想情况下,我们应该确保表征文本周围有尽可能多的上下文,以便表征给出“健康”的结果。

OpenAI的embeddings-ada-02模型基于GPT等大型语言模型的原理。它比静态表征模型更先进,并且可以捕获某种程度的上下文。这意味着它生成的表征在一定程度上受到周围文本的影响。然而,值得注意的是,虽然它比静态模型更好地捕获上下文,但它可能不像GPT-4等最新的全面语言模型那样对上下文敏感。

c. 刷新表征(具有可微调/可训练的表征)

表征还应该定期刷新,以捕获语料库中不断变化的语义。目标是使它们能够高效地进行检索和匹配,确保快速、准确的RAG实施。

检索优化

为了提高RAG系统的检索效率,请采用整体策略。首先完善你的分块过程,探索各种尺寸以达到适当的平衡。嵌入元数据以改进过滤功能和丰富上下文。支持跨多个索引的查询路由,满足不同的查询类型。考虑Langchain的多向量检索方法,该方法采用较小的块、摘要嵌入和假设问题来提高检索准确性。 通过重新排序解决向量相似性问题,并尝试混合搜索和递归检索技术以提高性能。HyDE等策略和“ReadRetrieveRead”等迭代方法提供了有希望的结果。最后,微调矢量搜索算法,优化准确性和延迟之间的权衡。这种全面的方法可确保您的RAG系统在检索相关且上下文丰富的信息方面表现出色。

调整分块

我们的目标是收集尽可能多的相关背景信息并尽可能减少噪音。具有小、中和大尺寸的块,并使用“LlamaIndex响应评估”之类的评估框架来决定最佳块大小,该框架使用GPT4来评估忠实度和相关性,以评级和比较单独的块大小。

在构建RAG系统时,请始终记住chunk_size是一个关键参数。投入时间仔细评估和调整块大小,以获得无与伦比的结果。LLaMA索引具有针对不同分块方法的自动评估功能。

  • 将引用(元数据)嵌入到块中: 例如日期和用于过滤的用途。添加章节、子章节参考也可能是有助于改进检索的元数据。
  • 多个索引上的查询路由: 这与之前的元数据过滤和分块方法密切相关。您可能有不同的索引并同时查询它们。如果查询是定向查询,可以使用标准索引,或者如果它是基于元数据(例如某个“日期”)的关键字搜索或过滤,则可以使用相关的单独索引。

Langchain的多向量检索也是一种好的优化方案,它为每个文档创建多个向量的方法包括:

  • 较小的块: 将文档分割成较小的块,并将它们与较长的块一起嵌入。
  • 添加“摘要嵌入”: 为每个文档创建摘要,将其与文档一起嵌入(或代替)。
  • 假设性问题: 创建每个文档都适合回答的假设性问题,将这些问题与文档一起嵌入(或代替文档)。
  • 重新排序: 嵌入的向量相似搜索可能无法解释为语义相似性。通过重新分配,您可以解决这种差异。
  • 探索混合搜索: 通过智能地混合基于关键字的搜索、语义搜索和矢量搜索等技术,您可以利用每种方法的优势。这种方法使您的RAG系统能够适应不同的查询类型和信息需求,确保它始终检索最相关且上下文丰富的信息。混合搜索可以成为您检索策略的有力补充,从而提高RAG管道的整体性能。
  • 递归检索和查询引擎: 在RAG系统中优化检索的另一种强大方法是实现递归检索和复杂的查询引擎。递归检索涉及在初始检索期间获取较小的文档块以捕获关键语义。在此过程的后期,为您的语言模型(LM)提供包含更多上下文信息的更大块。这种两步检索方法有助于在效率和上下文丰富的响应之间取得平衡。

强大的查询引擎是对这一策略的补充。精心设计的查询引擎对于有效解释用户查询至关重要,特别是当它们涉及微妙或复杂的语言时。它使RAG系统能够迭代评估缺失信息的问题,并在所有相关详细信息可用后制定更全面的响应。

递归检索和智能查询引擎的结合可以显着增强RAG系统的性能,确保它不仅检索相关信息,而且检索上下文完整的信息,以获得更准确和信息丰富的答案。

  • HyDE: HyDE是一种策略,它接受查询,生成假设响应,然后使用两者进行嵌入查找。研究发现这可以显着提高性能。
  • 阅读检索阅读/ReAct: 迭代评估问题是否缺少信息,并在所有信息可用后制定响应。
  • 父文档检索器: 在检索期间获取小块以更好地捕获语义含义,为您的LLM提供具有更多上下文的更大块。
  • 矢量搜索: 调整矢量搜索算法和参数,在准确性和延迟之间找到适当的平衡。当涉及RAG系统中的矢量搜索时,精度和速度是关键。首先微调矢量搜索算法和参数,重点关注要搜索的邻居数量和使用的距离度量等因素。目标是在准确性和延迟之间取得适当的平衡。尝试不同的配置并衡量它们对检索效率的影响。

随着新选项的不断出现,请随时了解矢量搜索算法和库的最新进展。此外,考虑实施查询批处理以提高搜索效率。通过优化矢量搜索,可以确保RAG系统准确、快速地响应用户查询,这是高效且响应迅速的管道的关键因素。

查询分解+提示工程优化

我们深入研究查询转换,这是将复杂查询分解为可管理子查询的技术,这是一种经过验证的增强大型语言模型(LLM)有效性的策略。此外,我们还讨论了设计基本提示的关键方面,其中提示模板和条件在根据特定用例和上下文定制RAG系统的行为方面发挥着关键作用。这些策略共同提高了RAG管道的精度和效率。

a. 查询转换

将复杂的问题拆分为多个问题(llamaindex)。大语言模型(LLM)在分解复杂查询时往往会工作得更好,可以将其构建到RAG系统中,以便将一个查询分解为多个问题。

b. 提示工程

在RAG系统中设计基本提示对于指导模型的行为至关重要。有两种方法:提示模板和提示调节。

  • 提示模板: 定义一个模板来捕获查询和上下文的本质,同时牢记特定的用例。例如,如果正在构建技术支持机器人,模板可能如下所示:“帮助用户解决问题:{issue_description}。考虑这些文档:{document_snippets}。”
  • 提示调节: 您还可以通过添加前缀来设置上下文或指示模型以某种方式回答来调节模型。例如,考虑到您对机器学习的兴趣,您可以在前面加上“利用您对机器学习和云技术的理解,回答以下问题:”

下面是创建此类提示的简化Python示例,假设您已获得查询并检索到文档:

#您的问题和检索到的文档
Question=“最好的机器学习分类算法是什么?”
retrieve_docs=[“Doc1:SVM被广泛使用......”,“Doc2:随机森林很强大......”]
#模板
template=“根据这些文档帮助回答以下问题:{question}。考虑这些文档:{docs}”
#构建完整的提示
full_prompt=template.format(question=question,docs="".join(retrieved_docs))
#现在,这个`full_prompt`可以被输入到RAG生成器中

作为额外的改进,请考虑微调基本模型并使用函数调用。

生成模型微调优化

仅微调RAG设置中的生成模型(例如,微调上下文和提示发送到的基本gpt模型)旨在改进语言生成组件,而无需触及检索部分。这样做有几个好处:

  • 答案质量: 直接提高生成器制定答案的能力。
  • 上下文理解: 对特定领域的数据集进行微调可以帮助生成器更准确地理解检索器提供的上下文。
  • 速度: 它可以使生成模型更加高效,从而加快整个RAG的运行速度。

函数调用优化

函数调用功能可以通过在生成步骤中引入结构化、可操作的输出来显着增强检索增强生成(RAG)系统。 这允许实时API集成以获得最新答案,优化查询执行以减少错误,以及模块化检索方法以提高相关性。它还可以促进动态文档获取的反馈循环,并为多步骤推理或数据聚合提供结构化JSON输出。总体而言,它使RAG系统更加动态、准确且响应迅速。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.2.1 什么是Prompt
    • L2.2.2 Prompt框架应用现状
    • L2.2.3 基于GPTAS的Prompt框架
    • L2.2.4 Prompt框架与Thought
    • L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
    • L2.3.1 流水线工程的概念
    • L2.3.2 流水线工程的优点
    • L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
    • L3.1.1 Agent模型框架的设计理念
    • L3.1.2 Agent模型框架的核心组件
    • L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
    • L3.2.1 MetaGPT的基本概念
    • L3.2.2 MetaGPT的工作原理
    • L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
    • L3.3.1 ChatGLM的特点
    • L3.3.2 ChatGLM的开发环境
    • L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
    • L3.4.1 LLAMA的特点
    • L3.4.2 LLAMA的开发环境
    • L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

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

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

相关文章

计数排序(Counting Sort)

计数排序&#xff08;Counting Sort&#xff09; 计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;快于任何比较排序算法。排序思路: 1.找出待排序数组最大值2.定义一个索引最大…

Python学习打卡:day08

day8 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day858、数据容器(序列)的切片序列的常用操作——切片 59、序列的切片课后练习60、集合的定义和操作集合的定义集合的操作添加新元素移除元素从集合…

NATAPP-内网穿透工具----下载与配置

NATAPP-内网穿透工具 基于ngrok的国内高速内网穿透服务&#xff0c;natapp提供了一种便利的方式&#xff0c;使得开发和测试过程更加高效&#xff0c;尤其是在需要进行远程调试或展示时。无论是进行web开发、微信和支付宝的本地开发调试&#xff0c;还是简单地从外部网络访问家…

如何根据使用场景选购3D扫描仪?

三维扫描建模是指通过专业的三维扫描仪对产品进行三维数据的采集&#xff0c;快速获取物体精确的3D数据&#xff0c;实现1:1复刻原物体&#xff0c;扫描后所得的数字化3D模型以obj、fbx、glb、gltf等格式保存。 积木易搭自主研发多款三维扫描设备&#xff0c;拥有多项国家专利&…

初学者必看的web前端开发学习路线,干货满满!

初学者必看的web前端开发学习路线,干货满满&#xff01; 随着互联网的深入发展,前端工程师这个岗位在市场上的需求&#xff0c;薪资也是很可观的。前端很火&#xff0c;想自学前端的人也很多。包括一些学生、上班族、以前的UI&#xff0c;java&#xff0c;或完全零基础&#xf…

Nginx 高级应用

目录 一.使用alias实现虚拟目录 二. 通过stub_status模块监控nginx的工作状态 三. 使用limit_rate限制客户端传输数据的速度 四. nginx虚拟主机配置 1.基于端口的虚拟主机 2. 基于IP的虚拟主机 3. 基于域名的虚拟主机 nginx配置文件&#xff1a; /…

3阶段提交协议(3pc)

3阶段提交协议&#xff08;3pc&#xff09; 1 简介 三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二&#xff0c;形成了由CanCommit、PreCommit、DoCommit三个阶段组成…

LWIP移植

目录 前言一、以太网协议简介1.1 TCP/IP协议简介1.2 STM32的ETH外设1.2.1 MAC子层1.2.2 SMI站管理接口1.2.3 MII和RMII接口 1.3 外部PHY芯片LAN87201.3.1 LAN8720 中断管理1.3.2 PHY 地址设置1.3.3 nINT/REFCLKO 配置1.3.4 LAN8720 内部寄存器 1.4 LWIP 简介 二、带操作系统的移…

【热】大数据信用报告查询平台哪个比较好?这个平台值得一试!

在当今数字化时代&#xff0c;大数据技术的发展为个人和企业提供了更便捷、精准的信用报告查询服务。选择一个优秀的大数据信用报告查询平台至关重要&#xff0c;它直接影响到您获取信用信息的准确性和全面性。 首先&#xff0c;选择大数据信用报告查询平台时&#xff0c;您可以…

Flutter图像编辑器应用:创造生动美丽的照片体验

介绍 引言 想象一下&#xff0c;在一个阳光明媚的下午&#xff0c;与家人或朋友漫步在风景如画的街道上。拿出手机&#xff0c;迫不及待地捕捉这一刻的美好&#xff0c;按下快门&#xff0c;留下了一张充满回忆的照片。 然而&#xff0c;回到家后发现照片的亮度有些偏暗&…

大模型应用开发技术:Multi-Agent框架流程、源码及案例实战(二)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

c函数/2024/6/17

1.递归计算0--n的和 #include <stdio.h> int sum(int n);//递归求和函数 int main(int argc, const char *argv[]) {//(2)递归计算0--n的和int n0;printf("请输入n的值为:");scanf("%d",&n);printf("0--n的和为:%d",sum(n));return 0…

CTFshow之RCE代码命令远程执行第41关到第52关详细讲解。可私信!

与其抱怨自己&#xff0c;不如埋怨他人。 --莫迪大仙 引言&#xff1a;今天来到ctf赛题RCE专题第二天&#xff08;今天肯定写不完了啊啊啊啊啊&#xff09;&#xff0c;不过继续加油&#xff01; 一、实验准备 1、ctf网址 2、firefox浏览器、hackbar插件 二、实验过程 &a…

大数据分析-二手车用户数据可视化分析

项目背景 在当今的大数据时代&#xff0c;数据可视化扮演着至关重要的角色。随着信息的爆炸式增长&#xff0c;我们面临着前所未有的数据挑战。这些数据可能来自社交媒体、商业交易、科学研究、医疗记录等各个领域&#xff0c;它们庞大而复杂&#xff0c;难以通过传统的数据处…

Day 25:1807. 替换字符串中的括号内容

Leetcode 1807. 替换字符串中的括号内容 给你一个字符串 s &#xff0c;它包含一些括号对&#xff0c;每个括号中包含一个 非空 的键。 比方说&#xff0c;字符串 “(name)is(age)yearsold” 中&#xff0c;有 两个 括号对&#xff0c;分别包含键 “name” 和 “age” 。 你知道…

Linux:生产消费模型 读者写者模型

Linux&#xff1a;生产消费模型 & 读者写者模型 生产消费模型阻塞队列基本结构构造与析构投放任务获取任务总代码 POSIX 信号量基本概念接口 环形队列基本结构构造与析构投放任务获取任务总代码 读者写者模型读写锁 生产消费模型 生产消费模型是一种用于处理多线程之间任务…

编译器优化入门(基于ESP32)

主要参考资料&#xff1a; kimi: https://kimi.moonshot.cn/ ESP-IDF 支持多种编译器&#xff0c;但默认情况下&#xff0c;它使用的是乐鑫官方提供的 Xtensa 编译器&#xff0c;这是一个针对 ESP32 芯片架构&#xff08;Tensilica Xtensa LX6 微处理器&#xff09;优化的交叉编…

大学课设项目,Windows端基于UDP的网络聊天程序的服务端和客户端

文章目录 前言项目需求介绍一、服务端1.对Udp套接字进行一个封装2. UdpServer的编写3. Task.h4.protocol.h的编写5.线程池的编写6.main.cc 二、客户端1. Socket.h2.protocol.h3.UdpClient4.menu.h5.main.cpp 三、运行图 前言 本次项目可以作为之前内容的一个扩展&#xff0c;学…

windows 11 之 下载安装 curl

1. 背景 需要执行一个 curl 命令运行一个定时任务&#xff0c;之前博主用的mac&#xff0c;无需担心这个下载安装问题&#xff0c;现在转为 windows&#xff0c;需要下载安装crul命令。 2. 出现问题 3. 解决办法 3.1 下载最新的包 下载地址&#xff1a;https://curl.se/win…

文档项目:攻坚克难

鉴于交流离心机存在的缺点&#xff1a;转速相对偏差、稳定精度不够高&#xff1b;带负载能力受外界扰动后&#xff0c;波动较大&#xff1b;寿命短&#xff0c;研究所各相关部门成立组成技术攻关团队&#xff0c;齐心协力&#xff0c;攻坚克难&#xff0c;在摸索中突破创新&…