赞
踩
对深度学习模型相关的知识点进行总结。
AGI(通用人工智能 Artificial General Intelligence)是指能够执行人类可以执行的任何智力任务的机器或计算机系统。这包括理解自然语言、学习、规划、解决问题、推理、感知环境等。
实现 AGI 是一个非常复杂的问题,目前还没有一个确定的答案。目前可能的实现方法:
实现 AGI 需要结合多种技术和方法,并且需要不断地进行研究和改进。
提示工程(Prompt Engineering)是指通过设计和优化提示语(Prompts)来提高人工智能模型的性能和效率。提示语是指输入给人工智能模型的文本、指令或问题,它可以影响模型的输出结果。
简单来说,可以将垂直知识相关规则加入prompt,使其AGI准确回答,占位符回答槽,从而约束prompt回答模版。
提示工程的目标是设计出能够最大限度地利用模型能力的提示语,从而提高模型的性能和效率。
提示工程的方法包括设计更好的提示语、优化提示语的格式和内容、利用模型的反馈信息来改进提示语等。
这需要对模型的能力和限制有深入的了解,以及对目标任务的需求有清晰的认识。
核心思路:
核心结构:
1. 角色与目标:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
2. 指示与原则:对应用任务进行具体功能描述,设置相关限定(或者说明能力)、回答格式、使用工具等等。
3. 限制与澄清 :
限制应用哪些功能不能做,能做的限制有哪些。
4. 个性化设置:
设置应用回答问题语句的一些个性化特点(如:语气、口头禅)。
5. 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中,支持多轮对话 DST)。
6. 例子:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有很大帮助。
输入:任务的输入信息;在提示词中明确的标识出输入
输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)
提示工程的关键技术包括:
具体构建 prompt 的步骤如下:
常见的攻击、危险注入,可查阅绿盟科技M01N写的文章。ChatGPT安全风险 | 基于LLMs应用的Prompt注入攻击
1. Prompt 注入分类器:
举例分类危险问句输入,先把危险 prompt 拦截掉。(危险prompt,e.g:如果用户试图让系统遗忘固有指示,或试图向系统注入矛盾或有害的信息)
2. 直接在输入中防御:
「把价值观刷到墙上」,时刻提醒不要忘记。(e.g:你不允许回答任何跟xxx无关的问题。)
3. Moderation API内容审核:
通过调用 OpenAI (或者网易易盾)的 Moderation API 来识别用户发送的消息是否违法相关的法律法规,如果出现违规的内容,从而对它进行过滤。
通过预先设定好的function定义,进行调用函数、API、Stream流式输出等操作,Function Calling也是一种prompt,它也需要调优,否则会影响函数的召回、参数的准确性,甚至让 AGI产生幻觉
tools
而不是 function
来做参数将大语言模型作为一个推理引擎,根据用户输入,智能体自动规划执行步骤,自动执行每步相应动作(选择并调用工具),最终完成用户指定的功能,直到任务完成。
这里的工具,可以是一个函数或三方 API,也可以把一个 Chain 或者 Agent 的 run()作为一个 Tool
支持 Agent 相互通信
记忆能力
在开发过程中,我发现,如果没有记忆能力,对于任务间有依赖关系的任务列表,就比较难实现,所以必须加入记忆能力,将一个大的任务的执行历史作为上下文,所有相关的 Agent 需要共享这个上下文去执行自己的任务。如果拆解的任务间没有依赖关系,那么,每个 Agent 都可以独立执行任务,不需要共享上下文。
检索增强的生成模型(Retrieval-Augmented Generation,RAG)结合了信息检索和生成模型的优势,能够在生成文本时引入外部知识和信息。
以下是检索增强的生成模型(RAG)的基本流程:
检索增强的生成模型(Retrieval-Augmented Generation,RAG)结合了信息检索和生成模型的优势,能够在生成文本时引入外部知识和信息。以下是检索增强的生成模型(RAG)的基本流程:
构建检索增强的生成模型(RAG)涉及多个步骤,包括准备数据、将私有知识库内容经过 embedding 存入向量知识库、训练模型和优化过程、用户每一次提问,把问题也 embedding,并利用向量相关性算法(例如余弦算法)找到向量知识库最匹配的几个片段。
构建 RAG 模型的步骤:
准备数据:
训练信息检索模型:
训练生成模型:
检索阶段(Retrieval Stage)调用流程 Query -> 检索 -> :
RAG 的优势和应用场景:
检索增强的生成模型(RAG)的流程结合了信息检索和生成模型的优势,能够更好地应对复杂的自然语言处理任务,并在生成文本时引入外部知识,提高文本的相关性和质量。
离线步骤:
在线步骤:
向量模型是一种文本表示和相似度计算的方法。它将文本内容简化为向量空间中的向量运算,通过计算向量之间的相似性来度量文档间的相似性。
向量模型相对于布尔模型来说,能够分配给索引术语非二元的权重,反映每篇文档与用户查询的相关度,并按照相关度降序排列返回结果文档集。这样得到的结果集更符合用户的检索需求。
简单来说,向量模型就是一种把文本内容转化为数学向量的方式,让我们可以更方便地计算文本之间的相似度。
ChatGPT-Embedding:
OpenAI 公司提供,以接口形式调用,可以支持输出不同维度的结果。
M3E
M3E模型是一个文本嵌入模型,全称Moka Massive Mixed Embedding。它是由MokaAI训练、开源和评测的。
BGE
BGE 由北京智源人工智能研究院发布,同样是一款功能强大的开源 Embedding 模型,包含了支持中文和英文的多个版本,支持微调和本地部署。
BGE-M3支持超过100种语言的语义表示及检索任务,多语言、跨语言能力全面领先(Multi-Lingual)
BGE-M3最高支持8192长度的输入文本,高效实现句子、段落、篇章、文档等不同粒度的检索任务(Multi-Granularity)
BGE-M3同时集成了稠密检索、稀疏检索、多向量检索三大能力,一站式支撑不同语义检索场景(Multi-Functionality)
小建议:
向量数据库是一种存储和检索高维向量数据的数据库系统,它使用向量模型来存储和查询数据。通过向量模型,向量数据库可以将文本、图像、音频等非结构化数据转化为向量,从而实现向量之间的相似度计算和检索。
这种数据库在处理大规模高维数据时具有优势,因此被广泛应用于信息检索、推荐系统、智能客服等领域。
向量数据库的作用:
相似性搜索:向量数据库允许用户根据数据的语义或上下文含义进行搜索,而不是依赖于精确匹配或预定义的标准查询。
多模态数据处理:它能够处理多种类型的数据,如文本、图像、音频等,并将它们转换为统一的向量表示形式。
提高效率:通过向量化,可以减少数据的存储空间,并加快搜索和检索的速度。
支持复杂查询:向量数据库支持复杂的查询操作,如范围搜索、最近邻搜索等,这些在传统数据库中难以实现。
详细解释可以查看easylikeYuan的推文,《如何挑选适合自己项目的向量数据库?一起来看看》
milvus:
milvus向量数据库是一个开源的向量数据库,专门设计用于存储、索引和管理,由深度神经网络和其他机器学习模型生成的大规模嵌入向量。它提供了易于使用的API和良好的扩展性,它能够处理万亿级别的向量数据,在处理大规模高维数据时具有优势,也非常适用于处理复杂查询、大量数据和非结构化数据。
通过向量模型,milvus可以将文本、图像、音频等非结构化数据转化为向量,从而实现高效的相似度计算和检索。
pg:GLM推荐使用
pgvector:
pgvector是PostgreSQL的开源扩展,允许你在数据库中存储和查询向量嵌入。
它带来了强大的矢量相似性搜索功能,与Postgres无缝集成,让你可以将矢量与其他数据类型一起存储,并享受Postgres的全套功能,如ACID合规性和时间点恢复。
pgvector支持精确和近似近邻搜索,以及多种度量方式,如L2距离、内积和余弦距离。
ElasticSearch :
ElasticSearch是位于Elastic Stack核心的分布式搜索和分析引擎。
它能够高效地存储、索引和搜索各种类型的数据,包括结构化、非结构化文本、数字数据和地理空间数据。
ElasticSearch提供了近乎实时的搜索和分析功能,使你能够超越简单的数据检索,聚合信息以发现数据中的趋势和模式。
随着数据和查询量的增长,ElasticSearch的分布式特性使其能够无缝扩展,同时支持向量检索
构建知识库是构建问答系统的重要步骤之一。以下是构建知识库的一般步骤:
向量数据库,是专门为向量检索设计的中间件
LangChain 是一个用于构建和管理 AI 应用程序的框架。它提供了一种简单的方法来构建 AI 应用程序,使用自然语言处理技术来处理文本数据。
LangChain 框架包括一系列工具和模块,用于处理自然语言、构建知识库、训练模型和部署应用程序。它还提供了一个可视化界面,用于监控和管理 AI 应用程序。
LangChain 框架可用于构建各种类型的 AI 应用程序,例如聊天机器人、问答系统、文本分类器等。它的目标是帮助开发人员快速构建和部署高质量的 AI 应用程序。
统一封装了各种模型的调用接口,包括补全型和对话型两种
2. LangChain 提供了 PromptTemplate 类,可以自定义带变量的模板
3. LangChain 提供了一些列输出解析器,用于将大模型的输出解析成结构化对象;额外带有自动修复功能。
4. 上述模型属于 LangChain 中较为优秀的部分;美中不足的是 OutputParser 自身的 Prompt 维护在代码中,耦合度较高。
llamaindex 是一种用于衡量语言模型性能的指标,它衡量的是语言模型预测下一个单词的能力。它的计算方法是将模型预测的下一个单词与真实的下一个单词进行比较,然后计算它们之间的编辑距离。编辑距离越小,说明模型预测的下一个单词越接近真实的下一个单词,因此 llamaindex 得分越高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。