链载Ai

标题: 技术人的大模型应用初学指南 [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: 技术人的大模型应用初学指南
随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式。本文深入探讨了RAG的核心原理及其在实际应用中的挑战与解决方案。文章首先分析了通用大模型在知识局限性、幻觉问题和数据安全性等方面的不足,随后详细介绍了RAG通过“检索+生成”模式如何有效解决这些问题。具体而言,RAG利用向量数据库高效存储与检索目标知识,并结合大模型生成合理答案。此外,文章还对RAG的关键技术进行了全面解析,包括文本清洗、文本切块、向量嵌入、召回优化及提示词工程等环节。最后,针对RAG系统的召回效果与模型回答质量,本文提出了多种评估方法,为实际开发提供了重要参考。通过本文,读者可以全面了解RAG技术的原理、实现路径及其在信息检索领域的革命性意义。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;text-align: center;visibility: visible;margin-top: 8px;margin-bottom: 8px;line-height: 1.75em;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;visibility: visible !important;width: 113px !important;"/>
前言

人工智能(AI)时代的到来为技术人员提供了丰富的学习和发展机会。对于没有算法背景的技术同学来说,迎接这种新兴机遇与挑战并做好应对准备和知识储备是非常重要的。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">结合笔者这一段对于大模型和AI技术的一些学习以及对基于AI改造的诸多实际应用场景的了解。于是就写了这篇文章。另外,本篇文章不会用过多的篇幅来讲算法基础的内容,而把重点放在AI应用的核心技术概念的理解上。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;visibility: visible !important;width: 117px !important;"/>
人工智能术语概述

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">想必大家在刚开始阅读人工智能相关的文章或书籍的时候,总是听到诸如LLM,chatGPT,RAG,Agent等等的术语,但是不知道这些术语对应的技术点关联性在哪里,没关系,咱们首先来学习下这些术语的定义:



大模型应用发展趋势


▐向量数据库


随着互联网内容化的飞速发展,以音视频等多媒体内容为代表的非结构化数据呈现出高速增长的趋势。图片、音频、视频等非结构化数据的存储和检索需求也变得越来越多。


IDC DataSphere 数据显示,到2027年全球非结构化数据将占到数据总量的86.8%,达到246.9ZB;全球数据总量从103.67ZB增长至284.30ZB,CAGR为22.4%,呈现稳定增长态势。

Link:https://www.idc.com/getdoc.jsp?containerId=prCHC51814824


通常,为了更有效地管理非结构化数据,常见的做法是将其转换为向量表示,并存储在向量数据库中。这种转换过程通常被称为向量化或嵌入(Embedding)。通过将文本、图像或其他非结构化数据映射到高维向量空间,我们可以捕捉数据的语义特征和潜在关系。向量数据库通过在「向量表示」上构建索引,实现快速的相似性搜索。


向量数据库是用于存储和查询高维向量数据的数据库,通常在搜索、推荐系统、图像识别、自然语言处理等领域中广泛使用。随着AI创新应用的不断涌现,对于向量数据库需求也大增。




下面是一些常用的向量数据库。

1. Faiss (Facebook AI Similarity Search):

2. Annoy (Approximate Nearest Neighbors Oh Yeah):

3. HNSW (Hierarchical Navigable Small World):

4. Elasticsearch with k-NN Plugin:

5. Milvus:

6. Pinecone:

7. Weaviate:

8. Vectara:


上述所提到的目前主流的向量数据库方案,在向量数据的存储成本、召回率等方面都面临较大的挑战。随着非结构化数据的进一步增长,成本和召回率的挑战会变得越来越棘手。在向量数据库的演讲方向上目前有以下发展趋势


1. 存储和索引优化


2. 召回率优化



3. 系统架构和基础设施


▐工作流程

RAG的工作流程涉及3个主要阶段:数据准备、数据召回和答案生成。数据准备阶段包括识别数据源、从数据源提取数据、清洗数据并将其存储在数据库中。数据召回阶段包括根据用户输入的查询条件从数据库中检索相关数据。答案生成阶段则是利用检索到的数据和用户输入的查询条件生成输出结果。输出质量的高低取决于数据质量和检索策略。




根据LLM需要处理的任务类型,数据准备通常包括识别数据源、从数据源中提取数据、清洗数据并将其存储在数据库中等环节。用于存储数据的数据库类型和准备数据的步骤可能会因应用场景和检索方法的不同而有所变化。例如,如果使用像Faiss这样的向量存储库,需要为数据创建嵌入并将其存储在向量存储库中;如果使用像Elasticsearch这样的搜索引擎,需要将数据索引到搜索引擎中;如果使用像Neo4j这样的图数据库,需要为数据创建节点和边,并将它们存储到图数据库中。



数据召回部分的主要任务是从大型文本数据库中检索与输入关的信息。为了尽可能保证正确答案被送入生成器部分,数据召回部分的召回率显得非常重要。一般来说,召回的数量越大,正确答案被召回的概率也就越高,但同时会面临大模型上下文长度限制的问题。


许多开源博客或框架在这部分的流程中都采用向量搜索出最相近的k个候选。例如,如果我们正在构建一个问答系统,并使用向量数据库存储相关数据块,可以为用户的问题生成向量,对向量数据库中的向量进行相似性搜索并检索最相似的数据块。除此之外,还可以根据用户问题,对同一数据库进行混合搜索或使用多个数据库进行搜索,并将结果组合起来作为生成器的上下文进行传递。

关于检索这部分,还有许多提高检索效果的技巧,这会引入更多的小模块,例如候选重排、大模型辅助召回等,这些都属于数据检索的范畴。



一旦检索到用户问题相关的数据片段,RAG系统就将其与用户的问题和相关数据一起传递给生成器(LLM)。LLM利用检索到的数据和用户的查询或任务生成输出。输出的质量取决于数据的质量和检索策略,同时生成输出的指令也会极大地影响输出的质量。



RAG的优点


前面介绍了RAG的基础内容,下面来具体梳理一下RAG的优点。


高质量的答案生成,降低答案生成的幻觉

RAG的一个优点是它能够生成高质量的回答。因为在生成过程中,检索器可以从大量文档中检索问题相关的信息,然后基于这些信息生成回答。这使得整个系统能够充分利用现有知识生成更准确、更具深度的回答,也意味着模型出现幻觉答案的概率更小。


可扩展性

RAG展示了出色的可扩展性,这意味着它能够轻松适应新数据和任务。利用RAG的检索—生成框架,只需更新检索部分的数据,模型便可适应新的知识领域。这使得RAG能够在面对新领域或不断变化的知识库时保持高度的适应性。


模型可解释性

RAG具有一定程度的可解释性,这意味着我们可以理解模型是如何生成回答的。由于RAG的特性,我们可以很容易地追溯模型是从哪些文档中提取信息的。这使得我们可以评估模型的回答是否基于可靠的数据来源,从而提高模型的可信度。


成本效益

由于RAG的知识库能够与生成模型解耦,因此只要拥有一定的数据量,企业便可将RAG作为微调的替代方法,而微调可能需要大量资源。这种模式对中小企业非常友好。从另一个角度来看,由于企业的数据都是私有的,提供相关文档作为背景信息可以使生成结果更加准确、更具实用性,以满足企业的特定任务需求。


RAG的缺点

依赖于检索模块

RAG系统给出的答案极其依赖于检索的质量。如果检索到的文档与问题无关或质量较低,生成的回答也可能质量较低。如果搜索的文档并未覆盖到问题的答案,那模型也基本无法回答用户提出的问题。因此,在实际应用中,我们会利用很多策略来提高文档片段的召回率。在很多场景中,文档片段的时效性也是要考虑的一部分,例如金融场景,用户咨询10月份的金股是什么,如果召回片段不包含10月份的券商金股研报,甚至召回很多旧的金股研报,那对最后的大模型生成会产生很大的干扰。还有很多其他的召回情况都会影响到模型的结果生成,因此想构建一个好的RAG系统,检索部分是极其重要的,需要花费大量的时间来打磨。


依赖于现有的知识库

RAG依赖于一个现有的文档数据库进行检索。首先,如果没有一个大规模的知识库,就无法发挥RAG的优点。其次,如果知识库覆盖面不够,无法召回相应的知识块,那么模型因为需要遵循指令的约束而无法给出答案,这就会影响到整个系统的问题覆盖率。


推理耗时

由于RAG系统需要先检索文档,然后生成答案,相比于纯粹的大模型推理,整个系统的推理耗时会更长。在这种情况下,对于一些延时要求高的场景就无法满足需求。不过这个耗时问题属于大模型的通病,在使用网页端ChatGPT的时候,它以流式打字机的模式展示并按字来输出结果,所以用户可能不会感觉很慢,但如果统计从问题发送到答案完整生成这个过程,耗时还是非常长的。


上下文窗口限制

召回模块输出的文档片段数量需要考虑到生成模型能处理的最大长度,例如最早的ChatGPT(GPT-3.5-turbo)的最大上下文长度是4096个token。如果你的文档片段是512个token的长度,那实际上需要使用8个片段(512×8 = 4096),所以召回部分就需要考虑如何在这8个片段中把召回率做到最优。不过也有其他的折中方案,可以召回更多的文档片段。例如,可以采用对检索的文档片段进行压缩,借助大模型进行要点总结之类的策略。也可以对生成端的模型应用长度外推技巧,现有的长度外推策略已经比较成熟,有很多非常优秀的外推策略,可以让模型推理的长度远远超过训练阶段的长度。


▐提示词工程



提示词工程(Prompt Engineering)是一种在人工智能和自然语言处理领域中开发和设计提示词(Prompts)以引导大型语言模型(例如GPT-3等)产生特定输出的方法。通过精心构建和优化提示词,用户可以更有效地获得所需的答案、生成文本或执行其他自然语言处理任务。


提示词工程的关键在于找到合适的语言和结构来清晰地表达问题或任务,使得模型可以更准确地理解并给出相关的回应。这可能涉及反复试验、调整提示词的细节,以及利用对模型行为的理解来优化结果。接下来通过一些基础案例介绍如何优化Prompt使得大模型更好的回答我们的问题。

▐模型微调

QLoRA(Quantized LoRA)

QLoRA是模型量化和 LoRA 的结合。除了增加了 LoRA 旁路,QLoRA 在加载时将大模型量化成 4bit 或者 8bit,但在计算时,又将该部分的参数反量化成 16bit 进行计算,其优化了非使用状态模型参数的存储,与 LoRA 相比进一步降低训练时显存消耗。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5