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 模型推理embeddingoutputs_onnx[0][:,0]# 提取 CLS token全局语义# L2 归一化使所有向量落到单位球面norm_arrnp.linalg.norm(embedding,axis1,keepdimsTrue)embeddings_normalizedembedding/norm_arr归一化的价值归一化后余弦相似度 点积加速后续相似度计算所有向量长度一致避免长向量主导排序的问题为什么用 CLS tokenBERT 类模型的[:, 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_documentsawaitself.rerank.arerank_documents(...)为什么是 300 而不是 512Rerank 输入 query doc512 是总长度给 doc 留 200 token 空间防止截断3.5 ONNX Runtime 推理加速问题PyTorch 推理速度慢部署体积大。方案使用 ONNX Runtime 进行模型推理。sess_optionsSessionOptions()sess_options.graph_optimization_levelGraphOptimizationLevel.ORT_ENABLE_ALL# 全图优化# 自动线程调度 GPU/CPU 自适应providers[CUDAExecutionProvider,CPUExecutionProvider]优化项算子融合将多个小算子合并为一个大算子常量折叠编译期计算常量表达式自动线程调度根据 CPU 核心数分配线程设备自适应自动选择 GPU 或 CPU3.6 Rerank Sigmoid 分数校准问题交叉编码器输出 logits无界值需要映射为 0~1 之间的可解释分数。defsigmoid(x):scores1/(1np.exp(-x))# 标准 sigmoid → (0, 1)scoresnp.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 校准分数无界不可解释

相关新闻

最新新闻

pythonlist案例(解包)

pythonlist案例(解包)

解包去重合并去重

2026/7/21 23:16:42
企业找SEO优化公司合作要避开哪些坑?丽鸿科技专业行业洞察与实操避坑指南

企业找SEO优化公司合作要避开哪些坑?丽鸿科技专业行业洞察与实操避坑指南

随着线上获客成为企业营销的核心抓手,SEO优化凭借长期流量沉淀、获客成本低的优势,成为众多企业布局线上营销的核心选择。当前国内SEO服务市场参与者众多,服务质量良莠不齐,企业在选型合作过程中,若缺乏对常见陷阱的认…

2026/7/21 23:16:42
Django网络安全科普学习系统:毕设项目实战与源码解析

Django网络安全科普学习系统:毕设项目实战与源码解析

如果你是一名计算机相关专业的毕业生,正在为毕设选题焦头烂额,或者你是一名对网络安全感兴趣的开发者,想找一个能快速上手、功能完整的项目来练手,那么这篇文章就是为你准备的。 我们经常面临这样的困境:想做一个有技…

2026/7/21 23:16:42
猿人学第13题逆向实战:破解JS控制流平坦化与反调试

猿人学第13题逆向实战:破解JS控制流平坦化与反调试

1. 项目概述:猿人学第13题的核心挑战最近在猿人学逆向反混淆练习平台上刷题,做到第13题时,发现它和前面几道题目的风格又不太一样了。这道题的核心,不再是简单的参数加密或者请求头校验,而是将加密逻辑巧妙地隐藏在了J…

2026/7/21 23:16:42
Kotlin Multiplatform在跨平台SDK开发中的实践

Kotlin Multiplatform在跨平台SDK开发中的实践

1. 跨平台SDK开发的技术选型背景 在移动互联网快速迭代的今天,开发者经常面临一个现实困境:如何高效地为不同操作系统平台提供功能一致的SDK?传统模式下,我们需要为Android和HarmonyOS分别维护两套代码库,这不仅造成开…

2026/7/21 23:16:42
如何完全掌控Alienware设备:开源硬件控制终极指南

如何完全掌控Alienware设备:开源硬件控制终极指南

如何完全掌控Alienware设备:开源硬件控制终极指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否对Alienware Command Center的臃肿…

2026/7/21 23:11:41

月新闻