RAG-Core
记录由这篇课程得到的一些关于RAG的启发。 What RAG RAG:检索增强,就像他的名字一样,RAG的过程大概就分为两个部分 Retrive(检索) 我们知道LLM的原理就是通过你输入的Prompt不断预测下一个词,而且这个词的概率会随着**上下文(Context)**的变化而变化,RAG就是通过改变Prompt或者说Context的方式,影响模型的回答。 向量数据库已经被认为是比传统数据库更高效的一种检索库 在我们输入一段初始的Prompt,模型在处理上下文的时候,系统会先通过某个编码器(Embedding)将文本convert成向量,然后去向量数据库(Vector...
2026-7-19
项目思考 12345运行架构:参与建设轻量级 AI Agent 运行时,打通 CLI、Gateway、WebUI、OpenAI-compatible API 四类核心交付入口,将消息总线、Agent Loop、Session、Cron、Heartbeat 等能力解耦并下沉到统一运行时中,实现多形态接入与底层能力的一次开发、多端复用。执行闭环:围绕工具调用型 LLM 执行链路实现多轮推理、流式响应、子代理协作、上下文裁剪与中断恢复等核心能力,形成覆盖消息接入 → 推理执行 → 会话持久化 → 结果分发的完整 Agent 执行闭环,保障复杂任务在长链路下的稳定性与可恢复性。扩展体系:完善多渠道与多模型扩展体系,仓库内置 15 个聊天渠道模块与 35 个 Provider 配置项,并沉淀 Session、Memory、Cron、Heartbeat...
LeetCode22:括号生成
LeetCode22:括号生成 22. 括号生成 - 力扣(LeetCode) 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 思路: 最直接的思路,构建一个长度为2n的数组,针对每个位置枚举两种情况,最后校验生成的字符串是否合格(显然这个指数级别的时间复杂度不满足条件) 仔细思考左括号和右括号的限制条件(在第一个思路上进行减枝),对于当前持有left个左括号和right个右括号的数组来说,需要满足 左括号数量必须小于n 右括号数量必须小于左括号 基于此我们可以得到加括号的限制条件: 如果左括号的数量小于n,仍可以继续插入左括号 如果右括号的数量小于左括号,仍可以插入右括号 递归出口为右括号已经全部插入 代码实现如下: {fold}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Solution { public...
2026.4.1
怎么保证Mysql的主从一致性 根据一致性有低到高,Mysql分为异步复制、半同步复制、组复制。异步复制是将binlog文件发送给从节点就不管了,半同步复制是只要有一个从节点告知主节点已经将binlog复制完毕,主节点就返回插入完成的消息,组复制就需要大多数节点都告知主节点复制完毕,主节点才会返回。 如何使用redis实现分布式锁 1SET lock_key unique_value NX PX 30000 lock_key:锁的名字。 unique_value:关键点! 每个客户端生成的随机唯一 ID(如 UUID)。用于释放锁时校验“这把锁是不是我加的”。 NX:只有 key 不存在时才设置成功(保证互斥)。 PX 30000:设置 30...
2026.3.31
...
2026.3.30
230. 二叉搜索树中第 K 小的元素 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(k 从 1 开始计数)。 思路:遍历顺序肯定是中序,才能用上搜索树的性质。 全局记录答案。 123456789101112131415161718192021class Solution { private int ans; private int k; public int kthSmallest(TreeNode root, int k) { this.k = k; dfs(root); return ans; } // 左中右遍历,在根节点k--。 private void dfs(TreeNode node) { if (node == null || k <= 0) { return; } dfs(node.left); //...
2026.3.29
xxl-job对比其他定时任务处理器的优势 支持动态更新cron表达式 日志写入 任务失败通知 提供可视化监控 支持分布式任务 IOC的原理 项目启动的时候会扫描所有类是否包含容器化管理的注解,如果有先将类信息统一封装成BeanDefination的规范,然后通过反射机制调用空参构造函数进行实例化,然后进行依赖注入,调用初始化方法,以及postconstruct注解方法,进行aop增强,包装成bean对象后放入IOC容器中 1.项目启动不会扫描所有类,而是扫描包路径下带有@bean和@component类 2.不一定调用空参构造 3.依赖注入需要注意循环引用问题 4.postconstruct -> init -> 自定义init ->...
多线程的一些工具类
countdownlatch 1234567891011121314151617181920public class Main { public static void main(String[] args) throws InterruptedException { // 主线程等待n个子线程,每次调用countdown表示该线程准备好了 CountDownLatch latch = new CountDownLatch(2); new Thread(() -> { System.out.println("线程1执行"); latch.countDown(); }).start(); new Thread(() -> { System.out.println("线程2执行"); ...
ai agent开发(持续更新)
提示词(prompt) zero-shot:零样本学习,无提示 few-shot:少样本学习,少量示例 检索增强(RAG) 通过构建向量数据库等为大模型提供新的知识库,大模型通过检索这些知识库学习新的知识。 我们可以通过文本嵌入大模型将文本转换成向量,模型会把一段文本拆分成多个维度(抽象语义特征)的数字列表。 进行向量匹配时,主要使用余弦相似度算法来确定两段文本的相似度。 余弦相似度:计算两个向量的夹角。 对于两个 n 维向量 $A = [a_1,a_2,…,a_n]$、$B = [b_1,b_2,…,b_n]$,余弦相似度计算公式为:$$ \cos(\theta) = \frac{\sum_{i=1}^{n} a_i b_i}{\sqrt{\sum_{i=1}^{n} a_i^2} \cdot \sqrt{\sum_{i=1}^{n} b_i^2}} $$ LangChain 三种模型:LLM、聊天模型、 文本转向量: 123456from langchain_community.embeddings import DashScopeEmbeddingsmodel =...
2026.3.26
如果xxx宕机了怎么办(以redis服务宕机为例) 宕机中:这个阶段主要就看兜底策略能帮助服务缓解多大压力了。比如设置多级缓存,在宕机过程中还能顶住一部分流量。比如开启熔断,降低数据库压力,走降级策略。比如设置好互斥锁,当缓存挂了,请求需要获取锁才能访问数据库。 预防:通过一些手段预防宕机。比如建立集群。 tomcat是什么,有什么用 sevlet容器,用于部署基于sevlet的应用程序,如springboot、spring。 它可以将java程序看不懂的http请求封装成对象,并且选择合适的sevlet去处理这个请求 MVC是什么 M是model:处理业务逻辑,跟数据库进行交互 V是view:我们能看到的视图层,负责与用户交互 C是controller:负责接收view的请求,选择合适的model处理






