当前位置: 首页 > news >正文

QAnything 阅读优化策略03——查询转换

查询转换(Query Transformation)

查询转换是将用户查询从文本形式转化为检索引擎能处理的格式(如 embedding 向量),同时做必要的清洗和保护。这是让"人类语言"适配"机器引擎"的关键桥梁。


一、是什么

查询转换是将用户查询从文本形式转化为检索引擎能处理的格式(如 embedding 向量),同时做必要的清洗和保护。

核心输入:改写后的检索查询
核心输出:归一化的 embedding 向量 + 保护后的查询文本


二、为什么重要

检索引擎不认识"人类语言",它只认识向量。

转换质量直接影响检索质量:

  • 图片标记![figure]会干扰 embedding 模型
  • 过长的 query 会导致 Rerank 模型截断
  • 不同组件需要不同的 Token 计数精度

与传统方案的对比

优化点传统方案传统方案的问题QAnything 方案优势
向量化平均池化(mean pooling)所有 token 平均,重要信息被稀释CLS token 提取[:,0]全局语义更聚焦
归一化不归一化余弦相似度计算需要除法,长向量主导排序L2 归一化余弦相似度 = 点积,加速计算
图片处理原样发送![figure](xxx.jpg)干扰语义发送前过滤图片标记检索向量更纯净
Token 计数统一用一个 tokenizertiktoken 计 100 token,实际可能 120三级 tokenizer + 安全余量各组件精度匹配
推理框架PyTorch 直接推理推理慢,部署体积大,无算子融合ONNX Runtime + 全图优化推理速度提升 2-3x
分数输出原始 logits(无界)阈值难设,不可解释Sigmoid + 线性拉伸0~1 可解释,区分度高

三、怎么做

3.1 Embedding 向量化 + L2 归一化

问题:文本需要转为向量才能在 Milvus 中检索。

方案:提取 CLS token 作为全局语义表示,然后 L2 归一化。

# Embedding ONNX 模型推理embedding=outputs_onnx[0][:,0]# 提取 CLS token(全局语义)# L2 归一化:使所有向量落到单位球面norm_arr=np.linalg.norm(embedding,axis=1,keepdims=True)embeddings_normalized=embedding/norm_arr

归一化的价值

  • 归一化后余弦相似度 = 点积,加速后续相似度计算
  • 所有向量长度一致,避免"长向量主导排序"的问题

为什么用 CLS token

  • BERT 类模型的[:, 0]token 经过自注意力聚合,代表整句话的全局语义
  • 比平均池化更能捕捉句子的核心含义

3.2 图片引用过滤

问题:查询中的![figure](xxx.jpg)会干扰 Embedding 模型的语义理解。

方案:发送前过滤掉图片和公式标记。

# Embedding 客户端:发送前过滤def_process_query(query):return'\n'.join([lineforlineinquery.split('\n')ifnotline.strip().startswith('![figure]')andnotline.strip().startswith('![equation]')])

为什么不在索引阶段过滤

  • 索引阶段的图片引用是文档内容的一部分
  • 但查询阶段用户不会主动写图片标记,这些通常是系统拼接进来的

3.3 三级 Tokenizer 精度体系

问题:不同组件对 token 计数的精度要求不同,用错 tokenizer 会导致切分不准或预算超支。

Tokenizer使用场景为什么用它
tiktoken(GPT)LLM Token 预算计算直接影响 API 成本,需要精确
embedding_tokenizer文件切分判断必须与 Embedding 模型的 max_length 对齐
rerank_tokenizerRerank 资格判断必须与 Rerank 模型的 max_length 对齐
# LLM Token 估算:额外加安全余量total_tokens*=1.1# tiktoken 精度较高,加 10%total_tokens*=1.2# 如果用 cl100k_base 兜底(中文模型偏差大),加 20%

安全余量的原因

  • tiktoken 是 GPT 专用 tokenizer,与国产 LLM(如 Qwen)有偏差
  • cl100k_base 是通用 tokenizer,中文场景偏差更大
  • 加余量是为了防止实际 token 超过预算

3.4 Rerank 查询长度保护

问题:Rerank 模型 max_length = 512,如果 query 太长就没有空间放 doc。

方案:query > 300 token 时跳过 Rerank,给 doc 留出 ~200 token 空间。

# 三个条件全部满足才执行 Rerankifrerankandlen(source_documents)>1andnum_tokens_rerank(query)<=300:source_documents=awaitself.rerank.arerank_documents(...)

为什么是 300 而不是 512

  • Rerank 输入 = query + doc,512 是总长度
  • 给 doc 留 200 token 空间,防止截断

3.5 ONNX Runtime 推理加速

问题:PyTorch 推理速度慢,部署体积大。

方案:使用 ONNX Runtime 进行模型推理。

