大模型应用初学指南

news2025/5/19 4:42:56

        随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式,RAG 的核心原理及其在实际应用中的挑战与解决方案,通用大模型在知识局限性、幻觉问题和数据安全性等方面的不足,随后详细介绍了 RAG 通过 “检索 + 生成” 模式如何有效解决这些问题,RAG 利用向量数据库高效存储与检索目标知识,并结合大模型生成合理答案,RAG 的关键技术进行了全面解析,包括文本清洗、文本切块、向量嵌入、召回优化及提示词工程等环节,针对 RAG 系统的召回效果与模型回答质量,本文提出了多种评估方法,为实际开发提供了重要参考

一、人工智能术语或书籍

LLM,chatGPT,RAG,Agent 等等的术语,AI:Artificial Intelligence 的缩写,指 “人工智能”,AIGC:AI Generated Content 的缩写,意指由人工智能生成的内容。在算法和数码内容制作领域,AIGC 涉及使用人工智能技术生成各种形式的内容,比如文字、图像、视频、音乐,

Transformer:一种用于自然语言处理(NLP)任务的深度学习模型

BERT:Bidirectional Encoder Representations from Transformers 的缩写,是一种自然语言处理(NLP)的预训练模型

PEFT:Parameter-Efficient Fine-Tuning 的缩写,中文高效参数微调

LoRA:Low-Rank Adaptation 的缩写,一种用于微调大规模语言模型的一种技术

LLM:Large Language Model 的缩写,指 “大语言模型”

RAG:Retrieval-Augmented Generation 的缩写,指 “检索增强生成”,这是一个跨越检索和生成任务的框架,通过先从数据库或文档集合中检索到相关信息

Agent:中文叫智能体,一个能独立执行任务和做出决策的实体,在人工智能中

GPT:Generative Pre-trained Transformer 的缩写,指 “生成式预训练变换器”

LLaMA:Large Language Model Meta AI 的缩写,是由 Meta 开发的一系列大型自然语言处理模型

chatGPT:由 OpenAI 开发的一种基于 GPT(生成预训练变换模型)架构的人工智能聊天机器人

Prompt:指的是提供给模型的一段初始文本,用于引导模型生成后续的内容

Embedding:中文叫嵌入,是一种将高维数据映射到低维空间的技术,但仍尽可能保留原数据的特征和结构。嵌入技术通常用于处理和表示复杂的数据如文本、图像、音乐以及其他高维度的数据类型

二、向量数据库

非结构化数据呈现出高速增长的趋势。图片、音频、视频等非结构化数据的存储和检索需求也变得越来越多

IDC DataSphere 数据显示 IDC FutureScape:2024年中国数据和分析市场十大预测

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

        向量数据库是用于存储和查询高维向量数据的数据库,通常在搜索、推荐系统、图像识别、自然语言处理等领域中广泛使用。

常用的向量数据库

1. Faiss (Facebook AI Similarity Search):

  • 开发者:Facebook AI Research

  • 特点:高效的相似性搜索和密集向量聚类,支持 CPU 和 GPU 加速。

  • 适用场景:图像相似性搜索、大规模推荐系统等。

2. Annoy (Approximate Nearest Neighbors Oh Yeah):

  • 开发者:Spotify

  • 特点:基于内存的高效最近邻搜索,使用构建的可持久化树数据结构。

  • 适用场景:音乐推荐、快速搜索等。

3. HNSW (Hierarchical Navigable Small World):

  • 开发者:Yury Malkov(和其他社区贡献者)

  • 特点:小世界图算法,高效的近似最近邻搜索,支持动态插入和删除。

  • 适用场景:实时搜索和推荐系统。

4. Elasticsearch with k-NN Plugin:

  • 开发者:Elastic

  • 特点:在 Elasticsearch 之上添加 k-NN 搜索功能,结合全文搜索和向量搜索。

  • 适用场景:综合搜索引擎,需要同时支持文本和向量查询的场景。

5. Milvus:

  • 开发者:ZILLIZ

  • 特点:分布式、高性能向量数据库,支持大规模数据管理和检索。

  • 适用场景:图像、视频、文本等大规模向量数据的存储和检索。

6. Pinecone:

  • 开发者:Pinecone

  • 特点:专用于机器学习应用程序的向量数据库,易于集成和扩展。

  • 适用场景:个性化推荐、语义搜索、实时机器学习应用等。

7. Weaviate:

  • 开发者:SeMI Technologies

  • 特点:开源的向量搜索引擎,支持上下文感知的语义搜索,扩展性强。

  • 适用场景:知识图谱构建、语义搜索、推荐系统。

