- 博客(117)
- 资源 (7)
- 收藏
- 关注
原创 【Langchain 1.0】ChromaDB 向量相似度算法深度对比:cosine、L2、IP 该如何选择?
相似度算法的选择。同样的文档、同样的查询、同样的嵌入模型,仅仅因为采用了不同的距离度量方式,检索结果的排序和相关性分数就可能截然不同。本文将通过一个可控的对比实验,在 ChromaDB 中创建四个使用不同相似度算法的集合,存储相同的文档,用同一个查询分别检索,直观展示 cosine、L2(欧氏距离)、IP(内积)以及默认策略的差异,并给出选型建议。相似度算法的选择不是"哪个更好"的问题,而是"哪个更符合你对相似的定义"。场景推荐算法理由通用文本语义搜索cosine。
2026-05-29 16:56:54
164
原创 【langchain 1.0】ChromaDB 原生 API 实战:为 LangChain 向量库打造管理工具集
在前面的文章中,我们已经通过 LangChain 的封装接口,完成了从 PDF 读取、文本分割、向量化到向量库存储的完整 RAG 索引构建流程。LangChain 的Chroma类提供了便捷的和等方法,让我们无需关心底层细节就能快速上手。但在实际开发和运维中,我们往往需要直接操作向量数据库——查看有哪些集合、每个集合有多少条记录、清理过期数据等。这些"管理型"操作如果也通过 LangChain 的封装层来做,就显得有些绕远了。本文将基于ChromaDB 原生 Python API。
2026-05-29 14:47:10
400
原创 【LangChain 1.0】 语义搜索实战:从 PDF 文档到向量知识库的完整 RAG 链路
知识截止日期的边界和无法访问私有数据。检索增强生成(RAG, Retrieval-Augmented Generation)正是为解决这两个问题而生的架构范式——它让模型在回答问题时,能够先检索相关的外部知识,再基于检索到的上下文进行推理和生成。从 PDF 文档读取 → 文本分割 → 向量化 → 向量库存储 → 语义检索。我们会使用 LangChain 1.0 的抽象接口,配合 Ollama 本地嵌入模型和 Chroma 轻量级向量数据库,全程无需联网即可完成索引构建与检索。
2026-05-28 23:54:36
427
原创 【LangChain 1.0】 接入 Ollama:在本地跑通 DeepSeek-R1 的完整指南
在 AI 应用开发中,调用云端 API 虽然方便,但存在数据隐私、网络延迟和调用成本等顾虑。有没有一种方案,既能享受大模型的能力,又能把数据完全留在本地?Ollama正是为解决这个问题而生的。它是一个开源的、专为在本地运行和管理大型语言模型(LLM)而设计的轻量级工具。简单来说,它的核心作用是:让你能像运行一个普通程序一样,在自己的电脑上轻松下载、运行和试验各种开源大模型(如 Llama 3、Qwen、Gemma、DeepSeek-R1 等),而无需了解复杂的模型部署、环境配置或依赖管理。
2026-05-28 23:44:04
370
原创 【LangChain 1.0】接入 DeepSeek API:从 API Key 申请到流式响应的完整实践
DeepSeek 作为国内领先的大语言模型提供商,其 API 以高性价比和优秀的推理能力受到开发者青睐。而 LangChain 作为连接大模型与应用的桥梁框架,在 1.0 版本中对模型调用方式进行了重要重构,引入了更加统一的接口。本文将完整演示:从 DeepSeek API Key 的申请,到使用 LangChain 1.0 的新语法调用模型并获取流式响应的全过程。同时会对比 LangChain 0.x 与 1.x 的语法差异,帮助读者平滑迁移。获取凭证。
2026-05-28 23:32:17
366
原创 【LangChain 1.0】环境搭建指南:从 conda 到 uv 的现代化 Python 工程实践
在 AI 应用开发日益普及的今天,Python 依然是构建大语言模型(LLM)应用的首选语言。而 LangChain 作为连接模型与应用的桥梁框架,其环境搭建的规范性直接影响后续开发的效率和稳定性。经典的 pip + conda 组合与现代化的 uv 工具。前者是大多数开发者熟悉的路径,后者则代表了 Python 生态依赖管理的新范式。团队已有成熟的 conda 工作流,迁移成本高;需要频繁切换 Python 版本进行测试(conda 的多版本管理更成熟);
2026-05-28 23:11:54
455
2
转载 【理论】Harness Engineering:从 Anthropic 的 4 小时 DAW 实验到 AI 原生开发的新范式
2026 年 3 月 24 日,Anthropic 发布了一篇技术博客,记录了一个令整个 AI 工程界震动的实验。他们让 Claude 自主编写了整整 4 个小时的代码,只凭一句话——“在浏览器中用 Web Audio API 构建一个全功能的 DAW”——就生成了一个可以实际运行的数字音频工作站。这个 DAW 并非玩具。它有完整的编混音器、音轨传输控制,还内置了一个 Claude 驱动的 AI 助手。
2026-05-24 13:40:11
37
原创 【实战】Changesets:Monorepo 版本管理与变更日志的实践
在现代前端与 Node.js 生态中,版本号管理与变更日志维护是保障依赖一致性、提升协作透明度的核心环节。尤其是在 Monorepo 架构下,多包之间的版本协同、依赖升级与发布节奏控制变得尤为复杂。在 Changesets 出现之前,大多数项目要么依赖手动修改版本号、零散维护变更日志,要么使用早期工具(如 Lerna)进行批量处理。版本号与实际变更不匹配:开发者难以准确判断某次改动应触发哪个包的版本升级;依赖升级遗漏:跨包依赖关系处理不够精细,导致消费者安装到不兼容版本;变更日志质量低下。
2026-05-18 18:42:12
428
转载 【理论】测试驱动开发(Test-Driven Development,TDD)
TDD(Test-Driven Development)是敏捷开发中的一项核心实践和技术,也是一种设计方法论,其基本思想是:在明确要开发某个功能后,在开发功能代码之前,先编写测试代码,然后编写功能代码并用测试代码进行验证,如此循环直到完成全部功能的开发。TDD 有广义和狭义之分,常说的是狭义的 TDD,也就是 UTDD(Unit Test Driven Development)。
2026-05-13 22:02:58
39
原创 【理论】TypeScript 函数重载:从 Vue 3 defineEmits 说起的类型安全实践
Vue 3 正是借助 TypeScript 的函数类型重载机制,为自定义事件提供了精确的类型约束。
2026-05-12 21:35:44
452
原创 【实战】从零搭建第一个最小可运行AI Agent Python项目
AI Agent(智能体)是当前大模型应用开发中最热门的范式之一。让大语言模型(LLM)自主决定何时调用外部工具,由我们的代码执行这些工具,再将执行结果反馈给模型,最终生成完整的回答。然而,对于初学者来说,很多 Agent 框架(如 LangChain、LangGraph)封装了太多抽象层,反而让人难以看清本质。本文将带你通过一个最小可运行的 Python 项目,用最少的代码把"Agent 调用工具"这件事跑起来。
2026-04-29 12:03:44
437
原创 【实践】Monorepo 工程化:沉淀可复用的配置规则
配置一旦被复制成 N 份,就不再是统一规范,而是会各自独立演化的副本。把配置本身当作 npm 包发布到 workspace 内部,其他包通过继承这些配置来生效。例如 TypeScript 的 extends、ESLint 的 import flat config、函数工厂(vitest 预设)。升级配置只改一个地方,所有包同步生效。这才是 Monorepo 真正的杠杆所在——不是更快地构建,而是更低成本地维护规范。
2026-04-28 21:23:22
292
原创 【实战】用 langchain-ollama 同时驾驭本地与云端大模型
如果你已经会用requests直接打 Ollama 的 HTTP 接口,可能会问:再套一层 LangChain,是不是过度工程?我一开始也这么想,直到真正动手做了一个稍微复杂点的应用——带工具调用的 RAG 助手。那一刻我才意识到,自己拿requests拼的那套东西,本质上是在重新实现一遍 LangChain 已经打磨好的抽象。接口标准化。LangChain 的接口让 Ollama、OpenAI、Anthropic、Gemini 等模型在调用层完全一致。换模型就是换一行 import,不用动业务代码。
2026-04-27 21:51:11
426
原创 【实践】Ollama 本地大模型和云端模型的安装使用
Ollama 是一个开源的、专为在本地运行和管理大型语言模型(LLM,Large Language Model)而设计的轻量级工具与平台。简单来说,它的核心作用是:让你能像运行一个普通程序一样,在自己的电脑上轻松下载、运行和试验各种开源大模型(如 Llama 3、Qwen、Gemma 等),而无需了解复杂的模型部署、环境配置或依赖管理。过去一年,本地化部署大语言模型这件事悄悄变得不那么"硬核"了。
2026-04-27 20:43:44
441
原创 【实践】Monorepo 从0到1搭建最小可用 Vue Monorepo
随着前端工程规模扩大,代码复用和协作效率成为核心痛点。传统的多仓库(Multi-repo)模式下,公共组件库、工具函数与业务应用分散在不同仓库中,版本同步、依赖管理和跨仓调试的成本越来越高。Monorepo(单仓库多包管理)将多个相关项目置于同一个代码仓库中,通过统一的包管理器和工作空间机制,实现代码共享、依赖一致和构建协同。组件库与业务应用共存:UI 组件和业务逻辑在同一仓库内迭代,修改组件后业务侧即刻感知工具函数复用:通用的格式化、请求封装等逻辑无需单独发包即可跨项目消费统一技术栈管理。
2026-04-27 15:45:02
381
原创 【实践】微前端 qiankun 解决 Vue3 子应用卸载后样式残留问题
承接上文《【实践】微前端 qiankun 解决 Vue3 子应用样式污染问题》,团队的中台项目在完成微前端 qiankun 改造后,出现了 Vue3 子应用的样式污染问题。在 qiankun 主应用开启的情况下,sub-vue3-asub-vue3-b(Vite + Vue3)激活后,所有样式均直接挂载到主文档的全局<head>下,且未被加上前缀,导致 Vue3 子应用的 CSS 发生泄漏并污染了 Vue2 子应用的样式。而sub-vue2。
2026-04-23 18:10:45
304
原创 【实践】微前端 qiankun 解决 Vue3 子应用样式污染问题
随着业务的持续扩张与迭代,团队的中台项目体量日益庞大,逐渐演变成一个难以维护的巨石应用。与此同时,原本不属于本团队的智能分析应用决定并入大数据中台,后续还需接入大量 AI 相关应用。面对这一现状,团队决定对项目进行微前端改造。在方案选型阶段,团队调研了多种微前端方案,最终基于当前前端技术生态现状与兼容成本考量,选定qiankun框架作为改造方案。按照官方文档完成应用拆分、路由改造、状态管理改造等一系列操作后,本地启动主子应用进行验证。然而,在切换至 Vue3 子应用后,发现。
2026-04-23 01:50:43
299
原创 项目级 python 包管理工具 UV
Python 默认的依赖安装(pip 是 Python 的「包管理工具」,安装 Python 3.4 及以上版本 时,pip 会自动一起装上,不需要额外下载) 方式类似于前端 NPM 的-g 全局安装,不适用于多项目开发。我们打开 python 的目录就可以看到,。尝试使用 uv add 安装 pyyaml 依赖,这个时候 pyyaml 这个库就被安装在当前这个项目目录下安装,而不是安装在全局。同时 uv 会在当前这个项目中创建一个 .venv 文件,这个文件主要用来管理当前项目 python 的环境。
2026-04-12 16:52:50
149
原创 Spec-Driven Development(SDD,规格驱动开发)
Spec-Driven Development(规格驱动开发)是生成式 AI 时代下适配工程化开发的新型软件开发方法论,核心是先由技术人员定义简洁、可测试、形式化的系统规格说明(Spec),将其作为人、团队与 AI 之间的「动态契约」和开发过程的唯一事实来源(Single Source of Truth),再以此驱动 AI 完成代码生成、测试验证等工程实现工作,实现「规划」与「实作」的分离。
2026-03-24 22:15:00
1513
原创 cURL(Client URL)
从那时起,cURL 从一个仅支持 HTTP 和 FTP 的小工具,成长为一个支持数十种协议、代码库超过 15 万行的庞然大物。:尤其是在 HTTP/2 和 HTTP/3 下,对多路复用、服务器推送等特性的性能进行持续优化。无论是通过命令行进行快速测试,还是通过 libcurl 为大型应用提供网络引擎,cURL 都将继续在未来数字世界的“数据传输”领域中扮演核心角色。cURL 从一个简单的个人项目,成长为互联网基础设施中不可或缺的“瑞士军刀”。的项目,这是一个简单的 HTTP 下载工具。
2025-11-22 17:14:00
134
原创 nodejs.Error: create “Watcher“ leader failed, the port:55310 is occupied by other
当前问题的核心是端口 55310 被占用,优先通过查找并杀死占用进程,重新启动即可;若端口频繁冲突,可在配置文件中指定自定义端口。如果执行上述步骤后仍报错,可能是 Egg.js 版本与模块不兼容,建议升级 Egg.js 到稳定版本(如2.x最新版),或检查项目依赖是否有冲突。
2025-11-21 14:20:43
670
原创 互联网 APP 开发:Push 推送与消息的区别
push(推送通知):Push 全称推送通知,是服务器主动向客户端传递信息的系统级技术方案。它依托手机厂商(苹果 APNs、华为 / 小米推送)或第三方服务(极光推送、个推)的专属通道实现,核心特点是突破 APP 运行状态限制 —— 无论 APP 处于前台、后台还是完全关闭,都能触达用户。
2025-11-17 15:37:34
1511
原创 CSV(Comma-Separated Values)文件
默认无数据类型区分(如数字、字符串),需由读取方自行解析,这也导致复杂格式(如带格式的日期、多值字段)支持不足。:以**逗号(或制表符、分号等分隔符)**分隔不同单元格数据,每行代表一条记录,每列代表一个字段。:无特殊格式标记,可用记事本、Excel、Python等工具直接读写,跨平台兼容性极强。:常用于不同系统(如数据库、Excel、数据分析工具)之间的。,优势是简单、通用,适合小规模结构化数据的存储与交换。,是轻量级数据传输的常用格式。
2025-11-17 11:50:19
275
原创 Sequelize:获取器, 设置器 & 虚拟字段
Sequelize 允许为模型属性定义自定义获取器(Getter) 和设置器(Setter),还支持创建虚拟字段(Virtual Field)。虚拟字段仅存在于模型层,不在数据库表中实际存储,可简化自定义属性逻辑,提升代码简洁性。
2025-11-09 21:59:58
181
原创 告别复杂 SQL!ORM (Object-Relational Mapping,对象关系映射)帮你优雅操作数据库
是一种编程技术,用于在(如 JavaScript、Java、Python)和(如 MySQL、PostgreSQL、SQLite)之间建立桥梁,让开发者可以用更直观、更符合面向对象思维的方式操作数据库,而无需直接编写复杂的 SQL 语句。ORM 的核心思想是把数据库中的映射为程序中的,表中的映射为类的,表中的映射为类的。这样,你就可以通过操作对象来间接操作数据库,而不用关心底层的 SQL 实现。举个通俗的例子。假设你有一个User有 ORM(用 Sequelize)时,你先定义一个User。
2025-11-09 12:34:30
432
原创 MacOS 若要启用系统扩展,你需要在 “恢复” 环境中修改安全性设置
在使用mac电脑时,部分软件需要开启系统扩展才能正常使用。添加系统扩展时,系统提示若要启用系统扩展,您需要在“恢复”环境中修改安全性设置解决方法,如下图所示。按照提示,先选择关机。按住触控ID或电源按钮,至少10秒,将出现启动选项窗口。选中[选项],将出现[继续]按钮,点击此按钮。依次点击左上角的[实用工具]-[启动安全性实用工具]点击[安全策略]选择[降低安全性],勾选“允许用户管理来自被认可开发者的内核扩展”,点击[好]。设置成功之后,点击屏幕左上角的苹果标志重启电脑,重启即可。
2025-10-26 00:15:03
1727
原创 npm、yarn、pnpm
● 依赖存储方式:npm 和Yarn 采用各自项目的 node_modules 目录进行依赖复制,而pnpm 则使用共享的全局存储区,并通过硬链接和符号链接来管理依赖。● 磁盘占用:pnpm 极大地减少了磁盘空间占用,因为相同的依赖不会在每个项目中重复存储。● 安装速度:pnpm 的共享存储和硬链接机制使其安装速度通常最快。● 依赖管理:pnpm 的非扁平化 node_modules 结构解决了幽灵依赖问题,提供了更严格的依赖管理。
2025-10-08 00:20:13
744
原创 AI 智能体的运行模式
不是的,这和模型的训练过程是没有关系的。随后,流程进入 “执行 - 调整” 的循环阶段:Agent 主程序将新生成的执行计划再次传递给执行 Agent,执行计划中的第一步(如 “查询 2025 年澳网男子冠军名字”),获取结果后加入历史执行记录,再将相关信息传给 Re-Plan 模型生成更新后的计划。这类模式暂无统一名称,各 Agent 实现存在差异,其中 LangChain 提出的 “Plan-And-Execute 模式” 较为典型,其核心是 “先规划,再执行,且能动态修改规划”,灵活性更高。
2025-10-03 18:07:50
1063
原创 AI 智能体基本概念与架构
举两个具体例子:一是知名的编程 Agent “Cursor”,用户只需提交编程任务,它就会调用大模型和工具生成代码,直至任务完成,用户最多只需点击 “确定” 按钮;要解决这个问题,只需给大模型搭配对应的工具:像读写文件、查看文件列表、运行终端命令等工具,这些工具就像大模型的 “感官和四肢”。这种 “大模型 + 工具” 组合而成、能感知和改变外界环境的智能程序,就是 AI Agent,通常用 “机器人” 图标表示,与大模型的 “大脑” 图标形成对比,象征其具备 “独立做事” 的能力。4个模块如何协同运行?
2025-10-03 17:49:40
799
原创 【有空再整】Vue.js设计与实现
虚拟DOM渲染成真实DOM,需要用到渲染器编译器将模板进行编译为虚拟 DOM,最后放到script块对象中的render选项位置。之后渲染器将虚拟 DOM 转为真实 DOM 挂载到页面上,之后的更新及其系列操作也将由渲染器完成。
2025-09-01 13:57:19
747
原创 【源码分析】@vue/runtime-dom/src/apiCustomElement.ts 解析
源码来源于其他参考这段代码定义了一个可导出的泛型类型,用于描述能创建VueElement实例的构造函数类型,该构造函数可接收可选的任意属性对象作为初始参数,返回的实例同时具备VueElement类型和泛型参数P(默认空对象)所指定的类型特性,主要作用是在TypeScript中约束和描述Vue元素构造函数的参数和返回值类型,确保类型安全。这段代码定义了一个可导出的接口,用于规范自定义元素(通常是Vue自定义元素)的配置选项结构,包含可选的样式数组(styles)、是否启用影子DOM(shadowRoot。
2025-08-27 18:39:08
1016
原创 强缓存与协商缓存详细解析
强缓存和协商缓存是互补的缓存机制:强缓存通过 “本地判断” 实现极速响应,适合稳定资源;协商缓存通过 “服务器验证” 保证资源新鲜度,适合动态资源。实际开发中需根据资源特性组合使用,同时利用文件指纹、缓存头优先级等技巧,在性能和实时性之间取得平衡。理解二者的工作原理,是优化 Web 加载速度的关键一步。
2025-07-30 01:27:32
646
原创 CSS 重排与重绘详解
重排和重绘是浏览器渲染页面的必要过程,但过度频繁的操作会严重影响性能。批量处理样式修改,避免零散操作;优先使用transform和opacity实现动画;减少强制重排的场景,合理规划 DOM 结构。通过以上优化,可显著降低页面的性能消耗,提升用户体验,尤其在移动端和复杂交互场景中效果明显。
2025-07-30 00:06:15
865
原创 【工程化】浅谈前端构建工具
前端构建工具是辅助开发者将源代码转换为浏览器可直接运行的静态资源的工具集合。随着前端技术的发展,源代码往往包含浏览器无法直接解析的语法(如 TypeScript、Sass)、模块化规范(如 ES Modules、CommonJS)以及需要优化的资源(如未压缩的图片、冗余代码),构建工具通过一系列自动化处理(转译、打包、压缩、优化等),降低开发复杂度并提升应用性能。构建工具的核心价值体现在三个方面:一是语法转换,将高级编程语言或语法(如 ES6+、JSX)转换为浏览器兼容的代码;二是资源整合。
2025-07-26 18:11:04
1193
1
原创 HTML5 新特性:MutationObserver 详解
在一些具有编辑功能的应用中,如在线文档编辑、绘图工具等,通过 MutationObserver 监测文档或绘图区域的 DOM 变化,记录每次操作,从而实现撤销和重做功能。高效性:相比传统的轮询方式,MutationObserver 只有在真正的 DOM 变化发生时才触发回调,极大地提高了资源利用效率,减少了不必要的计算和资源消耗。:监测表单输入字段的变化,实时进行验证。精准监测:可以通过配置精确指定要监测的 DOM 变化类型,如仅关注特定属性的变化或特定子树内的节点增减,避免了不必要的监测开销。
2025-07-26 13:18:48
948
原创 JavaScript 中 let 在循环中的作用域机制解析
闭包捕获变量引用:闭包保存的是变量的引用,而非创建时的值。let的块级作用域:在循环头或循环体中使用let,会为每次迭代/执行创建独立作用域。var的函数作用域:所有闭包共享同一个变量,导致捕获最终值。这一特性是ES6对JavaScript作用域机制的重要改进,避免了传统闭包陷阱,使代码逻辑更符合直觉。
2025-07-26 00:07:33
479
原创 JavaScript 中的 Window 对象详解
Window 对象是浏览器环境中 JavaScript 的全局对象,它代表一个浏览器窗口或标签页,是 JavaScript 运行时环境的核心载体。所有全局变量、函数和对象都以 Window 对象为宿主,同时它还提供了与浏览器窗口交互的各种方法和属性。在浏览器中,window是一个顶层对象,不需要通过其他对象引用即可直接访问,例如可以直接简写为alert()。Window 对象是浏览器环境中 JavaScript 的全局对象,所有全局变量和函数都是它的属性和方法。
2025-07-24 13:47:39
765
原创 HTML5 跨文档通信机制:postMessage API 详解与应用
postMessage 作为跨源窗口通信的标准解决方案,其核心价值在于在保障安全性的前提下,实现不同源文档之间的可控交互。通过遵循严格的来源验证、消息校验等规范,可有效规避安全风险,广泛应用于微前端架构、跨域组件集成、多窗口协同等场景。深入理解其特性与使用规范,是构建复杂前端系统时处理跨域通信的基础。
2025-07-23 12:17:42
1130
IEEE Standard for Local and metropolitan area networks Part 15.6: WBANs
2020-10-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