
ChatGPT
文章平均质量分 94
-派神-
每天进步一点点……
展开
-
大语言模型(LLM)量化基础知识(一)
随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件(加速器内存)增长速度之间的差距越来越大,如下图所示:加速器(一般指GPU)是专门的硬件,用于加速机器学习训练。它们的内存容量对于训练大型模型至关重要。上图显示了模型大小和加速器内存之间不断增长的差距。“差距”表示模型大小的增长速度远远超过了硬件内存容量的增长速度。这种差距对 LLM 的训练和部署提出了重大挑战。2022 年,模型规模达到了顶峰,但到了 2023 年,人们发现中等规模的模型(~70B 参数)在实际应用中更加实用和高效。原创 2024-11-04 11:05:26 · 1398 阅读 · 0 评论 -
RAG进阶(二): RAG 融合(rag fusion)
今天我们来介绍RAG 融合(rag fusion),它的主要思想是在Multi Query的基础上,对其检索结果进行重新排序(即reranking)后输出Top K个最相关文档,最后将这top k个文档喂给LLM并生成最终的答案(answer)。原创 2024-05-06 17:10:09 · 5471 阅读 · 0 评论 -
RAG(检索增强生成)的基础知识总结: 关于token
token可以被认为是单词(词语)的片段, 在用户对大语言模型提出问题的时候,我们的输入(prompt)会被分解成一组token, 在英语的句子中单词之家存在空格,一些常见的单词可能会被切割成独立的token, 但并非所有的单词都会被切割成独立的token, 有时候一个单词可能会被切割成多个token, token可以包含尾随在单词后面空格甚至子单词。或者因此可以这么认为一个句子,或者一篇文章它们的token总数往往会大于句子或者文章的单词总数。原创 2024-03-22 13:16:11 · 2519 阅读 · 0 评论 -
AutoGen实战应用(二):多代理协作(Multi-Agent Collaboration)
在今天介绍了AutoGEN中的多代理协作(Multi-Agent Collaboration)的基本原理,即当我们遇到较为复杂的任务时我们可以创建多个agent,并且为每个agent赋予不同的角色如(user_proxy, coder,pm)等,并且每个角色都要有角色说明(system_message),通过角色说明可以让LLM充分了解当前agent的作用,同时我们还创建了一个GroupChat组和组管理员manager,并且将所有的agent都放入GroupChat组中,这样通过manager的广播机制就原创 2024-01-27 22:36:21 · 5079 阅读 · 0 评论 -
高级RAG(八): 自动合并检索(Auto-merging Retrieval)
关于自动合并检索评估的方法总结和补充说明:使用不同的文档层次结构参数进行迭代(级别数、子级数)和不同的块大小使用 RAG三元组评估应用程序版本跟踪实验以选择最佳的文档分割的层次结构参数找到关于最适合某些文档类型的超参数(文档层次结构参数)的直觉自动合并检索是对句子-窗口检索的补充原创 2024-01-19 13:24:36 · 3578 阅读 · 0 评论 -
高级RAG(七): 评估句子-窗口检索
今天我们详细介绍了如何使用trulens对LlamaIndex的句子窗口检索结果进行评估,基于成本的考虑我们只进行了两轮评估,从评估的结果上看 Sentence window size =1 似乎是个较为理想的值,因为它的各项指标均由于Sentence window size =3,希望今天的内容对大家学习RAG有所帮助。原创 2024-01-16 13:23:47 · 2088 阅读 · 0 评论 -
高级RAG(五):TruLens 评估-扩大和加速LLM应用程序评估
今天我们学习了TruLens评估的基本原理,其中包括RAG三元组Context Relevance,Groundedness和Answer Relevance的定义和作用,然后我们又使用llamaIndex开发了基本RAG应用,最后我们使用了TruLens的反馈函数对基本RAG的检索结果进行了评估。希望今天的内容对大家学习RAG有所帮助.原创 2024-01-08 19:03:30 · 3799 阅读 · 0 评论 -
高级RAG(三):llamaIndex从小到大的检索
LlamaIndex是一个用于连接大语言模型(LLMs)和外部数据源的数据框架,它可以让LLMs访问和利用私有或领域特定的数据。数据连接:支持从本地文件、Notion、Google文档、Slack、Discord等多种数据源读取数据。数据索引:支持构建不同类型的索引结构,如列表索引、向量索引、树形索引、关键词表索引等,以便快速检索和过滤数据。查询接口:支持使用自定义的输入提示(prompt)与LLMs进行交互,以获取知识增强的响应。原创 2023-12-28 16:37:57 · 5275 阅读 · 0 评论 -
使用python快速开发各种聊天机器人应用
Panel是一个开源的Python库,它可以让你用Python轻松地构建强大的工具、其中包括聊天机器人程序,今天我们使用panel快速开发了ChatGPT,Gemini,Langchain的聊天机器人应用。通过使用使用panel库,我们可以开发出功能强大界面美观的web机器人程序。原创 2023-12-26 16:45:54 · 1496 阅读 · 0 评论 -
高级RAG(二):父文档检索器
今天我们学习了langchain的父文档检索器,父文档检索器有两种工作方式即检索完整文档,和检索较大的文档块,其中检索完整文档的前提条件是原始文档的大小不能超过大模型llm对输入文本长度的限制条件,因此我们的原始文档不能太长。原创 2023-12-24 18:46:26 · 4849 阅读 · 0 评论 -
谷歌Gemini API 应用(二):LangChain 加持
今天我们学习了在langchain中使用gemin模型的的一些方法,总的来说使用方法和其他的模型如openai的模型的方法都是类似的。今天我们还尝试了langchain的stream和beath方法在gemini模型上的应用,还介绍了RAG、PAL Chain的应用,最后我们用一个简单例子介绍了langchain中使用gemini多模态模型的方法。希望今天的内容对大家学习gemini大模型有所帮助。原创 2023-12-16 15:31:58 · 3191 阅读 · 0 评论 -
谷歌Gemini API 应用(一):基础应用
今天我们学习了谷歌最新的Gemini语言模型gemini-pro和多模态模型gemini-pro-vision的一些基础应用,其中包括了模型的一些限制条件,安全性审查,流式输出,多模态模型应用等内容,希望这些内容对读者学习Gemini模型有所帮助。原创 2023-12-15 17:28:29 · 9174 阅读 · 1 评论 -
AutoGen实战应用(一):代码生成、执行和调试
今天我们学习了AutoGen的基本原理以及基础参数的设置,并通过两个简单的例子轻松实现了原本需要使用复杂逻辑才能完成的任务。任务的复杂逻辑并没有发生变化,只是实现这些逻辑的主体由人变成了AI,我们模拟出两个由AI担任的人物角色,他们通过相互之间的对话一步一步的解决了人类交给它们的任务,你说神奇不神奇!😀。原创 2023-12-12 12:35:23 · 9964 阅读 · 0 评论 -
LangChain的函数,工具和代理(六):Conversational agent
今天我们回顾了在langchain中实现基本的函数调用方法,以及在此基础上进行手动优化和自动优化的流程,最后我们将所有的功能整合在一起开发了一个自动化的聊天机器人,它具有记忆能力同时还能根据用户的问题来自主判断是否调用外部函数并给出对用户友好的回复,希望今天的内容对大家学习langchain有所帮助!原创 2023-12-08 13:55:10 · 3021 阅读 · 0 评论 -
LangChain的函数,工具和代理(五):Tools & Routing
今天我们学习了langchain的tools,routing组件的原理,并借助tool和routing让llm实现了真正意思上的函数调用,最后我们还介绍了openapi格式的函数说明文本如何通过langchain来转换成openai的函数描述变量,希望今天的内容对大家有所帮助。原创 2023-12-06 16:38:26 · 4791 阅读 · 0 评论 -
LangChain的函数,工具和代理(四):使用 OpenAI 函数进行标记(Tagging) & 提取(Extraction)
今天我们学习了通过langchain和openai的函数调用来实现标记(Tagging)和提取(Extraction)功能,通过taggin我们可以让llm对用户信息进行评估,通过extration我们可以让llm从用户信息中提取有用的内容,最后我们介绍了两个真实的应用场景案例,我们介绍了如何使用langchain的长文本切割工具对长文本进行切割,从而解决了openai的llm对输入的上下文长度限制问题。希望今天的内容对大家有所帮助。原创 2023-12-04 19:24:02 · 2612 阅读 · 0 评论 -
LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用
今天我们学习了pydantic的基础语法,以及如何利用langchain将pydantic定义的类转换成openai的函数描述对象,通过pydantic我们可以轻松定义函数描述对象的类,然后使用langchain的convert_pydantic_to_openai_function方法将其转换成openai所需要的格式,如果不使用pydantic我们必须手动创建openai的函数描述对象,这将是非常低效且繁琐的工作。原创 2023-12-01 22:54:57 · 3398 阅读 · 2 评论 -
LangChain的函数,工具和代理(二):LangChain的表达式语言(LCEL)
今天我们介绍了LangChain的表达式语言(LCEL)的基础知识,其中包括了简单链(Simple Chain),复杂链(More complex chain),绑定(Bind),后备措施(Fallbacks),接口(Interface)的应用,其中包括对invoke,batch,stream等方法的使用以及相应的异步方法的介绍,希望今天的内容对大家有所帮助。原创 2023-11-30 16:22:39 · 4413 阅读 · 0 评论 -
LangChain的函数,工具和代理(一):OpenAI的函数调用
几个月前OpenAI官方发布了其API的函数调用功能(Function calling), 在 API 调用中,您可以描述函数,并让模型智能地选择输出包含调用一个或多个函数的参数的 JSON 对象。API函数“ChatCompletion” 虽然不会实际调用该函数;但是模型会生成这些基于函数参数的JSON对象,您可以使用它来调用代码中的实际函数。原创 2023-11-21 20:53:31 · 2765 阅读 · 1 评论 -
微调大型语言模型(一):为什么要微调(Why finetune)?
今天我们来学习Deeplearning的在线课程 微调大型语言模型(一)的第一课:为什么要微调(Why finetune)。我们知道像GPT-3.5这样的大型语言模型(LLM)它所学到的知识截止到2021年9月,那么如果我们向ChatGPT询问2022年以后发生的事情,它可能会产生“幻觉”从而给出错误的答案,再比如我们有一些关于企业的某些产品的业务数据,但是由于ChatGPT没有学习过这些数据,因此它也无法正确回答出关于这些产品的问题。为了扩大LLM的知识面,让LLM能够更好的学习并掌握新知识从而更好的为用原创 2023-09-21 22:51:27 · 1607 阅读 · 0 评论 -
使用langchain与你自己的数据对话(五):聊天机器人
今天我们学习了如何开发一个具有记忆能力的个性化问答机器人,所谓个性化是指该机器人可以针对用户数据的内容进行问答,我们在实现该机器人时使用了ConversationalRetrievalChain组件,它是一个具有记忆能力的检索链,也是机器人的核心组件。希望今天的内容对大家有所帮助!原创 2023-08-07 20:44:55 · 4471 阅读 · 5 评论 -
使用langchain与你自己的数据对话(四):问答(question answering)
今天我们介绍了如何通过答链RetrievalQA,来检索向量数据库并回答用户的问题。其中我们介绍了几种RetrievalQA检索向量数据库的工作方式,也就是chain type方式,其实默认方式是stuff,除此之外还有map_reduce,refine, map_rerank等几种方式,它们都有各自的优缺点。同时我们还介绍了通过使用prompt模板,可以让LLM返回格式化的结果。希望今天的内容对大家学习langchain有所帮助!原创 2023-08-01 18:08:30 · 7337 阅读 · 6 评论 -
使用langchain与你自己的数据对话(二):向量存储与嵌入
今天我们学习了嵌入和向量数据库的基本原理,并且对嵌入(Embeddings)和开源数据库Chroma进行了实际的操作,并观察了各种的返回结果,同时我们还发现了两种Chroma数据库相似搜索失效的场景。关于如何避免失效的应用我们将在下一篇博客中进行讨论。原创 2023-07-24 22:01:16 · 4966 阅读 · 4 评论 -
使用langchain与你自己的数据对话(一):文档加载与切割
今天我们学习了文本的加载与分割,Langchain提供了丰富的外部数据加载器,这些外部数据可以是结构化的,也可以是非结构化的,其中我们还介绍了从网页和youtube视频中加载文本的方法,这个挺有意思的,大家可以尝试一下,由于外部数据量可能比较大,如pdf, text文档等,因此当我们加载了外部数据以后,我们还需要对数据进行分割处理,我们介绍了几种文本分割的方法,其中有按字符分割的CharacterTextSplitter分割器,和递归分割的RecursiveCharacterTextSplitter分割器。原创 2023-07-20 17:55:52 · 17887 阅读 · 5 评论 -
LangChain大型语言模型(LLM)应用开发(三):Chains
今天我们学习了Langchain的核心组件chain。主要分为LLMChain,Sequential Chains,Router Chain,其中LLMChain是最基本的chain它简单的组合了LLM和promt,Sequential Chains主要包含SimpleSequentialChain和SequentialChain,对于SimpleSequentialChain来说它只是简单的将多个LLMChain串联在一起,前一个chain的输出是后一个chain的输入,所以总体上来说SimpleSeq原创 2023-07-02 22:38:35 · 11898 阅读 · 4 评论 -
LangChain大型语言模型(LLM)应用开发(二):Conversation & Memory
LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的应用程序中使用。原创 2023-06-30 15:29:12 · 1945 阅读 · 0 评论 -
LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers
今天我们学习了如何使用langchain来创建prompt模板,并且langchain的prompt模板会自动识别prompt中的内嵌变量,在生成message时只需在prompt模板的format_messages方法中传递所需变量即可。另外我们还学习了如何通过Langchain来解析LLM的输出结果,通过创建ResponseSchema和StructuredOutputParser,可以产生用来指导LLM如何产生格式化数据的prompt即format_instructions ,LLM会根据format原创 2023-06-29 23:15:28 · 3801 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(七):评估1
今天我们学习了如何评估LLM的回复的正确性,通过建立测试用例来测试LLM的回复,当LLM的回复不符合要求时,我们需要修改prompt来让LLM输出正确的结果,在修改prompt时我们在system_message中增加了控制输出结果的语句,同时增加少量学习样本(few-shot prompt),这样更好的微调了LLM,确保LLM按正确格式输出结果,最后我们通过建立自动化测试用例来评估LLM的回复是否与理想答案一致,并得到了LLM的评估分数。原创 2023-06-20 14:23:31 · 3083 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(六):构建端到端系统
今天我们学习了如何构造一个端对端对机器人问答系统,该系统包含了大型语言模型(LLM) 处理用户信息的完整流程,总共包含7个主要的步骤:内容审核1,查询产品目录清单,查询产品信息,生产最终回复,内容审核2,检验最终回复,输出最终回复。这里面每一个步骤的主要功能和实现方法在本博客和之前的博客中都有详细介绍,最后我们开发了一个聊天机器人程序,并对有关产品的问题进行了测试,总的来说机器人的回复还算正确,但偶尔也会产生“幻觉”,并且编造一些根本不存在的产品出来(如苹果的产品)。希望今天的内容能帮助到大家。原创 2023-06-14 22:35:04 · 1261 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(五):输出结果检查
今天我们学习了如何让LLM来检查自己的输出结果是否正确,输出结果检查一般分为两种:1.有害内容检查。2.回复的内容是否基于特定产品。这是两种非常实用的LLM开发技巧,在各种LLM的应用场景中基本都会用到。也希望你的内容能帮助到大家。原创 2023-06-12 15:57:12 · 1308 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(四):链式提示
今天我们学习了如何通过使用多个提示语来让LLM完成一个复杂的任务,以及如何节约使用LLM的成本,为了节省LLM的使用成本,我们不能把所有的产品信息喂给LLM,而是通过2次查询来获取少量的产品信息,这样有效的减少了token数量。原创 2023-06-09 12:06:22 · 1035 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(三):思维链推理
今天我们学习了如何指导ChatGPT像人类那样形成逻辑推理的思维逻辑,我们让ChatGPT将解决复杂问题的过程拆分成若干个步骤,每个步骤解决一个小问题,且各个步骤存在前后逻辑关系即只有完成了之前的步骤才能执行后面的步骤,当完成了所有的步骤后就可以解决这个复杂问题。最后我们还学习了如何来隐藏ChatGPT的逻辑推理过程。原创 2023-06-06 17:10:17 · 1527 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(二):内容审核、预防Prompt注入
今天我们学习了如何通过openai的API来实现内容审核,以及如何识别和预防prompt注入,希望这些内容对有志从事ChatGPT应用开发的同学有所帮助。原创 2023-06-04 12:54:07 · 3222 阅读 · 0 评论 -
使用大型语言模(LLM)构建系统(一):分类
今天我们学习了如何让ChatGPT对用户的问题进行分类,以及英文prompt和中文prompt在输出结果上的一些差异,通过恰当的对中文prompt的修改,我们可以让中文prompt的输出结果和英文prompt的输出结果一致。原创 2023-06-03 12:19:32 · 1381 阅读 · 0 评论 -
Openai+Deeplearning.AI: ChatGPT Prompt Engineering(六)
今天我们学习了如果利用ChatGPT开发一个个性化的聊天机器人,让它能代替人类完成某些特定任务,这其中我们需要详细的定义机器的system角色,以避免机器人回答与任务本身无关的问题。我们还介绍了模型参数temperature的功能和作业,比如temperature越大,会使模型的输出结果更有随机性。原创 2023-05-31 18:33:13 · 1655 阅读 · 4 评论 -
大型语言模(LLM)之提示词工程(五)
今天我们学习了如果让ChatGPT来代替人类来回复客户邮件,根据客户邮件的内容做出恰当的回复,如果客户评论是正面的,则回复以表达感谢为主,如果客户评论是负面的,则回复以表达歉意为主。同时我们还学习了通过调整temperature参数来使得chatGPT的回复更具多样性(随机性)。原创 2023-05-29 17:55:50 · 1592 阅读 · 0 评论 -
大型语言模(LLM)之提示词工程(四)
今晚我们学习了如果让大型语言模型LLM实现多语言翻译功能、语言识别、错别字/语法检查、语调转换等功能。希望今天的内容能对大家有所帮助!原创 2023-05-23 18:14:54 · 2077 阅读 · 0 评论 -
大型语言模(LLM) 之 提示词工程(三)
今天我们学习了如何让ChatGPT从文本内容中推断出作者的情绪、识别愤怒情绪、抽取文本实体(如商品和公司名称)、推断主题词、识别主题词等功能,我们还学习了如何让ChatGPT来同时做多个任务。希望这些内容对大家有所帮助!原创 2023-05-22 22:32:31 · 1812 阅读 · 3 评论 -
Openai+Coursera: ChatGPT Prompt Engineering(二)
今天我们介绍了Prompt Engineering 中 让chatgpt创建总结/摘要的方法,以及遇到Rate limit的方法。希望这些介绍对大家有用。原创 2023-05-20 12:19:01 · 3186 阅读 · 0 评论 -
大型语言模(LLM) : 提示词工程(一)
这是吴恩达 《ChatGPT Prompt Engineering for Developers》 的课程笔记系列。本文是第二讲的内容:Guidelines课程主讲:Andrew Ng,Isa FulfordIsa Fulford也是《OpenAI Cookbook》的主要贡献者之一原创 2023-05-12 15:21:04 · 6087 阅读 · 2 评论