sess_options=SessionOptions()sess_options.graph_optimization_level=GraphOptimizationLevel.ORT_ENABLE_ALL# 全图优化# 自动线程调度 + GPU/CPU 自适应providers=['CUDAExecutionProvider','CPUExecutionProvider']

优化项

  • 算子融合:将多个小算子合并为一个大算子
  • 常量折叠:编译期计算常量表达式
  • 自动线程调度:根据 CPU 核心数分配线程
  • 设备自适应:自动选择 GPU 或 CPU

3.6 Rerank Sigmoid 分数校准

问题:交叉编码器输出 logits(无界值),需要映射为 0~1 之间的可解释分数。

defsigmoid(x):scores=1/(1+np.exp(-x))# 标准 sigmoid → (0, 1)scores=np.clip(1.5*(scores-0.5)+0.5,0,1)# 线性拉伸 → 增强区分度returnscores

线性拉伸的作用

标准 sigmoid 输出: 0.48 0.50 0.52 0.55 → 区分度低,难以设定阈值 拉伸后: 0.47 0.50 0.53 0.575 → 高分更高,低分更低,区分度增强

四、解决的问题汇总

手段解决的问题
Embedding 归一化余弦相似度计算效率
图片引用过滤无效 token 干扰语义
三级 Tokenizer不同组件精度需求不同
Rerank 长度保护Rerank 模型输入截断
ONNX 加速推理速度慢
Sigmoid 校准分数无界不可解释
http://www.jsqmd.com/news/1230321/

相关文章:

  • 海口亨得利售后维修中心服务地址及维修保养指南权威公示(2026年7月最新) - 亨得利官方博客
  • LV市值热度双崩盘!成都二手包包变现时机已到,收的顶无套路高价回收 - 日常比对手册
  • 人声配旋律工具推荐:从 Beat 和 Sample 起步,把伴奏做成一首歌
  • 为什么说本体语义平台是企业AI落地的分水岭
  • 2026年防火涂料行业值得关注品牌梳理 拓展伟业核心优势盘点 - Fan_00
  • 2026年最新欧冠直播网站免费观看平台口碑推荐榜全指南 - 资讯速览
  • WAIC 2026观察:AI智能体与具身智能掀起“价值落地”浪潮
  • 【单片机毕业设计推荐】基于 STM32/51 单片机的温湿度监测与蓝牙报警系统设计,基于单片机的 DHT11 温湿度采集与手机蓝牙控制系统开发(024402)
  • 市南居家卖表攻略,合扬连锁门店 2026 年 7 月行情实时同步更新 - 好物测评局
  • 解放双手 Python实现自动发送企业邮件(带附件/批量发送)
  • 鸿蒙 ArkTS 实战:Declutter Plan 从断舍离计划到个人成长工具完整解析
  • AI微服务治理的3大隐形雷区:OpenTelemetry+LangChain+K8s协同调试实战(附故障注入测试脚本)
  • 【204】医院管理系统
  • 你的微信聊天记录,真的属于你吗?一个本地化备份工具的诞生故事
  • 小程序毕设项目:基于 SpringBoot 的自定义投票系统的设计与实现 移动端匿名实名双模式投票小程序设计 (源码+文档,讲解、调试运行,定制等)
  • 计算机毕业设计之基于springboot的校园失物认领平台1
  • 【小程序课程设计/毕业设计】基于 SpringBoot 的养老服务资源整合小程序 老年健康记录与居家帮扶服务小程序【附源码、数据库、万字文档】
  • 【单片机毕业设计推荐】基于 STM32/51 单片机的 PM2.5 环境监测与智能排灰系统设计,基于 STM32/51 单片机的粉尘浓度声光报警控制装置开发(024502)
  • Awesome-AIGC-3D开源生态:如何参与贡献与二次开发实战教程
  • 说服力经典书籍推荐:让你“赢”在说话
  • 如何3分钟掌握Qwerty Learner:键盘工作者的终极打字训练指南
  • 3个核心技术揭秘:如何让2012年老Mac运行最新macOS系统
  • 2026河源机房拆除回收行业报告:正规一体化服务商推荐 - 广东再生资源回收
  • 云浮2026实力电缆回收资源汇总:粤友二手物资回收 - 广东再生资源回收
  • 【206】图书管理系统
  • 无人机钣金加工定制公司选购指南:如何筛选合格供应商 - 全域品牌推荐
  • AI真人改写踩坑:我把生成内容过审率从17%拉到92%的实操记录
  • RAG技能成高薪硬门槛!小白程序员如何抓住AI新风口,速收藏!
  • pdf转换免费工具实测盘点:无水印在线网站与电脑本地软件推荐 - 办公小帮手
  • 2026年国内防火涂料十大品牌盘点 拓展伟业核心优势梳理及选购参考 - Fan_00