- 博客(88)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 MCP (Model Context Protocol) 与 HTTP API:大模型时代的通信新范式
MCP(Model Context Protocol)是一种针对大模型交互优化的新型通信范式,与HTTP API形成对比。HTTP API作为无状态请求-响应协议,每次交互都需要完整传输上下文,在大模型长对话场景中效率较低。而MCP采用会话导向设计,通过上下文ID和增量更新机制,允许模型在多轮对话中维护状态,仅传输变化的上下文片段。这种设计显著减少了冗余Token传输,提升了交互效率,特别适合需要持续上下文管理的LLM应用场景。虽然MCP增加了实现复杂度,但为长上下文对话、持续学习等场景提供了更优的解决方案
2025-07-25 18:57:45
951
原创 RAG的5种分块策略
摘要: 文本分块(Chunking)是大模型处理长文本的关键步骤,需根据需求选择合适策略。固定大小分块简单高效但可能破坏语义;语义分块基于标点或嵌入相似度保持语义连贯;递归分块分层切分,兼顾结构与大小;基于文档结构的分块利用标题、段落等逻辑单元,最大化保留原义。无通用最优策略,需结合文本类型(松散/结构化)、任务需求(检索/生成)及计算资源综合选择。例如,RAG系统优先语义分块,而快速原型可采用固定分块。
2025-07-23 15:18:29
773
原创 python-pptx 的layout 布局
在 PowerPoint 中,决定了幻灯片的占位符(如标题、内容、图片等)的排列方式。提供了对布局的编程控制。通过。
2025-07-18 21:06:57
303
原创 LangChain 学习项目代码
"LangChain学习项目提供了一系列示例代码,帮助开发者掌握LangChain框架。项目包含从LLM基础、提示词模板到智能体、文档检索等10个模块的渐进式学习内容。每个示例都有详细注释,建议按编号顺序学习。核心功能包括LLM接口、提示词管理、链式组件、记忆状态等。使用前需安装依赖并配置API密钥。该项目适合希望系统学习LangChain的开发者。"
2025-07-16 15:42:22
150
原创 LangChain中提供的检索方法
LangChain提供了多种检索方法以适应不同场景需求。基于相似度的检索(如余弦相似度)是基础方法,可返回相关文档及相似度分数。为平衡相关性与多样性,最大边际相关性(MMR)算法确保结果覆盖面更广。增强检索策略包括多查询检索(提高召回率)、上下文压缩检索(减少令牌数量)、父文档检索(分层检索)和时间加权检索(优先最新结果)。基于代理的检索(如SelfQueryRetriever)支持复杂查询转换。此外,语义路由器可动态选择最适合的检索器,实现智能知识库管理。这些方法共同优化了检索效果与效率。
2025-07-16 15:32:25
725
原创 LangChain 数据检索(Retrieval)
摘要:大型语言模型(LLM)的知识受限于训练数据,无法获取实时或特定领域信息。数据检索(Retrieval)技术通过关键组件解决这一问题:文档加载器从多种数据源提取内容,文本分割器将长文档切分为语义完整的片段,嵌入模型将文本转换为向量表示以支持相似度搜索。典型流程包括数据加载、分割、向量化存储和检索,最终增强LLM生成能力。该技术拓展了LLM的应用边界,使其能结合外部知识库提供更精准的响应。
2025-07-16 10:16:54
881
原创 LangChain 内存(Memory)
摘要: 大型语言模型(LLM)本身无状态,无法记忆历史对话。LangChain通过内存机制(如ConversationBufferMemory)存储对话历史,使LLM能理解上下文。其核心流程包括保存、加载历史并注入到Prompt中。基础内存类型ConversationBufferMemory会存储全部历史,但可能导致提示过长;改进方案ConversationBufferWindowMemory仅保留最近N轮对话,优化上下文长度与成本。代码示例展示了如何利用这两种内存实现多轮对话,通过MessagesPlac
2025-07-12 23:36:41
496
原创 Agent 设计模式
大型语言模型(LLM)的Agent设计模式包括四种核心模式:工具使用模式(调用外部工具扩展能力)、思考-行动模式(结合推理与工具使用的循环)、反思模式(评估任务结果并自我改进)以及规划模式(分解复杂任务为子任务)。这些模式通过赋予LLM规划、反思、工具调用和协作能力,使其能够处理更复杂的智能任务。文中提供了每种模式的流程图和代码示例,展示了从基础工具调用到多轮反思优化的完整Agent设计思路。这些模式可单独使用或组合应用,为构建高效AI系统提供方法论支持。
2025-07-12 22:59:24
402
原创 LangChain 代理(Agents)学习
LangChain代理核心机制解析 LangChain中的代理(Agents)赋予语言模型自主决策能力,通过"思考-行动-观察"循环(TAB)完成复杂任务。其核心组件包括: TAB循环机制:模型持续执行思考决策、调用工具、观察结果的迭代过程 工具系统:通过@tool装饰器将函数转化为代理可调用的工具,包含名称、描述和执行逻辑 ReAct代理模式:结合推理(Reasoning)和行动(Acting),模型生成包含思考过程的结构化输出 记忆功能:通过内存模块保存对话历史,实现上下文感知的持续
2025-07-12 21:23:43
347
原创 LLM 不知道答案,但是知道去调用工具获取答案?
摘要: 大型语言模型(LLM)调用工具并非因其“知道”正确答案,而是通过模式识别与指令遵循实现。当面对超出其知识边界或低置信度的问题(如时效性事实),LLM会匹配工具描述(如搜索工具的功能说明),并遵循结构化提示(如ReAct框架)调用工具。这种机制使其避免随意生成错误答案,转而依赖外部工具获取可靠信息。代理框架的核心是为LLM提供决策逻辑和执行能力,使其像遵循指令的“学生”优先选择工具而非猜测。关键在于: 识别问题类型 评估自身知识局限性 匹配工具用途 严格遵循提示指令。
2025-07-12 21:21:29
320
原创 LangChain 与 LlamaIndex:RAG 项目中的双雄对比
RAG(检索增强生成)是提升大语言模型应用的关键技术,LangChain和LlamaIndex是两大主流框架。LangChain强调模块化编排,通过LCEL将RAG流程组件化连接,适用于复杂应用开发;而LlamaIndex采用"数据优先"理念,专注于构建高效知识索引和智能查询引擎,优化数据检索。两者在RAG实现上各具特色:LangChain灵活通用,支持多种LLM应用场景;LlamaIndex则在数据处理和检索环节更高效。开发者可根据项目需求选择框架——LangChain适合需要高度定制
2025-07-12 20:46:12
472
1
原创 LangChain 的链(Chain)
链(Chains)是LangChain的基石,它允许开发者将多个独立的组件连接在一起,形成一个有向无环图(DAG),从而构建出功能更强大、更复杂的LLM驱动型应用。一个链可以是一个简单的顺序执行流程,也可以是包含条件逻辑、并行执行的复杂工作流。
2025-07-12 17:13:28
441
原创 一种新的参数高效微调方法-LoRI
这篇论文提出了一种新的参数高效微调(PEFT)方法,名为 LoRA with Reduced Interference (LoRI)。LoRI 旨在解决传统 LoRA 的局限性
2025-06-21 16:24:08
382
原创 DeepSpeed 深度学习学习笔记:高效训练大型模型
DeepSpeed是一个针对大型深度学习模型训练优化的开源库,由微软开发。它通过核心技术ZeRO(零冗余优化器)系列解决了训练千亿参数模型时的显存瓶颈问题。ZeRO分为三个阶段:Stage 1(优化器状态分片)可节省约4倍显存,Stage 2(梯度分片)共节省7倍显存,Stage 3(参数分片)实现最大显存优化。此外,ZeRO-Offload技术可将部分计算卸载到CPU/硬盘。DeepSpeed还提供高效的混合精度训练、通信优化和易用API,支持从单GPU到数千GPU的弹性扩展,使大规模模型训练更加高效和可
2025-06-20 15:02:54
1109
原创 QLoRA (Quantized Low-Rank Adaptation)浅析
QLoRA:高效大模型微调方法 QLoRA(Quantized Low-Rank Adaptation)是一种创新的模型微调技术,在保持LoRA参数效率的基础上,通过三项关键技术显著降低显存需求:1)采用4-bit NormalFloat量化预训练模型权重;2)对量化参数进行二次量化(Double Quantization)进一步节省内存;3)引入分页优化器管理优化器状态。这种方法能在单张消费级GPU(如24GB显存的RTX 3090)上微调650亿参数的大模型,同时保持接近全参数微调的性能。QLoRA通过
2025-06-19 21:28:38
994
原创 LoRA 浅析
LoRA是一种参数高效的微调方法,通过冻结预训练语言模型的权重,仅训练新增的低秩矩阵来减少计算资源。其原理是将线性层分解为Wx+BAx,其中BA是远小于原始矩阵的低秩矩阵。LoRA在微调时只训练A和B矩阵,推理时可合并或单独计算。实现中包含缩放系数调节影响力,经验表明设为秩的2倍效果最佳。相比全参数微调,LoRA资源消耗更少,但在需要大改的任务上性能可能略降。
2025-06-19 16:55:02
361
原创 LoRA 与 CoT 冲突吗
摘要: CoT(思维链)与LoRA微调可能存在目标冲突:CoT强调逐步推理,而LoRA侧重特定任务格式输出。若微调数据不含CoT轨迹,模型可能丧失推理能力。解决冲突的关键在于明确目标: 需要CoT能力:用含推理步骤的数据微调LoRA,使模型内化思考过程; 仅需简洁输出:用无CoT数据微调LoRA,推理时分离CoT步骤(如两阶段处理:先用通用模型生成CoT,再用LoRA模型格式化输出)。二者可协同——CoT作为推理策略,LoRA作为高效训练工具,需根据任务需求灵活结合。
2025-06-19 16:16:20
610
原创 【番外】 AI 时代应具备的四大核心能力
培养“AI 思维”:理解不同 AI 的能力边界和最佳应用场景。这要求我们不仅要理解 AI 能做什么,更要理解它不能做什么,以及在什么情况下使用哪种类型的 AI 模型能达到最佳效果。发展“整合力”:将 AI 能力与人类洞察有机结合。强调人机协作是关键,AI 负责处理重复性和复杂计算,人类提供创造性思维、伦理判断和高阶策略。提升“引导力”:能够准确地引导 AI 完成任务。这意味着人类需要掌握与 AI 交互的艺术和科学(例如提示工程),清晰地表达需求,确保 AI 按照预期执行。
2025-06-17 23:43:01
844
原创 工作流和Agent 的区别与联系
本文对比了工作流(Workflow)和智能体(Agent)的概念与区别。工作流是预定义、结构化的任务序列,强调流程控制和自动化执行;智能体则是具有感知、推理和行动能力的自主实体,侧重动态决策和环境适应。二者都可通过LangGraph实现:工作流用于构建确定性流程,智能体则作为其中的决策单元。关键区别在于,工作流关注"怎么做",智能体解决"谁来做"和"如何自主决策"。大模型时代下,系统设计正从固定工作流向灵活智能体演进。LangGraph作为统一框架
2025-06-17 11:37:29
535
原创 LangGraph 智能体中 LLM 节点与工具的协作深度解析
本文摘要: LangGraph智能体中LLM节点的工具调用机制包含五个核心环节:1)通过JSON Schema规范工具定义(名称、描述、参数);2)通过提示工程将工具信息嵌入LLM上下文;3)解析LLM输出的结构化调用请求;4)基于图结构进行条件路由;5)状态管理维护上下文。具体实现时,需用@tool装饰器定义工具函数,通过bind_tools()方法将工具绑定到LLM,再由ToolExecutor解析和执行工具调用。整个过程强调工具描述的准确性和参数schema的规范性,LLM会根据输入自动判断是否需要发
2025-06-16 14:55:42
679
原创 LangGraph-example 学习
图配置此处可以定义图的参数信息,例如 LLM 等信息图定义# 定义一个图,StateGraph是我们主要使用图定义的类,此处参数传入# 整个图的状态以及图配置信息# 在该图中可以体现cycle为此处,即大模型与工具的交互# 严谨一些讲应该是大模型参与的角色就可能有交互,这也是LG的最大意义# 为了可以实现更好的应用效果,我们需要通过大模型的加入,但是大模型的加入。
2025-06-15 17:47:56
390
原创 LangGraph 深度学习笔记:构建真实世界的智能代理
本文介绍了LangGraph框架的核心概念及其在构建智能代理中的应用。主要内容包括: LangGraph的核心组件: 状态图(StateGraph)作为应用程序蓝图 节点(Nodes)作为独立执行单元 边(Edges)控制数据流和工作流程 状态管理和持久化机制 LangGraph的优势: 支持循环决策流程(ReAct模式) 清晰的代理决策流结构 强大的可观测性和调试能力 状态持久化和恢复功能 构建流程: 定义应用状态 创建功能节点 构建状态图 编译和运行 文章通过一个多代理聊天助手案例,展示了LangGra
2025-06-15 01:22:58
347
原创 【浅谈】Agent 的存在具有什么意义
Agent 的核心价值在于将 LLM 的强大语言理解和生成能力,与外部工具的行动能力以及持久的记忆能力相结合,从而创造出能够自主思考、自主行动、自主学习的智能体。它突破了传统 LLM 的局限,将人工智能从被动响应推向了主动解决问题的新阶段,预示着 AI 在自动化、智能化和通用化方向上迈出了重要一步。
2025-06-13 19:50:00
732
原创 【RAG 项目实战】法律条文助手
通过这个项目,我们不仅构建了一个基于开源技术栈的劳动合同法法律助手,更重要的是,它为我们深入理解 RAG 系统的原理、构建流程以及性能优化提供了宝贵的实践经验。
2025-06-13 13:37:53
1191
2
原创 Streamlit 笔记
Streamlit 是一个用于快速构建数据应用的 Python 库,通过简洁代码即可创建交互式 Web 应用。主要特点包括:简单易用、实时更新、支持多种交互组件(如按钮、滑块、图表等)和机器学习模型集成。安装时若遇到 cmake 或 pyarrow 问题,建议使用 conda 安装依赖。基本用法包括创建文本框、按钮、数字输入框等组件,可通过 streamlit run 命令运行应用。它还支持数据可视化、文件上传、缓存优化等功能,并能构建多页应用。典型应用场景包括展示数据框、生成图表等,是数据科学家快速开发原
2025-06-13 11:09:54
798
2
原创 Chroma 向量数据库学习笔记
Chroma 是一个开源的嵌入式向量数据库。它主要用于存储和检索嵌入向量,这些向量通常由大型语言模型 (LLM) 或其他机器学习模型生成,用于表示文本、图像或其他类型数据的语义信息。Chroma 的设计目标是易于使用、轻量级、且专为 LLM 应用优化。
2025-06-12 14:03:42
796
原创 LlamaIndex 学习笔记
LlamaIndex学习笔记摘要 LlamaIndex(原GPT Index)是连接私有数据与大型语言模型(LLM)的框架,解决LLM无法直接访问最新/专有数据的问题。其核心流程分为四阶段: 预处理:解析PDF/Word等文档,分块处理并生成带元数据的节点; 索引构建:通过嵌入模型创建向量/关键词/图谱等混合索引; 查询处理:多策略检索(向量相似度+关键词匹配),筛选相关节点; 响应生成:结合LLM合成答案(紧凑模式/树状汇总等)。系统还支持持续优化索引与检索策略。适用于需增强LLM领域知识的应用场景。
2025-06-12 11:06:05
880
原创 RAG 处理流程
本文介绍了RAG(检索增强生成)系统的处理流程与关键问题。系统首先将用户问题编码为向量,通过检索器从知识库中获取相似文档,可选重排序后输入问答模型生成答案。主要挑战在于嵌入模型不一致问题:知识库编码和查询编码若使用不同模型会导致检索质量下降。解决方案包括统一嵌入模型或直接使用问答模型嵌入层。流程分为检索阶段(向量空间)和生成阶段(文本空间),其中向量仅用于检索,生成阶段输入为纯文本。典型组件包括嵌入模型(如text-embedding-ada-002)、检索器(如FAISS)、重排序模型(如cohere-r
2025-06-11 22:23:55
1105
原创 RAG 和微调如何抉择
摘要: 选择RAG或微调需综合考虑数据特性、应用场景等因素。RAG适合动态知识、高透明度需求,能降低幻觉,适用于问答系统等场景;微调则适合领域特定、风格固定的任务,如代码生成等。两者结合可兼顾实时知识与领域风格,典型场景包括客户支持机器人、专业文档处理等。优先RAG:知识频繁更新、需溯源;优先微调:稳定领域、风格定制。结合方案适用于需同时满足准确性、个性化输出的复杂需求。(149字)
2025-06-11 11:12:05
550
原创 ubuntu22.04 安装docker 和docker-compose
Ubuntu系统Docker安装指南 本文详细介绍了在Ubuntu系统上安装Docker和Docker Compose的步骤。首先需要卸载旧版本Docker,然后更新系统并安装必要依赖。通过阿里云镜像源安装Docker CE社区版,提供解决常见启动错误的方案。对于Docker Compose,指导下载指定版本并设置执行权限,同时给出版本冲突问题的解决方法。文中包含完整的命令行操作和注意事项,帮助用户顺利完成安装和验证。
2025-06-09 17:44:10
624
原创 【记一次LLamafacoty量化环境】has inconsistent version: expected ‘0.7.1‘, but metadata has ‘0.7.1+cu124‘
本文总结了使用auto-gptq进行量化时遇到的版本兼容问题及解决方法。由于auto-gptq可能被弃用,建议使用指定版本组合:Python 3.11、torch 2.3.0、cuda 121、auto-gptq 0.7.1、transformers 4.51.1等。安装时需注意版本冲突,如降低Python版本、手动安装PyTorch等。当使用vllm作为推理引擎时,需特别注意rope_scaling参数的兼容性,文中推荐的版本组合可有效解决常见报错问题。
2025-06-05 18:07:30
382
原创 llamafactory 微调模型出现TypeError: argument of type ‘NoneType‘ is not iterable
文章摘要:作者在运行transformers模型时遇到一个TypeError错误,提示ALL_PARALLEL_STYLES变量为NoneType不可迭代。解决方法是在llamafactory的训练代码开头(如tuner.py文件)添加代码片段,检查并初始化modeling_utils模块中的ALL_PARALLEL_STYLES变量,将其设置为包含"tp"、"none"等四个并行风格的列表。该方案有效解决了NoneType不可迭代的问题。
2025-06-02 11:19:15
980
2
原创 mac-ubuntu虚拟机(扩容-共享-vmtools)
其中最主要的是设置文件夹后需要挂载命令,并且每次重启虚拟机都需要重新挂载。使用GParted工具对Linux磁盘空间进行扩展。该文章是win下,mac下直接按照下图添加即可。查看已经显示为重新安装VMware Tools。经过上面的方式后还不够,需要再进行下面的操作。执行之后就可以使用,也可以在标签栏中的。
2024-10-31 15:44:17
875
原创 一个坑firewall-cmd: error: unrecognized arguments
写一个比较坑的问题,添加端口号的过程中出现下面的问题[root@instance~]# firewall-cmd --zone=public –-add-port=80/tcp --permanentusage: see firewall-cmd man pagefirewall-cmd: error: unrecognized arguments: –-add-port=80/tcp下意识的检查一下防火墙的状态,仍然是开启状态,但是百般搜索都是让开启防火墙,自己测试了一下,防火墙是否开启执行添加
2022-04-06 08:47:47
16652
4
原创 Spring boot websocket - IllegalArgumentException in bean ‘subProtocolWebSocketHandler‘ No handlers
问题的根源在于问题的根源是你没有在registerStompEndpoints中配置任何端点。尝试使用STOMP但尚未配置任何STOMP端点的应用程序将无法正常工作。开始的代码是这样的:@Configurationpublic class CustomWebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Bean(value = "serverEndpointExporter") public Serv
2021-03-26 18:53:21
1466
原创 函数式编程及常用接口详解
函数式编程介绍函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!这个我借鉴与廖雪峰官方网站的说法,在我这边看来,我一直这样理解函数式编程我们不再像命令式编程一样,使用一个确定的
2020-12-12 17:05:33
559
原创 设计模式之原型模式
原型模式一、认识原型模式1、概念用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。我们拿电脑中复制粘贴的例子来演示一下原型模式.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9xYV92q-1607679850549)(C:\Users\张玉雷\AppData\Roaming\Typora\typora-user-images\1565795340407.png)]上面这张图已经很明显了,首先我们需要一个文件,这个文件一定要有可以被克隆的功能,那么我
2020-12-11 17:44:31
224
原创 设计模式之单例设计模式
单例设计模式概述单例设计模式注意要用三种:懒汉式单例、饿汉式单例、登记式单例。特点:单例类只能有一个实例单例类必须自己创建自己的唯一的实例单例类必须给所有其他对象提供这一实例代码实例一:懒汉式单例public class Singleton{ private Singleton(){} private static Singleton single = null; public static Singleton getInstance(){
2020-12-11 17:43:40
277
java多线程拥有同一把锁就代表拥有同一种资源吗
2019-05-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人