Rerank详解
疑惑一
我对rag的流程理解是。后端首先建立embedding后的向量数据库,用户提问使用相同的embedding模型进行向量化,使用阈值控制相似度找出前topk个数据。然后rerank,将rerank的结果打包成prompt返回给大模型进行解答。我对于rerank的过程不是很清晰,我不清楚rerank比较的是什么,这个应该是比较与问题正确答案的相似度,但我没有正确答案,这个rerank是怎么做的?
正确理解:
🔍 rerank 的作用和方式
rerank 的目标不是“找出最接近正确答案的内容”,而是“从 Top-K 候选中挑选出对用户问题最有帮助的内容”。
🧠 所以 rerank 比较的其实是:
-
问题(query) 和 候选文档片段(passages)之间的语义相关性。
不是候选与“正确答案”的相似度,而是候选与“问题本身”的相关程度。
🔧 rerank 的常见实现方式
1. Cross-Encoder Rerank(主流方法)
-
使用一个双塔或交叉编码器(如 BERT、E5、Cohere rerank 模型)输入 query 和每个文档,输出一个相关性得分。
-
典型模型如:
-
cross-encoder/ms-marco-MiniLM-L-6-v2
(Hugging Face) -
Cohere 的
rerank-english-v2.0
-
Input: [CLS] 问题:如何配置nginx反向代理 [SEP] 文档片段:你可以在nginx.conf中使用location来配置反向代理 [SEP] Output: 相关性得分 = 0.87
-
所有候选都打分,按分数排序,取前 N 个用于构建最终 prompt。
2. Embedding 排序 vs. rerank 区别
-
Embedding 排序(初筛):快,但只比较向量相似度(粗略)。
-
Rerank(精筛):慢一些,但更精确,通常用于 Top-K 的再排序。
存在的问题
但我认为候选与“问题本身”的相关程度有问题。因为“相关性高 ≠ 有用”,“不相关 ≠ 没帮助”。
⚠️ 场景 1:问题本身模糊或不清晰
例子:
问题:这个问题该怎么处理?
-
这时候初步匹配到的文本很可能因为“语义接近”而得高分,但它们未必真正有助于解答。
⚠️ 场景 2:高频词、短语导致模型误判
-
某些候选文档中包含大量关键词或 query 重复词,但实际上没有提供新的信息。
-
rerank 模型可能只看到了“形式上的相似性”。
⚠️ 场景 3:真正答案需要“推理”而不是“重述”
-
rerank 模型通常是基于表层的相似度。
-
但大模型回答往往依赖多个文档之间的组合推理。
🧩 举个例子具体说明
问题:Python 中如何实现限流?
两个候选片段:
-
使用 time.sleep 可以控制函数执行间隔。
-
限流通常通过令牌桶算法或漏桶算法实现,可以使用库如 ratelimit 或 redis 结合实现。
-
rerank 模型可能给第一个更高分(因为有 sleep,比较常见)。
-
实际第二个才更有价值。
🛠️ 那怎么办?有哪些改进方向?
✅ 方法一:加入多维 rerank 信号
-
不只考虑语义相似度,还加入:
-
文档质量(例如 chunk 来自 FAQ?文档?)
-
覆盖度(是否提到了多个关键概念?)
-
信息新颖度(是否补充了前面 chunk 没讲的内容?)
-
✅ 方法二:多文档交叉增强(multi-passage re-ranking)
-
考虑多个片段之间的互补性,而不是单片段评分。
-
例如:判断一个文档片段是否在现有 prompt 中已经覆盖(避免重复)。
✅ 方法三:end-to-end rerank with feedback
-
引入用户反馈(点击、是否最终被 LLM 使用)进行微调。
-
甚至使用生成模型判断“这个文档是否能直接支持回答问题”。
✅ 总结
你的质疑是成立的:
-
rerank 模型基于“query-passsage 相似度”可能 无法捕捉语义推理、信息增益、结构性内容。
-
它是个“实用但粗糙”的策略,适用于大多数场景,但在复杂需求下会暴露问题。
疑惑二
我认为rerank有点多余,我直接把embedding输出全都塞进去,给大模型,和rerank筛选一部分再给,为什么筛选之后会好,明明embedding的结果会多
你质疑 rerank 的必要性,是非常合理的。我们可以从 上下文质量、LLM 输入限制、信息密度 三个角度来严谨分析为什么 “不加筛选反而更差”。
🔍 为什么不能把所有 embedding 的结果直接塞进去?
1. LLM 的输入长度是有限的(token 限制)
-
比如 GPT-4-turbo 最多 128k tokens,但很多实际部署版本、API 模型、开源模型常见是 4k、8k、16k。
-
你 embedding 检索回来 20 个 chunks,每个 300 tokens,就 6000 tokens,可能就爆了。
-
所以你必须要“挑一部分”进去。
👉 rerank 就是为了挑“最有用的那部分”,而不是“所有看起来相关的”。
2. 噪音太多会稀释关键信息,影响 LLM 回答质量
-
大模型读到太多“相关但没用”的内容,会:
-
分散注意力(attention 分布变稀疏)
-
被模糊、冗余信息干扰
-
消耗 token budget,无法关注关键信息
-
📌 举个例子:
问题:
如何在 nginx 中配置 HTTPS?
Top-10 embedding 返回:
-
nginx 介绍
-
nginx 配置语法说明
-
HTTPS 概念解释
-
openssl 生成证书
-
证书格式说明
-
nginx 中的 gzip 设置
-
nginx 日志配置
-
ssl_protocols 配置方式
-
gzip 和 https 的兼容性
-
nginx 性能优化建议
-
这些都是相关内容(embedding 确实找到的),但真正回答 HTTPS 配置,可能只需要 3-4 段。
-
塞进去太多内容,模型可能输出不聚焦的回答,比如它跑去讲日志、gzip、证书格式细节。
3. embedding 排序是“粗排”,可能顺序有误
-
向量匹配靠的是距离(如 cosine similarity),它是语义匹配,但没考虑“哪一段更具体、更实用”。
-
rerank 用更强大的语义匹配模型(比如 BERT 或 cross-encoder)可以让顺序更合理。
-
所以 rerank 相当于一个“质量打分 + 精细排序”的阶段。
✅ 总结一句话:
把 embedding 检索结果全塞给大模型看似信息多,但可能 token 不够、信息噪音大、干扰模型判断,
所以 rerank 是为了选出更高质量、更贴近问题核心的上下文,不是为了“少而精”,而是“对而精”。
📌 实战建议
-
🔢 embedding 取 top-20,但实际送入 LLM 的 context 控制在 4–8 个 chunk。
-
✅ 用 rerank 选择最相关/最有信息量的几段。
-
🧠 加上 token 限制策略(不要超过 LLM 上下文 80%)。
疑惑一改进策略详解
✅ 方法一:加入多维 rerank 信号
🎯 目的:
只用语义相似度太粗糙,要综合考虑“上下文质量”“信息密度”等因素。
🔧 技术实现方式:
每个候选文档片段(chunk)不仅打一个相关性分数,而是引入多个打分维度:
维度 | 描述 |
---|---|
语义相似度 | Query 与 chunk 的语义匹配程度(现有大多数 reranker 做的) |
chunk 来源质量 | 例如来自官方文档 > StackOverflow > 爬虫文本 |
覆盖度/关键词召回 | 是否覆盖 query 中所有关键词,而非单一概念 |
信息密度 | 文本是否包含“定义 + 示例 + 原因”,而不是一句话带过 |
重复性 | 与已经选中的 chunk 重复程度,过高就降权(避免构造重复上下文) |
✅ 方法二:多文档交叉增强(Multi-passage Rerank)
🎯 目的:
不仅选出“最相关的文档”,而是组合出“回答这个问题所需的知识”。
🚀 核心思路:
-
传统 rerank 是每个 chunk 单独打分。
-
多文档 rerank 会看多个 chunk 是否互补(有没有新信息)、是否冲突、是否重复。
📦 示例方法:
-
候选组合生成:
-
对 Top-10 片段,生成所有可能的 2~3 片段组合(组合数目需要限制,防止指数爆炸)。
-
-
对组合打分:
-
使用 LLM 判断:“这组文档是否能组合出一个完整、有用的回答?”
-
或用一个 fine-tuned 模型进行组合评分。
-
-
选择最优组合:
-
选出得分最高的组合作为最终上下文,而不是单片段选 Top-K。
-
📍 优点:
-
可以增强复杂问题的覆盖度。
-
减少重复内容,提高 token 利用率。
✅ 方法三:End-to-End Rerank with Feedback / LLM-based Relevance Scorer
🎯 目的:
不是“像机器”打分,而是用大模型模拟人类判断什么内容是“真正有用”的。
🧠 实现思路一:用 LLM 判断文档对回答是否有帮助
示例 Prompt:
问题:Python 中如何实现限流?
候选文本:你可以在函数中加入 time.sleep() 来控制请求速率。
这个文本是否有助于回答问题?请回答“是”或“否”并解释原因。
LLM 输出可能是:
否。这种方式仅适用于最简单的场景,无法实现动态限流或突发流量控制。
你可以把这个过程做成一个过滤器或 reranker。
🧠 实现思路二:基于用户反馈训练 reranker(更进阶)
-
如果你有用户点击、反馈、最终回答是否采纳等日志数据。
-
可以训练一个“文档→query相关性”的监督模型(比如使用 BERT)。
这种方法需要一定量数据,但效果更贴近实际使用价值。
我自己的思路:
用一个 LLM 来当“智能 reranker”,不是用简单的 embedding 相似度或传统模型打分,而是让 LLM基于全局信息进行判断和选择。
这类做法实际上已经开始出现在前沿的 RAG 系统中,属于“LLM-assisted Retrieval Selection”范畴。
✅ 你的方法可以总结为:
Prompt 结构:
已知信息(Embedding 检索 Top-K):
1. 文本片段 A
2. 文本片段 B
...
K. 文本片段 K问题:Q请根据这些已知信息,判断哪些片段最有助于回答这个问题。返回前 N 个对问题最有帮助的片段。
甚至你可以加上:
“请返回它们的编号及理由。”
“你可以合并内容重复或冗余的段落。”
✅ 优势
方面 | 优点 |
---|---|
语义理解 | LLM 能理解上下文之间的潜在联系,捕捉推理逻辑,而不仅仅是语义重合。 |
信息去重 | 可以判断哪些 chunk 重复或冗余,自动合并或舍弃。 |
动态性强 | 对不同问题的判断策略灵活,不像传统 reranker 是定死的函数。 |
高质量 prompt 构建 | 它选出的结果可以作为更可信、更丰富的上下文,增强最终回答质量。 |
❗注意的关键点(你实现时要考虑)
1. token 限制问题
-
如果 Top-K 是 20 个 chunk,每个 200 tokens,加上问题和指令,总 token 就可能超过 4000。
-
所以:
-
限制 chunk 长度或先进行 coarse filter。
-
或者分批(chunk 分组),让 LLM 先筛一轮、再 merge 结果。
-
2. LLM 成本
-
相比 embedding 相似度打分,调用 LLM 成本和延迟高。
-
可以只对 Top-20 做 rerank(而不是全部文档)。
3. 输出结构化
-
让 LLM 输出 JSON 格式或编号列表,便于自动处理:
{ "top_passages": [ {"index": 2, "reason": "提供了限流算法的实现"}, {"index": 5, "reason": "包含代码示例"} ] }
✅ 提示词设计示例(Prompt Template)
你是一个知识助手。我有如下问题: 【问题】:{{question}} 我从知识库中检索到如下片段(它们可能相关,但不全都有帮助): 【候选信息】 1. {{chunk1}} 2. {{chunk2}} ... N. {{chunkN}} 请你帮我判断,哪些片段最有助于回答这个问题?请返回最多前 {{topN}} 个片段编号,并简要说明理由。
📌 进阶做法:让 LLM 直接构造 prompt
再进一步,你甚至可以让这个 LLM直接输出你该如何组织这些 chunk 构造回答 prompt,而不是你再拼装:
请根据这些片段生成一个上下文摘要,以帮助另一个模型回答问题。
🧠 总结
你提的这个 rerank 思路,本质是:
用 LLM 来代替传统规则或模型做信息筛选,体现全局语义理解 + 判断能力。
这比传统 rerank 更智能,但成本也更高。适合用在对回答准确性有高要求的场景,比如问答系统、技术支持、金融法律分析等。
相关文章:
Rerank详解
疑惑一 我对rag的流程理解是。后端首先建立embedding后的向量数据库,用户提问使用相同的embedding模型进行向量化,使用阈值控制相似度找出前topk个数据。然后rerank,将rerank的结果打包成prompt返回给大模型进行解答。我对于rerank的过程不是…...
深度探索DeepSeek:从架构设计到性能优化的实战指南
深度解码DeepSeek:从架构设计到工业级部署的全链路优化实践 引言:大模型时代的工程挑战 在人工智能技术进入工业化落地阶段的今天,大模型训练与推理的工程化能力已成为衡量企业技术实力的重要标尺。DeepSeek作为当前业界领先的超大规模语言…...
d202551
目录 一、175. 组合两个表 - 力扣(LeetCode) 二、511. 游戏玩法分析 I - 力扣(LeetCode) 三、1204. 最后一个能进入巴士的人 - 力扣(LeetCode) 一、175. 组合两个表 - 力扣(LeetCode…...
(C题|社交媒体平台用户分析问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…...
计网_PPP协议
2024.10.15:beokayy计算机网络学习笔记 PPP协议 PPP协议的特点PPP协议应满足的需求(了解)PPP协议的组成(PPP协议有三个组成部分) PPP协议的帧格式PPP协议的工作状态 ISP指的是运营商,比如中国联通、中国电信…...
Mem0.ai研究团队开发的全新记忆架构系统“Mem0”正式发布
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
二叉树删除结点详细代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h>typedef int data_t; typedef struct _node {data_t data;struct _node* left;struct _node* right; }node_t;int bst_create(node_t**, data_t);//函数声明BST创建 int bst…...
PyTorch线性代数操作详解:点积、矩阵乘法、范数与轴求和
本文通过代码示例详细讲解PyTorch中常用的线性代数操作,包括点积、矩阵乘法、范数计算以及按轴求和等操作,帮助读者掌握张量运算的核心方法。 1. 点积运算 点积(Dot Product)是两个向量对应元素相乘后求和的结果。 实现代码&…...
Java SE(6)——类和对象
1.初始面向对象 1.1 什么是面向对象 Java是一门纯面向对象的编程语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交换来完成一件事情 1.2 面向过程…...
Kubernetes(k8s)的API Server 组件原理与结合生产实战教程
一、API Server 架构深度解析 1. 核心架构设计 二、生产环境安全加固实战 1. 认证(Authentication) 2. 授权(Authorization) 3. 准入控制(Admission Control) 三、性能优化与调参 1. 关键启动参数 四…...
Java面试高频问题(31-33)
三十一、服务网格:东西向流量治理与故障注入 服务网格架构分层 mermaid graph BT subgraph Control Plane APilot --> BEnvoy Sidecar CMixer --> B DCitadel --> B end subgraph Data Plane B --> E服务A B --> F服务B B --> G服务C end 核心能…...
VSCode开发调试Python入门实践(Windows10)
我的Windows10上的python环境是免安装直接解压的Python3.8.x老版本,可参见《Windows下Python3.8环境快速安装部署。 1. 安装VSCode 在Windows 10系统上安装Visual Studio Code(VS Code)是一个简单的过程,以下是详细的安装方法与…...
C++——入门基础(2)
文章目录 一、前言二、C入门2.1 缺省参数2.2 函数重载2.2.1 参数类型不同2.2.1.1 整体参数类型不同2.2.1.2 参数类型顺序不同 2.2.2 参数个数不同2.2.3 避坑注意2.2.3.1无参与有参2.2.3.2 返回值不同 2.3 引用2.3.1 引用的概念2.3.2引用的结构2.3.3 引用的特点2.3.4引用的作用2…...
【MySQL】复合查询与内外连接
目录 一、复合查询 1、基本查询回顾: 2、多表查询: 3、自连接: 4、子查询: 单列子查询 多行子查询: 多列子查询: 在from语句中使用子查询: 5、合并查询: union࿱…...
第3篇:请求参数处理与数据校验
在 Web 开发中,请求参数处理与数据校验是保障系统稳定性的第一道防线。本文将深入探讨 Egg.js 框架中参数处理的完整解决方案,涵盖常规参数获取、高效校验方案、文件流处理等核心功能,并分享企业级项目中的最佳实践。 一、多场景参数获取策略…...
Android JIT编译:adb shell cmd package compile选项
Android JIT编译:adb shell cmd package compile选项 例如: adb shell cmd package compile -m speed -f --full 包名 配置参数指令说明: compile [-r COMPILATION_REASON] [-m COMPILER_FILTER] [-p PRIORITY] [-f] [--primary-dex] …...
排序算法——冒泡排序
一、介绍 「冒泡排序bubblesort」通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。 冒泡过程可以利用元素交换操作来模拟:从数组最左端开始向右遍历,依次比较相邻元素大小,如果“左…...
文献阅读篇#5:5月一区好文阅读,BFA-YOLO,用于建筑信息建模!(上)
期刊简介:《Advanced Engineering Informatics》创刊于2002年,由Elsevier Ltd出版商出版,出版周期Quarterly。该刊已被SCIE数据库收录,在中科院最新升级版分区表中,该刊分区信息为大类学科工程技术1区,2023…...
工行手机银行安全吗?在应用商店下载工商银行安全吗?
现在很多的人都会用手机银行,其中工行的使用几率也是比较高的,但大家在使用的过程中就会比较关心使用工行手机银行是否安全。如果直接在应用商店下载,是否有安全保障? 工行的手机银行会拥有较高的保障,从技术到服务都可…...
python如何word转pdf
在Python中,将Word文档(.docx或.doc)转换为PDF可以通过多种库实现。以下是几种常见的方法及详细步骤: 方法1:使用 python-docx comtypes(仅Windows,需安装Word) 适用于Windows系统…...
在阿里云 Ubuntu 24.04 上部署 RabbitMQ:一篇实战指南
前言 RabbitMQ 是业界常用的开源消息中间件,支持 AMQP 协议,易于部署、高可用、插件丰富。本文以阿里云 ECS 上运行的 Ubuntu 24.04 LTS 为例,手把手带你完成 RabbitMQ 从仓库配置到运行的全流程,并分享在国内环境下常见的坑与对应解决方案。 环境概况 操作系统:Ubuntu …...
Linux Shell 重定向与管道符号(>, >>, |)的实现机制
文章目录 Linux Shell 重定向与管道符号(>, >>, |)的实现机制一、重定向基础:dup2() 的核心作用二、输出重定向的实现原理>(覆盖重定向)>>(追加重定向) 三、| 管道符的实现原…...
GitHub 趋势日报 (2025年04月30日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image⭐ 1686⭐ 54925Python2Qwe…...
计算机操作系统知识集合
主要来自小林coding 硬件结构 cpu位宽 如果用 32 位 CPU 去加和两个 64 位大小的数字,就需要把这 2 个 64 位的数字分成 2 个低位 32 位数字和 2 个高位 32 位数字来计算,先加个两个低位的 32 位数字,算出进位,然后加和两个高位…...
PostgreSQL数据类型
数据类型 数值类型 整数类型 SMALLINT 小范围整数,取值范围:-32768 ~ 32767 INT(INTEGER) 普通大小整数,取值范围:-2147483648 ~ 2147483647 浮点数类型 REAL 6位十进制数字精度 NUMERIC(m, n) 任意精度…...
在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?
KVM(Kernel-based Virtual Machine)和Docker是Linux环境中两种不同的虚拟化技术,它们在实现原理、资源隔离程度、应用场景等方面存在显著区别: 实现原理与技术层级 KVM:KVM是一种基于硬件辅助虚拟化的全虚拟化技术&a…...
【docker学习笔记】如何删除镜像启动默认命令
一些镜像会在它打镜像时,加入一些默认的启动命令,可以通过docker inspect \<image id\>来查看Entrypoint。如下图,docker run启动时,会默认执行 "python3 -m vllm.entrypoints.openai.api_server" 如果不想执行&…...
c语言 39.0625转为16进制
c语言 39.0625转为16进制 寄存器的4~15对应整数部分 39为整数部分 39 (10进制) 0x27(16进制) 寄存器的0~3对应小数部分 0.0625为小数部分 0.0626 1/16 则0~3位十六进制值应为 0x1 39.06250…...
【阿里云大模型高级工程师ACP习题集】2.8 部署模型
习题集: 以下关于直接调用模型(无需部署)的说法,错误的是?【单选题】 A. 无需部署模型,只需简单调用API B. 按token量计费,无需担心模型部署的资源消耗 C. 可随意调用,没有任何限制 D. 适合业务初期或中小规模场景 使用vLLM部署模型时,若出现端口被占用的情况,以下做…...
【进阶】--函数栈帧的创建和销毁详解
目录 一.函数栈帧的概念 二.理解函数栈帧能让我们解决什么问题 三.相关寄存器和汇编指令知识点补充 四.函数栈帧的创建和销毁 4.1.调用堆栈 4.2.函数栈帧的创建 4.3 函数栈帧的销毁 一.函数栈帧的概念 --在C语言中,函数栈帧是指在函数调用过程中,…...
猫,为什么是猫?
英语单词 cat,意为猫: cat n.猫 根据首字母象形原则,通常我们喜欢将首字母C,解释为猫爪,C的形象,通常可解释为字母K的右侧的中间凹陷部分,K | <,也就是 C 和 < 相通&#…...
数字智慧方案6169丨智慧医院后勤管理解决方案(58页PPT)(文末有下载方式)
资料解读:智慧医院后勤管理解决方案 详细资料请看本解读文章的最后内容。 在当今万物互联的时代,传统医院后勤管理模式逐渐暴露出诸多弊端,已难以适应医院集团化发展的需求。这份智慧医院后勤管理解决方案资料,深入剖析了传统管理…...
经济学和奥地利学派的起源
(一)经济学和奥地利学派的起源: 早期思想: 亚当斯密被认为是现代经济学的鼻祖,但早期的亚里士多德、柏拉图以及中国的《管子》等著作也包含经济学思想,但更偏向财政学。 亚当斯密之前的学者: 坎…...
Linux安全清理删除目录bash脚本
直接写清除目录命令可能会因为一时手抖导致删除重要目录 rm -rf是个危险的命令,我写了bash脚本,放在环境变量目录下可以当系统命令来用 这里是单线程的,如果需要更高的性能,需要加入多线程的支持。 1.实现功能 清理目录的子内容…...
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 17)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 二…...
Lucene并不是只有倒排索引一种数据结构,支持多种数据结构
Lucene 的核心机制确实以**倒排索引(Inverted Index)**为核心,但它并不是“全部”都依赖倒排索引。Lucene 的索引结构中还包含其他辅助数据结构,用于支持不同的查询场景。以下是详细的解释: 1. 核心机制:倒…...
使用Docker一键安装SigLens:简单快捷的日志分析解决方案
在当今复杂的IT环境中,高效的日志管理和分析变得越来越重要。SigLens作为一款强大的开源日志分析工具,为开发者和运维人员提供了直观、高效的日志处理体验。本文将介绍如何使用Docker快速安装SigLens,让您在几分钟内就能开始进行日志分析。 为什么选择Docker安装SigLens? Do…...
【Linux】线程池和线程补充内容
个人主页~ 线程池 一、线程池简介单例模式线程池简介 二、单例模式线程池的实现1、ThreadPool.hpp2、Task.hpp3、main.cpp 三、其他常见锁读写锁 一、线程池简介 池化技术我们并不陌生,我们在前面的文章中实现过进程池,这里线程池的作用也是先申请资源交…...
vue3内置组件Suspense的使用
Suspense 实验性功能<Suspense> 是一项实验性功能。它不一定会最终成为稳定功能,并且在稳定之前相关 API 也可能会发生变化 <Suspense> 是一个内置组件,用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异…...
怪物猎人:世界-冰原10000+mod整合包5月最新更新!
700A大全套精美服装 800M大全套精美服装 3月31日更新 新增 新武器 新特效MOD 当前共计5800MOD整合包 好看的发型mod 实用的功能mod 炫酷的武器mod 新服装新特效新武器实用模组美化,等。 1月14日更新 新增皮肤MOD 500 当前共计2000MOD 1月16日更新 新增超…...
题解:洛谷 CF2091E Interesting Ratio
思路推导 我们先对 32 32 32 和 96 96 96 进行二进制拆分。 相同部分(用 α \alpha α 表示): 5 5 5 个 2 2 2。 不同部分(用 β \beta β 表示): 1 1 1 和 3 3 3。 gcd ( 32 , 96 ) \gcd(32,9…...
PETR和位置编码
PETR和位置编码 petr检测网络中有2种类型的位置编码。 正弦编码和petr论文提出的3D Position Embedding。transformer模块输入除了qkv,还有query_pos和key_pos。这里重点记录下query_pos和key_pos的生成 query pos的生成 先定义reference_points, shape为(n_query…...
《社交类应用开发:React Native与Flutter的抉择》
社交类应用以令人目不暇接的速度更新迭代。新功能不断涌现,从更智能的算法推荐到多样化的互动形式,从增强的隐私保护到跨平台的无缝体验,每一次更新都旨在满足用户日益增长且多变的需求。面对如此高频的更新需求,选择合适的跨端框…...
多模态大语言模型arxiv论文略读(五十三)
Red Teaming GPT-4V: Are GPT-4V Safe Against Uni/Multi-Modal Jailbreak Attacks? ➡️ 论文标题:Red Teaming GPT-4V: Are GPT-4V Safe Against Uni/Multi-Modal Jailbreak Attacks? ➡️ 论文作者:Shuo Chen, Zhen Han, Bailan He, Zifeng Ding, …...
POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.
前言: Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式文件,提供丰富 API 来创建、读取和修改 Office 文档。 1.官网:Apache POI™ - the Java API for Microsoft Documents 2.优点:功能强大,可处…...
使用Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序简介
CrossVcl 快速入门 大家都知道delphi可以开发linux程序,更多的是知道FMXLinux开发基于FMX的程序,这里给大家介绍使用 Embarcadero Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序。 概述 CrossVcl 是一个工具链,允许使用 Emb…...
Android Kotlin 项目完整集成 Bugly 异常监控指南
Android Kotlin 项目集成 Bugly 异常监控完整指南 一、Bugly 简介 Bugly 是腾讯提供的专业移动应用异常监控平台,支持: 崩溃报告(Java/Native)错误分析性能监控热更新功能(需额外配置) 二、集成步骤 1…...
C++使用accumulate函数对数组进行快速求和
C使用accumulate函数对数组进行快速求和 一、普通数组 1.1方法: 1.先求出数组的长度: int size sizeof(arr) / sizeof(arr[0]); 2.使用指针作为迭代器调用accumulate函数:int sum std::accumulate(arr, arr size, 0); 3.注意带上头文…...
【音视频】RTMP流媒体服务器搭建、推流拉流
服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS) 推流端:ffmpeg OBS 拉流端:ffplay VLC srs播放器 1 安装和测试srs流媒体服务器 1.1 安装srs流媒体服务器 srs官⽹:https://github.com/ossrs/…...
React Router
为什么需要路由? 单页应用(SPA):在单页面中实现多视图切换,避免整页刷新。 核心功能: 根据 URL 路径渲染对应组件。 实现页面间导航(前进、后退、跳转)。 支持动态路由、嵌套路由…...