- 博客(21)
- 收藏
- 关注
原创 Query
长期:如果 RAG 链路变复杂,再考虑引入 LangChain Query Transformer、LlamaIndex QueryTransform / HyDE、Haystack QueryPipeline,或将 Query 改写拆成独立 Query Understanding 服务。将问题是否改写,改写用的模型,原始问题描述,改写后的问题描述,改写提取的meta过滤Json条件,改写生成的扩展查询数组。xx产品每期多少天,帮我把上个产品取消掉。产品A和产品B利率分别是多少,哪个高?
2026-07-06 16:37:59
173
原创 reg切片chunk大小如何选择
max token 是边界chunk size 是调优参数overlap 是保险topK 是召回量LLM context 是最终容量。
2026-07-06 10:23:43
296
原创 Streaming API responses(流式API响应)
Responses API WebSocket 模式 WebSocket 长连接 长流程 Agent、很多轮工具调用、需要低延迟连续交互。Realtime API WebSocket WebSocket 语音对话、实时音频、实时多模态(语音助手)Responses API 流式响应 HTTP + SSE 普通网页聊天,边生成边显示文字。→ Responses API WebSocket 模式。只想让文字边生成边显示。
2026-06-30 16:10:16
222
原创 AI应用开发
Developer(定义模型行为、规则、身份)>User(提出当前需求和问题)>Assistant(提供上下文,保持对话连续性)文本、图片、音频、工具调用、MCP、推理、Structured Output、Agent。优先使用 instructions 来定义模型的长期行为(身份、风格、规则等)。定义评估指标(准确率、JSON 合法率、工具调用成功率、成本、延迟等)6.4 推荐instructions(System Prompt)instructions(开发者指令) input(用户输入)
2026-06-30 12:29:57
170
原创 MySQL MVCC实现原理
MySQL的InnoDB存储引擎使用多版本并发控制(MVCC,Multi-Version Concurrency Control)机制来支持高并发的读写操作,同时保证事务的隔离性和一致性。MVCC允许不同的事务看到不同的数据版本,从而减少了锁的竞争,提高了数据库的并发性能。
2025-10-26 19:00:51
933
原创 MQ如何实现高可用(集群模式,主从复制)
RabbitMq通过镜像队列来实现高可用。(RabbitMQ的集群功能不行,消息本身不会在集群节点之间复制,如果某个节点故障,其上的队列和消息将不可用)。每个队列可以配置多个镜像(副本),分布在不同节点上。主节点负责处理消息,从节点同步主节点的数据。RabbitMq会自动选举一个从节点作为一个新的主节点。
2025-04-21 21:53:16
448
原创 MQ的消息延迟实现限时队列
RocketMq原生支持延迟消息,可以设置消息的延迟级别进行订单超时处理。Rabbit本身不支持延迟消息,但可以通过死信队列(DLX)和消息TTL(time-to-live)实现延迟效果。消费者监听死信队列,当消息从普通队列进入死信队列时,消费者会收到该消息,表示订单超时,可以进行订单取消等操作。当用户下单时,将订单消息发送到普通队列,并设置消息的TTL为订单的超时时间(如30分钟)在普通队列中设置死信交换器(DLX),当消息在普通队列中过期后,会被转到死信队列。创建一个死信队列,用于接受超时的消息。
2025-04-20 18:44:25
295
原创 Redis内存淘汰策略
一、Redis有8种内存淘汰策略不会淘汰任何数据,当使用的内存空间超过maxmemory值时,返回错误。筛选设置了过期时间的键值对,越早过期越早被删除。筛选设置了过期时间的键值对,随机删除。使用算法筛选设置了过期时间的键值对LRU:使用时间最早的数据使用算法选择设置了过期时间的键值对。LFU:使用次数最少,使用时间最早的数据在所有键值对中,随机选择并删除数据。用lru在所有数据中筛选。使用lfu算法在所有数据中筛选。二、策略解释。
2024-04-29 14:23:42
557
原创 Redis数据类型Stream及应用场景
基于以上问题,Redis 5.0 便推出了 Stream 类型也是此版本最重要的功能,用于完美地实现消息队列,它支持消息的持久化、支持自动生成全局唯一 ID、支持 ack 确认消息的模式、支持消费组模式等,让消息队列更加的稳定和可靠。Redis Stream 是 Redis 5.0 版本新增加的数据类型,Redis 专门为消息队列设计的数据类型。
2024-04-29 11:34:52
661
原创 Redis数据类型GEO及应用场景
一组经纬度落在某个区间后,就用区间的编码值来表示,并把编码值作为 Sorted Set 元素的权重分数。这样一来,我们就可以把经纬度保存到 Sorted Set 中,利用 Sorted Set 提供的“按权重进行有序范围查找”的特性,实现 LBS 服务中频繁使用的“搜索附近”的需求。LBS(基于位置信息服务Location-Based Service,LBS) 应用访问的数据是和人或物关联的一组经纬度信息,而且要能查询相邻的经纬度范围,GEO 就非常适合应用在 LBS 服务的场景中。
2024-04-29 11:26:57
457
原创 Redis数据类型HyperLogLog及应用场景
但要注意,HyperLogLog 是统计规则是基于概率完成的,不是非常准确,标准误算率是 0.81%。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数,和元素越多就越耗费内存的 Set 和 Hash 类型相比,HyperLogLog 就非常节省空间。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的内存空间总是固定的、并且是很小的。所以,简单来说 HyperLogLog 提供不精确的去重计数。
2024-04-29 11:20:29
587
原创 Redis数据类型BitMap及应用场景
BitMap通过最小的单位bit来进行0|1的设置,表示某个元素的值或者状态,时间复杂度为O(1)。String 类型是会保存为二进制的字节数组,所以,Redis 就把字节数组的每个 bit 位利用起来,用来表示一个元素的二值状态,你可以把 Bitmap 看作是一个 bit 数组。Bitmap 类型非常适合二值状态统计的场景,这里的二值状态就是指集合元素的取值就只有 0 和 1 两种,在记录海量数据时,Bitmap 能够有效地节省内存空间。3.连续签到用户总数。
2024-04-29 11:07:20
410
原创 Redis基本数据类型Zset及应用场景
Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 Zset 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。
2024-04-29 10:55:26
562
原创 Redis基本数据类型Set及应用场景
Set 类型比较适合用来数据去重和保障数据的唯一性,还可以用来统计多个集合的交集、错集和并集等,当我们存储的数据是无序并且需要去重的情况下,比较适合使用集合类型进行存储。Set 类型除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。存储某活动中中奖的用户名 ,Set 类型因为有去重功能,可以保证同一个用户不会中奖两次。Set 类型是一个无序并唯一的键值集合,它的存储顺序不会按照插入的先后顺序进行存储。Set 类型支持交集运算,所以可以用来计算共同关注的好友、公众号等。
2024-04-29 10:45:18
398
原创 Redis基本数据类型Hash及使用场景
Hash 是一个键值对(key - value)集合,其中 value 的形式如: value=[{field1,value1},...{fieldN,valueN}]。Hash 特别适合用于存储对象。Hash类型的结构和对象类型的结构类型,一般用String+Json存储对象信息,对于频繁变动的对象用Hash类型保存对象信息。以用户 id 为 key,商品 id 为 field,商品数量为 value,恰好构成了购物车的3个要素。1.添加商品:HSET cart:{用户id} {商品id} 1。
2024-04-29 10:39:08
544
原创 redis基本数据类型List及应用场景
List 类型的底层数据结构是由双向链表或压缩列表实现的,在 Redis 3.2 版本之后,List 数据类型底层数据结构就只由 quicklist 实现了,替代了双向链表和压缩列表。List 列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向 List 列表添加元素。列表的最大长度为 2^32 - 1,也即每个列表支持超过 40 亿个元素。
2024-04-29 10:28:44
303
原创 redis基本数据结构String及应用场景
如果字符串对象保存的是一个字符串,并且这个字符申的长度小于等于 32 字节(redis 2.+版本),那么字符串对象将使用一个简单动态字符串(SDS)来保存这个字符串,并将对象的编码设置为embstr, embstr编码是专门用于保存短字符串的一种优化编码方式。如果字符串对象保存的是一个字符串,并且这个字符串的长度大于 32 字节(redis 2.+版本),那么字符串对象将使用一个简单动态字符串(SDS)来保存这个字符串,并将对象的编码设置为raw。4.共享session信息。二、Redis应用场景。
2024-04-29 10:21:04
315
原创 算法基础一
因为不同常数时间的操作,虽然都是固定时间,但还是有快慢之分的。比如,位运算的常数时间原小于算术运算的常数时间,这两个运算的常数时间又远小于数组寻址的时间。如果两个时间复杂度一样的算法,你还要去在时间上拼优劣,就进入到拼常数时间的阶段,简称拼常数项。这就是时间复杂度的意义,它是衡量算法流程的复杂程度的一种指标,该指标只与数据量有关,与过程之外的优化无关。,每一步常数操作的数量,依然如等差数列一般,所以,总的常数操作数量 =,每一步常数操作的数量,如等差数列一般,所以,总的常数操作数量 =
2024-04-28 17:24:16
664
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