8. Vectara:

  • 开发者:Vectara, Inc.

  • 特点:基于向量的全托管搜索服务,专注于语义搜索和相关性。

  • 适用场景:搜索引擎优化、自然语言处理应用。

        在向量数据的存储成本、召回率等方面都面临较大的挑战。随着非结构化数据的进一步增长,成本和召回率的挑战会变得困难

1. 存储和索引优化
  • 量化技术:使用向量量化(Vector Quantization, VQ)技术,例如产品量化(Product Quantization, PQ)或乘积量化(Additive Quantization, AQ),可以在保证精度的同时大幅度减少存储和计算资源。

  • 压缩向量:采用哈希方法如局部敏感哈希(Locality-Sensitive Hashing, LSH)来减少存储消耗,并加速相似性搜索。

  • 分布式存储:使用分布式文件系统和数据库(如 Apache Hadoop、Cassandra)可以优化存储和查询的大规模向量数据。

  • 存储器级别调整:利用固态硬盘(SSD)甚至是新兴的持久化内存(Persistent Memory, PMEM)来在内存和磁盘之间找到平衡,优化存储成本。

2. 召回率优化
  • 混合搜索技术:结合粗粒度和细粒度的索引,例如先使用粗滤技术快速缩小搜索范围,然后进行精确查找。

  • 近似最近邻查找(ANN)算法:如 HNSW(Hierarchical Navigable Small World)图、FAISS 中使用的 ANN 算法可以在保证高召回率的基础上优化搜索速度。

  • 多层次检索:分层结构的检索方法,从粗到细进行,逐步提高召回率和精度。

4. 专用硬件加速
  • GPU 和 TPU:使用专门的硬件加速器,如 GPU(图形处理单元)或 TPU(张量处理单元),以加速向量计算和相似性搜索。

  • FPGA:使用可编程门阵列(FPGA)为特定向量计算任务定制硬件加速,以提高效率和降低延迟。

5. 持续优化和更新模型
  • 动态索引更新:随着非结构化数据的增长和变化,保持索引和向量表示的及时性,使用在线或增量更新的方法管理索引。

  • 自适应模型:利用机器学习和深度学习模型不断优化向量表示的嵌入质量,使得向量检索更加精准有效

6. 先进的嵌入技术
  • 预训练模型:使用当前的预训练语言模型(如 BERT、GPT-3)进行上下文嵌入,捕捉复杂的语义信息。

  • 多模态嵌入:对于不同类型的数据(如文本、图像、视频),使用多模态嵌入模型来统一表示和处理,提升检索性能。

  • AutoGen 框架

AutoGen 是一个能让多个 Agent 进行沟通协作的 Python 开源框架。核心解决两个问题:

第一个问题:如何设计用户可定制、可重用的、能够互相协作的 Agent。AutoGen 是要设计为一个通用的能够适用多种场景的框架,在 AutoGen 的官网 Examples 中给出了在多种场景下能够解决问题的例子,此外在 git 仓库中的 notbook 目录中有 50 + 例子。有解决数学问题场景、有通过开发代码进行分析的场景(比如上一章节的列子)、还有通过五六个 Agent 讨论分析开放问题的场景。所以 Agent 的扩展能力是需要重要考虑问题,AutoGen 中通过支持多种外部工具、不同 LLM、支持 human in the loop 的方式,Agent 之间能够通信的方式来解决扩展问题。

第二个问题:如何让 Agent 能灵活支持不同模式的会话方式。不同的场景,根据复杂度、问题的类型需要不同的 Agent 会话模式。这里的 “模式” 包括了单轮对话 or 多轮对话、自动选择每轮的 speaker or 通过规则选择、通过自然语言控制逻辑 or 通过代码控制,此外设计需要考虑多个 Agent 之间如何灵活 “组网”,比如三人一组,每组一个 leader,组内互相通信,leader 能够通信的方式。

为了解决这两个问题,AutoGen 抽象了一些基础概念。

Conversable Agents

旨在用于在复杂任务中进行多轮交互。这些智能体能够理解和处理用户输入,维护上下文,并生成合适的响应。Conversable Agents 通常集成了自然语言处理技术,包括自然语言理解(NLU)和自然语言生成(NLG),以提高对话的流畅性和智能性

Conversation Programming

旨在通过自然语言与人工智能系统进行交互,来实现编程和任务自动化。这个概念试图简化编程过程,使得用户无需深厚的编程背景也能使用自然语言描述需求,进而生成可执行的代码或自动化脚本。

