- 博客(703)
- 资源 (1)
- 问答 (6)
- 收藏
- 关注
原创 生产级 AI Agent 知识库系统实现逻辑
知识摄入:支持多格式、带元数据、增量更新向量存储:选型匹配规模,支持混合检索RAG 流程:检索 → 重排 → 权限过滤 → 注入 PromptLLM 安全:防幻觉、防越权、输出审计可观测性:监控准确率、延迟、Token 消耗🔑终极原则“知识库不是搜索引擎,而是可信赖的专家”—— 每一个答案都应有据可查、安全可控。
2026-01-21 16:29:48
779
原创 智能问数系统的完整技术栈与实现逻辑
提取并增强数据库 Schema(含业务语义)选择 LLM(开源 qwen2 / 商业 GPT-4o)构建 RAG 向量库(存储历史问法)实现 SQL 安全校验与权限控制添加结果自然语言解释 + 可视化部署到只读数据库环境🔑核心原则“先保证安全,再追求智能”—— 一个能生成错误 SQL 的智能问数系统,比没有更危险。
2026-01-21 16:27:13
733
原创 GenAI 原理
GenAI 通过深度神经网络(如 Transformer、U-Net)学习海量数据的统计规律,再利用概率采样方法,生成符合该规律的全新内容。任务类型主流技术文本生成自回归 Transformer(GPT/Qwen)图像生成扩散模型(Stable Diffusion)语音生成扩散 + 自回归(Voicebox, VALL-E)多模态多编码器 + 统一语义空间(GPT-4o, Qwen-VL)
2026-01-21 16:26:51
621
原创 Vibe Coding , Spec Coding , Agent Skills
概念定义“感觉式编程”:开发者通过模糊描述、示例或自然语言“暗示”意图,由 AI 自动生成代码,强调快速原型与探索性开发。“规范式编程”:开发者提供精确的需求规格(如函数签名、输入输出示例、约束条件),由 AI 生成可验证、可靠的代码。“智能体技能”:将编程任务分解为多个可复用、可组合的原子能力单元(如“调用 API”、“解析 PDF”),由 AI Agent 动态调度执行。范式关键词价值主张快、感性、探索降低编码门槛,加速创意落地准、理性、可靠确保 AI 生成代码符合工程标准智、模块、自治。
2026-01-20 14:24:00
999
原创 Spring AI
Spring AI = Spring Boot 开发者的 GenAI 最佳拍档。它不做炫酷的多 Agent 协作,而是专注于让 Java 工程师在熟悉的 Spring 生态中,安全、高效、合规地集成大模型能力。尤其在私有化部署(Ollama + Qwen) + 企业级 RAG场景下,Spring AI 提供了目前 Java 领域最优雅的解决方案。如果你正在用 Spring Boot 构建 AI 应用,Spring AI 应作为首选框架评估。
2026-01-20 13:59:08
574
原创 AutoGen,LangChain,LangGraph,Google ADK,OpenAI Agents,AgentScope使用对比
你的身份推荐框架科研人员 / 探索多 Agent 协作AutoGen初创公司 / 快速验证 AI 产品企业开发者 / 构建可靠业务流程LangGraphAndroid 开发者 / 多模态应用Google ADK政企 / 信创 / 中文场景AgentScope需要最大灵活性与生态LangChain(作为基础组件库)🔑核心原则简单任务→ 用 OpenAI Agents 或 LangChain复杂流程→ 用 LangGraph多角色自动协作→ 用 AutoGen 或 AgentScope国产化刚需。
2026-01-20 13:50:07
484
原创 Coze,Dify,n8n使用场景对比
平台核心价值适用人群Coze快:最快上线 Bot运营、产品、中小企业Dify稳:安全、可控、可集成企业开发者、架构师n8n通:连接一切系统自动化工程师、IT🔑记住要做聊天机器人→ 看(安全 vs 速度)要做系统自动化→ 选n8n要做私有 AI 应用→ 选。
2026-01-20 13:42:05
571
原创 使用ollama+chatbox+cherry studio 打造私有知识库
✅ 安装 Ollama,拉取qwen2和✅ 下载并安装✅ 在 Cherry Studio 中创建 Workspace,导入你的私有文档✅ 直接在 Cherry Studio 聊天框提问,或配置Chatbox连接该知识库✅ 享受完全本地、安全、精准的私有知识问答!💡一句话Cherry Studio 负责“记住你的文档”,Ollama 负责“理解并回答问题”,Chatbox 负责“提供好用的界面”。
2026-01-20 13:07:02
894
原创 Ollama部署本地大模型详细教程
创建ModelfilePARAMETER num_gpu 50 # GPU 层卸载比例(0~100)场景是否推荐本地开发/测试 Agent✅ 强烈推荐内部知识库问答(RAG)✅ 推荐(配合 Pgvector)生产环境高并发服务⚠️ 谨慎(建议评估 vLLM / Triton)需要 Function Calling 的 Agent❌ 不推荐(改用 DashScope API)🔑核心价值Ollama 是“本地大模型的 Docker”——让开源模型像容器一样 easy to run。
2026-01-19 15:26:40
686
原创 作为一个架构师,落地AI Agent开发的方案有哪些
业务价值是否明确?(不是“因为火才做”)核心 Tools 是否已存在?(Agent 不能凭空创造能力)是否有高质量业务知识库?(RAG 效果依赖数据)是否定义了失败兜底策略?(如转人工)是否评估过 Token 成本?(长上下文很贵!是否设计了可观测体系?(黑盒 Agent 无法运维)💡最后忠告AI Agent 的成功 = 20% LLM + 80% 工程体系。你的核心工作不是调模型,而是构建一个让 LLM 安全、可靠、高效地调用你业务系统的桥梁。
2026-01-19 15:20:54
378
原创 LangChain VS LangGraph
LangChain 是构建 LLM 应用的基础框架(如 RAG、Tool Calling),LangGraph 是 LangChain 的扩展模块,专门用于构建「带状态、可循环、多步骤」的 Agent 工作流。LangChain = 智能体的“工具箱 + 基础能力”LangGraph = 智能体的“操作系统 + 流程引擎”LangChainLangGraph是什么LLM 应用开发框架LangChain 的流程编排扩展解决什么问题“让 LLM 能做事”“让多个 LLM/人按流程协作”是否需要它。
2026-01-19 15:14:05
399
原创 简单介绍下LLM中的Fine-tuning
Fine-tuning = 在预训练大模型基础上,用特定领域数据继续训练,使其更擅长某类任务。原始 Qwen 模型:通用知识微调后 Qwen-Finance:能准确回答“市盈率怎么计算?观点正确认知“做 Agent 必须微调模型”❌ 错误!90% 场景不需要“微调能解决所有问题”❌ 微调不能替代 Tool 设计和流程编排“RAG 是微调的廉价替代”✅ 正确!优先尝试 RAG“微调适合标准化高频任务”✅ 如客服话术生成、日志分析🔑给 Java 工程师的建议。
2026-01-19 15:07:49
765
原创 Java Agent 入门项目模板(含代码 + 配置 + 说明)
/ 技能名,如 "getWeather"// 描述,用于 LLM 理解// 触发关键词(可选)
2026-01-19 15:00:56
589
原创 AI Agent开发核心技术解析
角色关注重点后端工程师Tool/Skill 开发、安全执行、可观测、集成内部系统算法工程师Prompt 优化、RAG 效果、Embedding 质量架构师多 Agent 编排、高可用部署、成本控制产品经理定义 Agent 能力边界、设计失败兜底策略🔑对(Java 后端)而言不要试图成为 LLM 专家,而要成为 “Agent 的赋能者”——你构建的高质量 Tools + 稳定执行环境 + 安全保障体系,才是 Agent 落地的关键!
2026-01-19 14:45:18
601
原创 多智能体开发框架:LangGraph , CrewAI , Swarm对比
你的目标推荐构建企业级、可审计的 Agent 工作流→LangGraph快速搭建“AI 专家团队”写报告/分析→CrewAI探索 OpenAI 最新范式(非生产)→Swarm你是 Java 工程师,想稳扎稳打→LangChain4j + 自编排,暂不碰这三者。
2026-01-19 14:31:35
446
原创 AI Agent开发框架选型指南
需求推荐快速上手、Java 技术栈✅做 POC / 演示✅Dify 或 扣子(Coze)科研/多 Agent 实验企业级生产系统✅LangChain4j + 自研 Skill 执行器 + 国产大模型🌟LangChain4j 是 Java 开发者进入 AI Agent 世界的最佳入口——它不炫技,但足够稳、够快、够用。如果你希望我为你生成一个基于 LangChain4j 的完整多技能 Agent 项目模板(含 Qwen 配置 + Spring Boot + Dockerfile),欢迎告诉我!
2026-01-19 14:26:16
713
原创 AI Agent开发核心概念通俗详解及first ai 应用开发指南
AI Agent = 大脑(LLM) + 工具箱(Tools) + 记忆(Memory) + 行动逻辑(Workflow)想象你雇佣了一个全能助理他能听懂你的话(自然语言)他会查天气、订机票、写报告、查数据库他记得你上次说过什么(上下文)他知道自己不会的事就去问别人或查资料这个“助理”就是 AI Agent。普通 Bot:只能“回答” → “北京天气?” → “我不知道”AI Agent:能“行动” → “北京天气?” → 自动调用天气 API → 返回“今天晴,25°C”
2026-01-19 14:12:31
612
原创 Transformer 模型
不用循环,靠“注意力”直接建模词与词的关系多头机制让模型从多个角度理解上下文Decoder-only 架构 + 自回归生成 = 所有大语言模型的基础。
2026-01-19 14:04:38
459
原创 Java版-图论-最短路-Floyd算法
根据上面提示,可以计算出,最大有100个点,最大耗时为100*wi,即最大的耗时为10000,任何耗时计算出来超过这个值可以理解为不可达了;
2024-12-10 15:57:19
497
原创 Java版-图论-最小生成树-Prim算法
如图:Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。与Kruskal算法相比,Kruskal是选择最小边,通过判断连通性加入最小生成树;Prim算法是选择点,构成最小生成树,然后选择未加入的点,通过权重判断是否能加入最小生成树;下面是详细的构建过程:首先加入index=0的点,此时最小生成树包含了只有0;注意,此时最小生成树节点[0,5],是两个,这两个是一个整体;
2024-12-10 14:26:43
682
原创 Java版-图论-最小生成树-Kruskal算法
为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。
2024-12-09 15:36:11
567
原创 Java版-图论-拓扑排序与有向无环图
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。
2024-12-09 10:43:45
708
原创 Java版-速通ETL工具中简单的DAG执行实现
/节点id//节点名称//前置节点//节点是否执行完成//节点是否执行成功//节点输出数据//节点配置数据/*** 节点的具体执行*/= null &&!//前置节点都执行完了,可以开始执行本节点任务了//本节点执行完了,通知下@Overridetry {//一些失败的处理....节点包含必要的状态:完成情况,成功失败情况。
2024-12-04 14:56:17
662
原创 Java版-速通队列和栈的基本操作
队列是种先进先出的数据结构。队列的基本操作主要是入队和出队。数据从队尾进入队列,从队首出队列。其中,pointer代表头队首第一个位置的数据。当头部有数据出队时,对应的pointer指针会往后移动一位。如果有数据入队,会直接加在队尾:我们会发现,随着队首数据的数据的出队,队首指针之前的空间都会被浪费掉,而且随着使用次数变多,空间浪费会越来越高。为了重复使用这部分空间,避免浪费,我们可以设计一个队首与队尾相连接的队列,重复利用空间。
2024-12-04 14:53:32
492
原创 Java版-速通数据结构-树基础知识
BST1,每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值2,每个节点中的值必须小于(或等于)存储在其右子树中的任何值我们可以把BST看成是进化了的二叉树。而且观察BST的这个特点,是不是让你想起来我们之前说过的数组的二分法,利用二分法对有序数组进行查找,可以提高搜索效率。如果对BST进行搜索,我们也可以充分利用BST的特征。根节点不包含字符,除根节点外每一个节点都只包含一个字符;从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
2024-12-04 14:51:47
503
原创 Java版-速通链表的基本操作
对于线性表来说,主要由顺序表示或链式表示。其中,顺序表示,我们在对应到实现的时候,经常使用数组进行实现。利用数组来实现一个线性的结构,好处是元素随机访问的时间复杂度都控制在常数内,并且元素的物理存放位置固定。但是用数组存放,如果遇到数组空间不足的情况,常常需要进行扩容操作,如,我们Java中常见的的ArrayList实现,在进行扩容的时候,需要将原数组数据拷贝到新的数组空间中,这一操作数据量较大时候比较耗时。
2024-12-04 14:48:45
206
原创 Java版-速通数组基础知识
我们首先来看一个数组的查找问题,对于升序数组nums,在数组中查找target,并返回target在nums中的索引位置。如果未找到返回-1。首先我们用最简单的无脑暴力法,从index=0的位置开始,往后依次对比,如果对比成功返回当前位置,如果不成功返回-1.index++) {return -1;从平均时间复杂度来看,这段代码复杂度为O(n)。再回到题目,数组nums是升序的,这一点是我们在代码中没有利用到的条件,如果我们第一次先去比较数组中间的数字,如果。
2024-12-04 14:37:46
294
原创 Java版-速通基本的位运算操作
为了简单点儿,我们只使用四位0和1。对于四位0和1,我们能表示的正数范围为0000 ~ 1111(0~15);如果最高位用作符号位,0表示正数,1表示负数,则能表示的数字范围为(-7~7);首先来看最简单的正数情况,如果为正数,那么原码,反码,补码规定为一致的;所以我们下面的讨论,主要是针对有符号位的负数。
2024-12-04 14:26:46
443
原创 CopyOnWriteArrayList实现解析
一,内部核心变量定义 /** The lock protecting all mutators */ final transient ReentrantLock lock = new ReentrantLock(); /** The array, accessed only via getArray/setArray. */ private transient volatile Object[] array;数据存放在arry内部;二,读取操作 /**
2022-02-17 21:25:31
562
原创 Java SPI
what SPI?SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。如何使用定义如下类:public interface SPITestInterface { String consoleSth(String source);}public class DefaultSPITestInterfaceImplOne implements
2022-01-20 13:32:36
1496
原创 LinkedHashMap实现解析
1,基本核心结构LinkedHashMap继承HashMap,除了有那些HashMap内部的结构外,还定义了 一个双向链表,/** * HashMap.Node subclass for normal LinkedHashMap entries. */static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int hash, K ke
2022-01-01 16:30:26
955
原创 HashMap核心代码解析
1,基本结构图解HashMap首先是一个 数组,数组的每个位置,挂的是链表或者红黑树 (jdk 1.8及其以上);在jdk 1.8之前,HashMap的实现仅仅是在数组的每个位置上 挂链表;只用链表的弊端:可能以为位置上hash冲突过多,造成去定位时候,查找效率比较低,ps,链表的查找时间复杂度为O(n),红黑树查找的复杂度为O(logn);2,如何去定位在数组中的位置首先先来看HashMap是如何把数据打散的:首先先来看HashMap是如何把数据打散的:static final int ha
2022-01-01 15:40:52
1153
原创 redis——基于redission的延时队列
private RBlockingQueue<TeacherAuthProgressContext> blockingQueue; private RDelayedQueue<TeacherAuthProgressContext> delayedQueue;初始化: blockingQueue = client.getNativeClient().getBlockingQueue(queueName); if (blockingQueue == n...
2021-12-21 16:06:03
1502
原创 Guava:使用ListenableFuture来执行有返回值的线程任务
首先来定义一个任务: @Getter @Setter @AllArgsConstructor class GetThreadReturnResult implements Callable<String>, Serializable { private static final long serialVersionUID = 2277437296426921203L; private String id; @Overr
2021-12-21 15:05:47
1117
原创 Java一些并发类实现原理
基础元素实现原理volatileLock前缀指令+JMM+缓存一致性模型+内存屏障(JMM内存屏障映射为操作系统内存屏障)synchronized锁升级(优化 ),monitor对象+等待通知(重量级锁)finalJMM保证cascmpxchg...
2021-12-18 14:46:12
928
原创 synchronized实现解析
JVM层的实现对于代码: int dataV = 1; public synchronized void changeData() { dataV++; } public void readData() { synchronized (this) { System.out.println(dataV); } }同步代码块首先来看代码块方法readData反编译之后:对于同步代码快,反编译
2021-12-16 18:00:30
506
原创 volatile实现解析
反汇编生成代码使用测试代码,观察value值生成的汇编代码:volatile int value = 1; @Test public void test() { value++; }反汇编观察value++时候的代码: 0x000000011541f775: lock addl $0x0,(%rsp) ;*putfield queueaddl操作前面,会加入一个lock前缀指令。下面来查询lock前缀指令的作用:lock描述翻译:lo
2021-12-16 15:35:36
942
假装美少女战士
2021-06-29
Hbase连接报错RpcRetryingCaller
2016-12-22
安卓平板安卓ubunt系统
2016-03-13
REST ful api发布到linux报错404
2016-03-29
安卓ListView如何遍历每个Item保存我每条上添加的数据
2015-10-26
使用bootstrap的一个东西,然后下报出这样一个错误,怎么改写代码才行?()
2015-04-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1