摘要: 检查 Markdown、PDF、FAQ 和网页的加载结果,再评估递归分块、重叠和 token 预算。
PDF 里一张价格表被读成连续文字,版本名与价格之间的关系就可能丢掉。后面即使检索到这一段,也很难可靠判断某个价格属于哪个版本。 做知识库时,先打开 Loader 的实际输出。确认资料读得完整,再往下编码,能更早发现问题。 统一文档要保留哪些东西 原教程用 Document 组织正文和元数据。正文参与后续文本处理,元数据帮助定位来源、过滤和引用。 // 自定义文档示意 const document = { pageContent: "项目使用 pnpm 管理依赖。", metadata: { docId: "development-gu...
摘要: 从持久化、ANN 与数据迁移走到网页接入,用一组可重复的检查验收知识库助手。
内存里放几份文档,可以很快演示检索。进程重启后数据没了,多个实例又各自保存一份,存储问题就出现了。 走到上线这一步,先保证已有数据能持续使用,再检查页面到工具的整条请求。网页能够打开,只覆盖了其中一部分。 先把存储需求写具体 MemoryVectorStore 适合小样本学习和建立对照。它也可以做过滤,不能因为数据放在内存里就断言它没有过滤能力。需要进一步比较的是持久化、共享、查询执行和更新管理。 如果项目已有 PostgreSQL,可以把 pgvector 放进候选。它支持精确搜索,也提供 HNSW 和 IVFFlat 等近似索引,具体用法见 [pgvector 项目文档](h...
在多语言前端项目里,文案通常不会直接写死在页面中,而是通过类似下面的方式引用: $t('Common.Button.Add') 这样做的好处是:同一套代码可以根据当前语言环境显示不同文案。 但项目变大之后,多语言也会带来一些维护问题: 代码里用了一个不存在的多语言 key; 同一段中文文案被重复添加了多个 key; 开发时临时写了 $t('添加'),但项目里其实已经有对应 key; 靠人工检查很容易遗漏。 多语言检查脚本的作用,就是把这些容易出错的地方自动找出来。 它的本质并不复杂:**读取语言包,扫描源码,提取 $t(),然后判断里面的...
Right now, it's too easy to let AI write the code while you skip the learning. The bug gets fixed but your mental model doesn't move. It might get worse over time. We are silently trading future capability for present-day speed, and the tools won't force us to do otherwise. That part has to come fro...
过去两年,关于 AI Coding 的讨论,几乎每隔几个月就会换一个重心。 最开始,大家讨论的是:AI 到底能不能写代码。后来,大家开始关心:它能不能真正参与开发。再后来,问题变成了:它能不能独立完成一个模块、一个项目,甚至一段完整的交付流程。 到了今天,这个问题其实已经有了阶段性答案。AI 不仅能写代码,而且已经能够在很多场景中写得很快、写得像样,甚至能把原型、骨架、测试和一些基础功能一并做出来。真正的分水岭,已经不再是“它会不会写”,而是“它写出来的东西,能不能被人和组织真正接住”。 这背后,意味着 AI Coding 正在进入一个新的阶段:竞争的重点,开始从生成能力,转向治理能力;...
title: 面向 JavaScript 开发人员的 Python author: Valentino Gagliardi url: https://www.valentinog.com/blog/python-for-js/ hostname: valentinog.com description: 为 JavaScript 开发人员提供的 Python 搭便车指南。享受! sitename: Valentino Gagliardi's Blog date: 2019-10-14 tags: ['JavaScript', 'Python', '前端开发', '网页开发'] ...
本文详细说明本项目如何在 Vue 2(包括低于 2.6 的版本)上通过插件注入与运行时适配,提供与 Vue 3 Composition API 接近的开发体验。内容覆盖安装入口、启用机制、运行时上下文桥接、响应式与计算/侦听适配、插槽与生命周期、兼容策略、执行时序、常见问题与限制,以及关键代码索引。 阅读本文时,请配合 composition-api 源码食用 https://github.com/vuejs/composition-api 一、背景与总体思路 目标:在不依赖 Vue 3 内核(Proxy/Effect)的前提下,让 Vue 2 应用可以使用 `setup...
Vue3提供了多种组件间通信的方式,满足不同场景的需求。 主要的组件通信方式: Props向下传递:父组件通过props向子组件传递数据。 // 子组件定义props export function defineProps( props: PropNames[] ): Readonly 事件向上传递:子组件通过事件向父组件发送消息。 // 子组件定义emits ...
Vue3采用了多种渲染优化技术来提高性能,这些技术主要体现在虚拟DOM的实现和响应式系统中。 主要的渲染优化技术: 虚拟DOM:Vue使用虚拟DOM来最小化实际DOM操作,只更新必要的部分。 diff算法优化:Vue3改进了diff算法,通过静态提升、事件缓存等技术减少了比对开销。 响应式系统:通过精确的依赖追踪,Vue只重新渲染依赖已更改数据的组件。 编译优化:Vue3的模板编译器能够识别静态内容,减少运行时的工作量。 异步更新队列:Vue将DOM更新操作缓存在队列中,然后一次性执行,避免不必要的计算和渲染。 ...
Vue3中的自定义指令允许开发者直接操作DOM元素,为框架增加了更多的灵活性。 自定义指令的核心实现: 指令钩子函数:指令定义了一系列的钩子函数,对应元素的不同生命周期。 bind:指令第一次绑定到元素时调用 inserted:被绑定元素插入父节点时调用 update:所在组件的VNode更新时调用 componentUpdated:指令所在组件的VNode及其子VNode全部更新后调用 unbind:指令与元素解绑时调用 指令注册:可以全局注册或组件内注册。 ...