MetaGPT 的主要工作流程和特点包括:

  • 角色定义(Role Definitions):MetaGPT 通过定义不同的角色(如产品经理、架构师、项目经理等)来封装每个角色的特定技能和业务流程。这些角色类继承自一个基础角色类,具有名称、简介、目标、约束和描述等关键属性。角色定义帮助 LLM 生成符合特定角色要求的行为。

  • 任务分解(Task Decomposition):MetaGPT 将复杂的软件开发任务分解成更小、更易于管理的部分,然后将这些子任务分配给合适的智能体执行。

  • 流程标准化(Process Standardization):MetaGPT 定义了一系列标准化操作,每个操作都具有前缀、LLM 代理、标准化输出模式、执行内容、重试机制等属性。这些标准化操作确保了智能体之间的协作是一致的,输出的结果也是结构化的。

  • 知识共享(Knowledge Sharing):MetaGPT 通过环境日志复制消息,智能体可以根据自己的角色订阅感兴趣的消息类型。这种方式使智能体可以主动获取相关信息,而不是被动地通过对话获取。

  • 端到端开发(End-to-End Development):从产品需求到技术设计,再到具体编码,MetaGPT 通过多智能体的协作可以完成整个软件开发生命周期。

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

  • 数据准备

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

RAG 的优点。

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

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

五、大模型框架

LangChain 是一个开源的应用开发框架,目前支持 Python 和 TypeScript 两种编程语言。它赋予 LLM 两大核心能力:数据感知,将语言模型与其他数据源相连接;代理能力,允许语言模型与其环境互动。

来源

  • 《大模型 RAG 实战:RAG 原理、应用与系统构建》:https://m.douban.com/book/subject/37104428/

  • 《从 AIGC 典型客户实践揭秘云原生向量数据库内核设计与智能创新》: https://www.infoq.cn/article/5frz8imatl9yevqjofct

  • AutoGen Blog 官网: https://microsoft.github.io/autogen/0.2/blog/

  • 《AI Agent【项目实战】:MetaGPT 遇上元编程,重塑复杂多智能体协作的边界》: https://xie.infoq.cn/article/a9977d01e3131bf951ba28e72

 

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

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

相关文章

如何通过管理系统提升团队协作效率

在现代企业管理中,团队协作效率的高低直接关系到企业的竞争力和运营效率。随着信息技术的不断发展,管理系统作为提升团队协作效率的重要工具,逐渐受到企业的重视。本文将深入探讨如何通过管理系统提升团队协作效率,为企业提供实用…

云手机如何防止设备指纹被篡改

云手机如何防止设备指纹被篡改 云手机作为虚拟化设备,其设备指纹的防篡改能力直接关系到账户安全、反欺诈和隐私保护。以下以亚矩阵云手机为例,讲解云手机防止设备指纹被篡改的核心技术及实现方式: 系统层加固:硬件级安全防护 1…

XT1870 同步升压 DC-DC 变换器

1、 产品概述 XT1870 系列产品是一款低功耗、高效率、低纹波、工 作频率高的 PFM 控制升压 DC-DC 变换器。 XT1870 系列产品仅需要 3 个外部元器 , 即可完成低输 入的电池电压输入。 2、用途 数码相机、电子词典 LED 手电筒、 LED 灯 血压计、MP3 、遥控玩具 …

seaweedfs分布式文件系统

seaweedfs https://github.com/seaweedfs/seaweedfs.git go mod tidy go -o bin ./… seaweed占不支持smb服务,只能用fuse的方式mount到本地文件系统 weed master 默认端口:9333,支持浏览器访问 weed volume 默认端口:8080 weed …

Spring Boot后端开发全攻略:核心概念与实战指南

🧑 博主简介:CSDN博客专家、全栈领域优质创作者、高级开发工程师、高级信息系统项目管理师、系统架构师,数学与应用数学专业,10年以上多种混合语言开发经验,从事DICOM医学影像开发领域多年,熟悉DICOM协议及…

通过 Markdown 改进 RAG 文档处理

通过 Markdown 改进 RAG 文档处理 作者:Tableau 原文地址:https://zhuanlan.zhihu.com/p/29139791931 通过 Markdown 改进 RAG 文档处理https://mp.weixin.qq.com/s/LOBOKNA71dANXHuwxe7yxw 如何将 PDF 转换为 Markdown 以获得更好的 LLM RAG 结果 Mar…

高速电路 PCB 设计要点一

3 高速电路 PCB 设计要点 3.1 PCB设计与信号完整性 随着电子技术的发展,电路的规模越来越大,单个器件集成的功能越来越多,速率越来越高,而器件的尺寸越来越小。由于器件尺寸的减小,器件引脚信号变化沿的速率变得越来…

