- 博客(152)
- 收藏
- 关注
原创 LangChain摘要记忆组件的使用与解析
ConversationSummaryBufferMemory 会将汇总摘要的部分默认设置为 system 角色,创建系统角色信息,而其他消息则正常显示,传递的消息列表就变成:[system, system, human, ai, human, ai, human]。所以在使用 ConversationSummaryMemory 这种类型的记忆组件时,需要检查对应的模型传递的 messages 的规则,以及 LangChain 是否对特定的模型封装进行了更新。,使用时填充的记忆为 摘要,并非对话数据。
2025-08-03 16:11:29
803
原创 LangChain缓冲记忆组件的使用与解析
② ConversationBufferWindowMemory:缓冲窗口记忆,通过设定 k 值,只保留一定数量(2*k)的对话信息作为历史。① ConversationBufferMemory:缓冲记忆,最简单,最数据结构和提取算法不做任何处理,将所有对话信息全部存储作为记忆。使用 LangChain 实现一个案例,让 LLM 应用拥有 2 轮的对话记忆,超过 2 轮的记忆全部遗忘。("system", "你是OpenAI开发的聊天机器人,请帮助用户解决问题"),
2025-08-03 12:29:29
946
原创 LangChain Memory组件运行流程及不同记忆分类
基于 BaseMemory 基类,衍生出了两个子类 SimpleMemory 和 BaseChatMemory,当 LLM 应用不需要记忆功能,又不想更换代码结构时,可以将记忆组件使用 SimpleMemory 组件进行代替,SimpleMemory 实现了记忆组件的相关方法,但是不存储任何记忆,可以在不修改代码结构的情况下替换记忆组件,实现无记忆功能。"""从输入和输出字典中提取对应的字符串(人类提问、AI输出)""""""异步清除记忆中的对话历史""""""清除记忆中的对话历史"""
2025-08-03 12:26:06
836
原创 LangChain ChatMessageHistory 组件上手与源码解析
FileChatMessageHistory 会将对话历史存储到本地的文件中,可以使用这个记忆组件结合原生的 OpenAI SDK 来实现在命令行界面实现带有记忆功能的对话功能,并且关闭某次对话后,下次运行代码,读取到对应的文件时,仍然可以记忆之前对话的内容。可以看到,一个记忆类是由 历史消息的存储 与 记忆的处理逻辑 两个部分组成的,在 LangChain 中,也是类似的思路。将历史信息代码进行归类整理,可以划分成两部分,黄色 的部分为检索历史信息,红色 的部分为存储历史信息的逻辑。
2025-08-01 20:11:12
896
原创 ChatGPT、Playground手动模拟Agent摘要缓冲混合记忆功能
AI自我介绍为ChatGPT,一个由OpenAI训练的大型语言模型,喜欢帮助人们解决问题、回答问题和分享知识。AI还问好好是否有特别喜欢的歌手或篮球队。你是一个强大的聊天机器人,请根据用户提供的谈话内容,总结内容,并将其添加到先前提供的摘要中,返回一个新的摘要。用户的提问是: 你好,我是好好,喜欢唱跳rap打篮球,你是谁?Human: 你好,我是好好,喜欢唱跳rap打篮球,你是谁?Human: 你好,我是好好,喜欢唱跳rap打篮球,你是谁?Human: 你好,我是好好,喜欢唱跳rap打篮球,你是谁?
2025-08-01 10:51:31
799
原创 Model 组件的基本组成
LLM 和 LLMOps 都是开发者社区中的术语。LLM 是指"Language Model",而 LLMOps 则是指与操作相关的语言模型。response = llm.stream(prompt.invoke({"subject": "LLM和LLMOps"}))prompt_value = prompt.invoke({"query": "现在是几点,请讲一个关于程序员的冷笑话"})("system", "你是OpenAI开发的聊天机器人,请回答用户的问题,现在的时间是{now}"),
2025-07-27 17:44:06
572
原创 Prompt 组件的基本组成
messages=[SystemMessage(content='你是OpenAI开发的聊天机器人,请根据用户的提问进行回复,当前时间是:2024-06-08 21:16:54.989223'), HumanMessage(content='我叫好好'), AIMessage(content='我是ChatGPT, 有什么能帮到你的么?("system", "你是OpenAI开发的聊天机器人,请根据用户的提问进行回复,当前时间是:{now}"),通常,它们会将用户输入添加到一个更大的文本片段中,称为。
2025-07-27 17:40:51
869
原创 LangChain 框架安装及其组成
随着 LangChain 功能的不断发展,文档的内容也随之增长,在以往 v0.2.0 之前的版本中,文档的设计尽可能会详细介绍每个功能、每个代码片段、每个概念,这样会导致虽然内容很丰富,但用户往往在寻找特定信息时感到迷茫,这不仅影响了新用户的上手体验,也给长期贡献者带来了不小的挑战。这些教程不仅仅是简单的步骤说明,更是对概念的深入理解和实践的完美结合。在版本升级指南页面中,提供从旧版本迁移到新版本的详细说明,涵盖了更新哪些包的导入方式、如何配置 langchain-cli、更新的其他配置等信息。
2025-07-27 17:07:12
674
原创 为什么选择LangChain
在 可观测性 上,LangChain 对比同类的 AI 应用框架,提供了独一无二的 LangSmith 平台,LangSmith 的一个核心优势是为你的 LLM 应用提供一流的调试体验,详细记录了正在执行的每个步骤、每个步骤的输入、输出、所需时间等数据。大模型一般有两种形态“呈现”在我们眼前,一种是训练好的那种二进制文件,另外一种是将大模型的二进制文件进行部署之后暴露出一些相应的接口,但是无论是那种形式,LLM 只提供了一个非常基础的调用方式,当我们要构建一个复杂的 Chat Bot 时,就需要考虑。
2025-07-27 17:05:01
683
原创 LLM 实现记忆功能思路
{"role": "system", "content": "你是OpenAI开发的聊天机器人,热衷于帮用于解决问题。{"role": "system", "content": "你是OpenAI开发的聊天机器人,热衷于帮用于解决问题。{"role": "ai", "content": "你喜欢篮球,对吗?{"role": "human", "content": "你好,我是好好,我喜欢打篮球,你是?{"role": "human", "content": "你好,我是好好,我喜欢打篮球,你是?
2025-07-27 11:25:34
857
原创 向量数据库RAG检索分析流程
综上所述,向量数据库RAG检索的各种检索方式、优化方法和处理无用内容的办法各有特点、原理、适用场景和效果。在实际应用中,需要根据具体的需求和场景选择合适的方法和技术,以提高RAG系统的性能和可靠性,为用户提供更准确、更有用的答案。
2025-07-14 10:31:48
576
原创 向量数据库RAG检索面试题及答案
答案:向量数据库RAG检索基本流程包含三个主要阶段。首先是索引阶段,此阶段会对原始数据进行多步骤预处理。先将各种原始数据转化为适合大语言模型(LLM)利用的结构化格式,进行数据收集与整合、提取和解析、清洗与规范化等操作,然后对文档进行切分,常见的切分策略有固定大小切分、递归切分、语义切分、基于LLM的切分和基于文档结构的切分等。其次是检索阶段,用户查询会被转换为向量表示,通过余弦相似度从向量数据库中找到相关块。
2025-07-14 10:30:21
682
原创 向量数据库RAG检索相关资料
检索增强生成(Retrieval Augmented Generation,简称RAG)指在大型语言模型(LLM)的生成过程中,引入外部知识检索,以提高回答的准确性和可靠性。通过让LLM在生成回答时参考外部知识库的信息,RAG技术可以有效减少模型产生事实性错误(即所谓的“幻觉”)并提升答案的事实正确性。典型的RAG系统包含四个基本组件:嵌入模型、向量数据库、提示模板以及生成式LLM。
2025-07-14 10:29:46
876
原创 Pinecone 向量数据库的配置与使用
Pinecone是一个托管型云原生向量数据库,提供简单API和免费开发空间。其核心概念包括组织、项目、索引、命名空间和记录,支持两种索引类型(无服务器索引和Pod索引)。通过LangChain可快速集成Pinecone,支持文本导入、相似性搜索(带元数据过滤)和数据删除等操作。特色功能包括原生过滤器支持(AND/OR逻辑)、按条件删除数据,并可通过get_pinecone_index()获取原始实例进行高级操作。相比Faiss,Pinecone更侧重商业场景,提供更丰富的功能组合。
2025-05-14 19:41:30
1070
原创 TCVectorDB向量数据库的配置与使用
腾讯云向量数据库(TCVectorDB)是一款专为国内用户设计的全托管企业级分布式向量数据库,支持千亿级向量规模,提供毫秒级查询延迟。相比海外产品,其国内部署能有效解决网络延迟问题。TCVectorDB提供内置Embedding模型和外部模型接入两种方式,支持相似性搜索和带过滤条件的检索。开发者可通过配置外网访问并使用Python SDK快速集成,其架构与Pinecone类似,包含数据库、集合和记录层级。需要注意的是,使用外部Embedding时需处理LangChain中的metadata字段bug,通过设
2025-05-14 19:33:45
606
原创 LLMs 其他 Trick
资源下载网站,为AI开发者提供模型镜像加速服务,通过下载器可以达到10M/s的下载速度,解 决大模型下载时间长、经常断线、需要反复重试等问题,实现镜像加速、断点续传、无人值守下载,
2025-05-13 13:45:13
521
原创 Weaviate向量数据库的配置与使用
摘要: Weaviate是一款基于Go语言的开源向量数据库,提供多种部署方式:云服务(14天免费试用)、Docker容器、K8s集群和Linux/macOS嵌入式部署。其核心概念"集合"类似关系型数据库的表,命名需遵循大写字母开头的规范。使用流程包括部署实例、安装Python客户端、创建集合、添加向量数据和执行相似性搜索。Weaviate支持REST/gRPC协议连接,提供原生过滤功能,并能与LangChain框架集成。云服务提供可视化界面管理,Docker部署仅需简单命令即可运行。该数
2025-05-13 13:44:12
1102
原创 大模型(LLMs)生成式大模型
生成式大模型(一般简称大模型LLMs)是指能用于创作新内容,例如文本、图片、音频以及视频的一类深度学习模型。模型参数量更大,参数量都在Billion级别;可通过条件或上下文引导,产生生成式的内容(所谓的prompt engineer就是由此而来)。
2025-05-12 11:35:36
1122
原创 accelerate 分布式训练
配置= BertConfig.from_pretrained(args.model_path,num_labels=6)配置= BertConfig.from_pretrained(args.model_path,num_labels=6)epoch,self.args.epochs,gloabl_step,self.args.total_step,损失。输出 = self.model_engine.forward(input_ids = input_ids,
2025-05-12 11:33:18
970
原创 微调方法是啥?如何微调?
从表中可以看到,Prompt Tuning、Prefix Tuning、LoRA等少部分微调技术针对不同参数规模的模型进行过评估,同时,这几种方式也是目前应用比较多的高效微调方法。下表展示了各种参数高效方法的参与训练的参数量、最终模型与原始模型的改变参数(delta值)以及论文中参与评估的模型的范围(<1B、<20B、>20B)。并比较了不同的高效微调方法之间的差异;同时,还指出当前大多数高效微调方法存在的一些问题并给出了最佳实践。结果:AdaLoRA效果稍好于FT。
2025-05-11 14:02:22
781
原创 大模型(LLMs)agent
大模型(LLMs)agent一、什么是 大模型(LLMs)agent?二、大模型(LLMs)agent 有哪些部分组成?三、大模型(LLMs)agent 主要 利用了 大模型 哪些能力?四、结合 代码 讲解 大模型(LLMs)agent 思路?五、如何给LLM注入领域知识?六、常见LLM Agent框架或者应用 有哪些?致谢一、什么是 大模型(LLMs)agent?大模型(LLMs)agent 是一种超越简单文本生成的人工智能系统。它使用大型语言模型(LLM)作为其核心计算引擎,使其能够进行对话、执行任务、
2025-05-11 14:00:57
1342
原创 AI文本分类
文本分类常见面试文本处理通常需要做分词及去除停用词等操作,常会使用一些分词工具,如hanlp、jieba、哈工大LTP、北大pkuseg等。fastText首先把输入转化为词向量,取平均,再经过线性分类器得到类别。输入的词向量可以是预 先训练好的,也可以随机初始化,跟着分类任务一起训练。
2025-05-10 13:41:33
677
原创 大模型 LLM 的架构介绍
3、涌现能力是啥原因?Transformer 架构:大模型 LLM 常使用 Transformer 架构,它是一种基于自注意力机制的序列模型。Transformer 架构由多个编码器层和解码器层组成,每个层都包含多头自注意力机制和前馈神经网络。这种架构可以捕捉长距离的依赖关系和语言结构,适用于处理大规模语言数据。自注意力机制(Self-Attention):自注意力机制是 Transformer 架构的核心组件之一。它允许模型在生成每个词时,根据输入序列中的其他词来计算该词的表示。
2025-05-09 15:06:24
885
原创 微调方法是啥?如何微调?
从表中可以看到,Prompt Tuning、Prefix Tuning、LoRA等少部分微调技术针对不同参数规模的模型进行过评估,同时,这几种方式也是目前应用比较多的高效微调方法。下表展示了各种参数高效方法的参与训练的参数量、最终模型与原始模型的改变参数(delta值)以及论文中参与评估的模型的范围(<1B、<20B、>20B)。并比较了不同的高效微调方法之间的差异;同时,还指出当前大多数高效微调方法存在的一些问题并给出了最佳实践。结果:AdaLoRA效果稍好于FT。
2025-05-09 15:03:31
1126
原创 大模型(LLMs)agent
大模型(LLMs)agent一、什么是 大模型(LLMs)agent?二、大模型(LLMs)agent 有哪些部分组成?三、大模型(LLMs)agent 主要 利用了 大模型 哪些能力?四、结合 代码 讲解 大模型(LLMs)agent 思路?五、如何给LLM注入领域知识?六、常见LLM Agent框架或者应用 有哪些?致谢一、什么是 大模型(LLMs)agent?大模型(LLMs)agent 是一种超越简单文本生成的人工智能系统。它使用大型语言模型(LLM)作为其核心计算引擎,使其能够进行对话、执行任务、
2025-05-08 17:22:06
1019
原创 大模型(LLMs)推理面
可以采用一些方法来处理模型输出的分布稀疏,例如使用softmax函数的温度参数调节来平滑输出分布,或者引入正则化技术,如Dropout,以减少模型对特定类别的过度依赖。对于 fp32,LLaMA-6B 需要 6B*4 bytes = 24GB内存对于 int8,LLaMA-6B 需要 6B*1 byte = 6GB。综上,int8 精度的 LLaMA-6B 模型部分大致需要 6GB+6GB+12GB+1.3GB = 25.3GB 左右。fp32 精度,一个参数需要 32 bits, 4 bytes.
2025-05-08 17:18:41
404
原创 对接自定义向量数据库的配置与使用
本文介绍了如何在LangChain中对接自定义向量数据库。由于向量数据库发展迅速且各具特点,LangChain无法全部集成,因此需要自定义实现。实现方式有两种:继承现有数据库类进行扩展,或继承VectorStore基类对接新数据库。后者需实现三个核心方法:add_texts(添加数据)、similarity_search(相似性搜索)和from_texts(构建数据库)。文章提供了一个基于内存的欧几里得距离向量数据库示例代码,展示了如何存储向量数据并执行相似性搜索。通过自定义实现,可以灵活适配特定需求或新型
2025-05-07 20:51:21
617
原创 什么是 LoRA?
什么是 LoRA?二、QLoRA篇五、ChatGLM-6B LoRA后的权重多大?六、LoRA 微调优点是什么?七、LoRA微调方法为啥能加速训练?八、如何在已有LoRA模型上继续训练?九、LoRA 缺点是什么?十、LoRA这种微调方法和全参数比起来有什么劣势吗?十一、LORA应该作用于Transformer的哪个参数矩阵?十二、LoRA 微调参数量怎么确定?十三、Rank 如何选取?十四、alpha参数 如何选取?十五、LoRA 高效微调 如何避免过拟合?十六、微调大模型时, 优化器如何?
2025-05-05 16:00:40
1246
原创 AI向量检索
关系数据库【数据库关系系统】 ⇒ 数据库 ⇒ 表 ⇒ ⾏ ⇒ 列(Columns) Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ ⽂档(Docments) ⇒ 字段(Fields)⾥这就是⼀个⽂档,当然这个⽂档会属于⼀个User的类型,各种各样的类型存在于⼀个索引当中。直接通过pip install faiss-cpu --no-cache进行安装。Elasticsearch的⽂件存储, Elasticsearch是⾯向⽂档型数据库,⼀条数据在这⾥就是⼀个⽂档,
2025-05-05 15:59:23
1453
原创 大模型(LLMs)RAG 版面分析——文本分块面
大模型(LLMs)RAG 版面分析——文本分块面一、为什么需要对文本分块?二、能不能介绍一下常见的文本分块方法?2.1 一般的文本分块方法2.2 正则拆分的文本分块方法2.3 Spacy Text Splitter 方法2.4 基于 langchain 的 CharacterTextSplitter 方法2.5 基于 langchain 的 递归字符切分 方法2.6 HTML 文本拆分 方法2.7 Mrrkdown 文本拆分 方法2.8 Python代码拆分 方法2.9 LaTex 文本拆分 方法致谢 一、
2025-05-04 20:56:33
879
原创 LLMs 测试集中数据泄露
数据泄露(data contamination)是指模型测试集的数据被无意地(!)包含在了训练集中。(如果是故意的,比如trainon测试集,那就是另一个话题了)。这种情况在大模型时代是很难避免的。其实在Common Crawl刚开始被用作训练集时就有不少人意识到了这个问题。比如这篇论文发现,在T5所用的C4数据集中,包含了2-50%不等的GLUE benchmark的原题。导致T5在GLUE极亮眼的数据在当时遭到了不小质疑。
2025-05-04 20:53:53
1209
原创 AI 大模型常见面试题(及内容解析)
解答:多模态大模型是一种能够处理和理解多种不同类型数据输入(如文本、图像、音频和视频)的深度学习模型。它利用不同模态之间的互补性,提供更全面、准确的信息。例如,在智能客服领域,多模态大模型可以结合文本和语音信息,更好地理解用户的意图和需求,提供更精准的回复。
2025-05-03 20:26:16
1110
原创 大模型幻觉
在语言模型的背景下,幻觉指的是一本正经的胡说八道:看似流畅自然的表述,实则不符合事实或者是错误的。二、为什么LLM会产生幻觉?源与目标的差异:当我们在存在源与目标差异的数据上训练模型时,模型产生的文本可能与原始源内容产生偏差。这种差异,有时可能是在数据收集过程中不经意间产生的,有时则是故意为之。无意识的源目标差异:这种差异的产生有多种原因。例如,数据可能是基于某种经验法则编制的,使得目标信息并不总是完全依赖源信息。
2025-05-03 20:23:46
910
原创 LLMs Tokenizer Byte-Pair Encoding(BPE)
1 Byte-Pair Encoding(BPE) 如何构建词典?WordPiece 篇1 WordPiece 与 BPE 异同点是什么?本质上还是BPE的思想。与BPE最大区别在于:如何选择两个子词进行合并SentencePiece 篇简单介绍一下 SentencePiece 思路?把空格也当作一种特殊字符来处理,再用BPE或者来构造词汇表。对比篇举例 介绍一下 不同 大模型LLMs 的分词方式?
2025-05-02 21:17:35
638
原创 AI增量预训练(Pretrain)样本拼接
作者在文中多次强调了数据去重的重要性,并经过消融实验验证了去重对ICLM的正向增益。相比 实体,沿语义聚合的 {examples_i} 分布更加平缓,受泄露影响的风险更低;此外,分布更广泛的数据、更妥善的去重操作,或许也是ICLM能够有效的重要原因。为了提高pretrain效率、拓展LLM最大长度,随机将若干条短文本进行拼接是pretrain阶段常见手 段。基于拼接后的 {examples_k} 进行pretrain;
2025-05-02 21:15:00
908
原创 传统数据库与向量数据库的使用差异
摘要:传统关系型数据库与向量数据库在数据处理方式上存在显著差异。关系型数据库擅长结构化数据的精确查询,而向量数据库通过相似性搜索处理非结构化数据,将数据表示为高维向量。二者在存储结构上也有所不同,关系型数据库采用行式存储,向量数据库则采用列式存储并支持矩阵运算优化。相似性搜索主要依赖余弦相似度和欧式距离等算法,并可通过矩阵分解、索引优化、GPU加速等技术提升性能。向量数据库特别适合处理高维数据相似性搜索场景,与传统数据库形成互补关系。
2025-04-28 21:31:00
1543
原创 Embedding文本嵌入模型介绍与使用
Embedding是一种将高维非结构化数据(如文本、图片、视频)转换为低维向量表示的技术。主流Embedding模型包括Word2Vec、GloVe、FastText和大模型嵌入(如text-embedding-ada-002)。其核心价值在于:降维处理高维数据;捕捉语义信息使相似概念在向量空间相近;支持向量运算(如"女王=国王-男人+女人"的经典示例)。通过可视化向量分布可发现,Embedding能有效反映词语间的语义关系(如性别、年龄维度),为语义搜索提供基础。这种技术让计算机能更好
2025-04-28 21:23:00
712
原创 OpenAI Embedding嵌入模型和余弦相似度使用
OpenAI提供了三种线上Embedding模型服务,虽然效果优秀且价格低廉,但由于缺乏本地版本且接口响应较慢,国内使用较少。LangChain中的Embeddings类为多种嵌入模型提供统一接口,包含embed_documents和embed_query两个核心方法。通过RunnableLambda可将其接入序列链,自定义嵌入模型只需实现这两个方法。示例展示了使用OpenAIEmbeddings计算文本向量及余弦相似度,验证了语义相近文本的向量相似度更高(坤坤打篮球相关文本的相似度为0.94,与无关文本相
2025-04-27 22:31:34
1160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人