【Centos】centos7内核升级-亲测有效

相关资源 通过网盘分享的文件:脚本升级 链接: https://pan.baidu.com/s/1yrCnflT-xWhAPVQRx8_YUg?pwd52xy 提取码: 52xy –来自百度网盘超级会员v5的分享 使用教程 将脚本文件上传到服务器的一个目录 执行更新命令 yum install -y linux-firmware执行脚本即可 …

Opencv计算机视觉编程攻略-第八节 检测兴趣点

目录 1.检测图像中的角点 2.快速检测特征 3.尺度不变特征的检测 4.多尺度FAST 特征的检测 在计算机视觉领域,兴趣点(也称关键点或特征点)应用包括目标识别、图像配准、视觉跟踪、三维重建等。这个概念的原理是,从图像中选取某…

基于微信小程序的医院挂号预约系统设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大…

如何保障话费api接口的稳定性?

保障话费接口的稳定性是确保服务高效运行的关键。以下是基于最新信息的建议: 1. 选择可靠的API服务提供商 信誉和稳定性:选择有良好声誉和稳定服务记录的提供商,查看其服务水平协议(SLA)以确保高可用性。技术支持&…

video标签播放mp4格式视频只有声音没有图像的问题

video标签播放mp4格式视频只有声音没有图像的问题 这是由于视频格式是hevc(H265)编码的,这种编码格式视频video播放有问题主要是由于以下两种原因导致的: 1、浏览器没有开启硬加速模式: 开启方法(以谷歌浏览器为例)&a…

解决docker部署的容器第二天访问报错139的问题

前阵子我部署项目,把数据库放宿主机上,结果电脑一重启,Docker 直接把数据库删了个精光!我当时的表情 be like 😱:"我的数据呢???" 连备份都没来得及做&#xf…

如何对接银行卡二要素核验接口?

银行卡二要素核验接口是一种通过API(应用程序编程接口)实现对用户提供的银行卡信息进行基本身份验证的技术服务,主要用于核验银行卡号与持卡人姓名是否一致,从而确认用户身份的真实性和操作合法性。 银行卡二要素核验接口通过调用…

深度学习——深入解读各种卷积的应用场景优劣势与实现细节

前言 卷积操作在深度学习领域中占据着核心地位,其在多种神经网络架构中发挥着关键作用。然而,卷积的种类繁多,每种卷积都有其独特的定义、应用场景和优势。 对于那些对深度学习中不同卷积类型(例如 2D 卷积、3D 卷积、11 卷积、转…

Pyinstaller 打包flask_socketio为exe程序后出现:ValueError: Invalid async_mode specified

Pyinstaller 打包flask_socketio为exe程序后出现&#xff1a;ValueError: Invalid async_mode specified 一、详细描述问题描述 Traceback (most recent call last): File "app_3.py", line 22, in <module> File "flask_socketio\__init__.py"…

chromium魔改——navigator.webdriver 检测

chromium源码官网 https://source.chromium.org/chromium/chromium/src 说下修改的chromium源码思路&#xff1a; 首先在修改源码过检测之前&#xff0c;我们要知道它是怎么检测的&#xff0c;找到他通过哪个JS的API来做的检测&#xff0c;只有知道了如何检测&#xff0c;我们…

【力扣hot100题】(048)二叉树的最近公共祖先

依旧只会用递归栈。 栈记录当前遍历的节点&#xff0c;如果有一个节点已经被找到&#xff0c;则不往栈中添加新节点&#xff0c;并且每次回溯删除栈顶节点&#xff0c;每次回溯判断另一个节点有没有在栈顶节点的右边。 /*** Definition for a binary tree node.* struct Tree…

爬虫:请求头,requests库基本使用

请求方式&#xff1a;get(向服务器要资源)和post(提交资源) user-agent&#xff1a;模拟正常用户的一种方式 cookie&#xff1a;登陆保持 referer&#xff1a;表示当前这一次请求是由哪个请求过来的 抓取数据包得到的内容才是判断依据elements中的源码是渲染之后的不能作为…

[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议

第一步&#xff1a;先理解最基础的关系&#xff08;类比快递&#xff09; 假设你要给朋友寄快递&#xff1a; Wi-Fi&#xff1a;相当于“公路和卡车”&#xff0c;负责把包裹从你家运到快递站。 TCP/UDP&#xff1a;相当于“快递公司的运输规则”。 TCP&#xff1a;顺丰快递&…