网易首页 > 网易号 > 正文 申请入驻

向量搜索翻车现场:一个错误代码为何排第47位

0
分享至

上周,某团队的客服系统收到一条查询:"ERR_BLOCKED_BY_CLIENT"。搜索返回零结果。但数据库里明明躺着包含这串字符的文档——它被嵌入模型索引,被余弦相似度计算,最终排在第47位。前5名被"浏览器错误"之类的泛泛内容占据,真正的答案从未抵达大模型。

这是纯向量检索(向量检索)的典型翻车场景。嵌入模型擅长理解语义,却把标识符、版本号、SKU、堆栈跟踪这些精确token"抹平"进周围的语义邻居里。好消息是:不用二选一。让词法搜索和语义搜索并行运行,融合两份排名,彼此补上盲区。100行Python+Postgres就能实现,零新增基础设施。


一张表,双索引

核心设计极简。单张chunks表存三样东西:文档原文、用于BM25全文检索的tsvector、以及1536维的OpenAI嵌入向量。两列各自独立建索引。

tsvector列是存储生成列(stored generated column),Postgres在content变更时自动重算,无需触发器或应用层维护。embedding列则在数据入库时由应用层填充。

两个索引分工明确:GIN索引加速词法检索,HNSW索引加速近似最近邻搜索。m=16和ef_construction=64是1536维嵌入的常用默认参数;若离线批量构建索引且追求更高查询召回率,可将ef_construction提至200。

并行检索:两条SQL,一次融合

查询阶段拆成两步。先用psycopg连接数据库,注册pgvector适配器。然后对同一查询文本,分别执行词法检索和语义检索。

词法侧用tsvector的ts_rank_cd打分,语义侧用向量余弦相似度。两者返回各自的文档ID列表与分数,但分值范围完全不同——BM25分数无上限,余弦相似度落在0到1之间。直接比较毫无意义。

这里引入倒数排名融合(倒数排名融合,Reciprocal Rank Fusion)。核心思想:只关心排名,不关心绝对分数。某文档在A列表排第3、在B列表排第10,它的RRF得分就是1/(3+60) + 1/(10+60),常数k=60用于平滑尾部排名的波动。最终按RRF总分重排,取Top-K。

为什么100行就够了

代码量压缩的关键在于Postgres的原生能力。tsvector和pgvector作为扩展,把重型计算下沉到数据库层。Python层只负责:调OpenAI接口做嵌入、拼两条SQL、做RRF的加权求和。没有服务编排,没有向量数据库集群,没有网络跳转。

嵌入模型选用text-embedding-3-small,1536维,成本约为-large的五分之一。作者的建议很直接:除非评估数据证明-large更好,否则别默认付费升级。

谁该警惕这种失败模式

这个方案瞄准的是已经踩过坑的团队。如果你正在用RAG(检索增强生成)做客服搜索、内部知识库或开发者文档,且发现用户 increasingly 用错误代码、版本号、配置键查询却得不到精确匹配——这就是你的场景。

不需要推倒重来。现有Postgres实例加两个扩展,存量数据原地迁移,查询逻辑增量改造。词法索引对短标识符的精确匹配能力,补上了向量索引的结构性盲区。

实用指向:下一步该做什么

检查你的RAG系统是否出现过"明明存在却搜不到"的案例,尤其是包含代码、数字、专有名词的查询。如果有,打开Postgres的查询日志,对比同一查询词在tsvector和向量索引下的返回排名。差距越大,RRF的收益越明显。

改造成本可控:一个工程师半天到一天的原型验证。如果验证通过,生产部署的核心工作是调整k值和Top-K截断点,让两种检索的贡献比例匹配你的数据分布。没有银弹,但100行代码买一个不再漏掉错误代码的搜索系统,这笔账多数团队算得过来。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
解放军打响实弹,特朗普忍气吞声,菲没有身为棋子的自觉

解放军打响实弹,特朗普忍气吞声,菲没有身为棋子的自觉

说故事的阿袭
2026-04-28 12:41:03
悲催!杭州一女子嫌国企丈夫没本事,携42万存款离婚,鸡飞蛋打了

悲催!杭州一女子嫌国企丈夫没本事,携42万存款离婚,鸡飞蛋打了

火山詩话
2026-04-27 06:40:09
港股361度大跌超17%

港股361度大跌超17%

每日经济新闻
2026-04-28 09:43:11
火箭已无非卖品!今夏或探索交易杜兰特:湖人成众多潜在下家之一

火箭已无非卖品!今夏或探索交易杜兰特:湖人成众多潜在下家之一

罗说NBA
2026-04-28 05:54:08
新疆维吾尔自治区商务厅党组书记、副厅长李轩被查

新疆维吾尔自治区商务厅党组书记、副厅长李轩被查

新京报
2026-04-28 09:11:04
美国巨头收购中国“明星公司”,被叫停

美国巨头收购中国“明星公司”,被叫停

中国新闻周刊
2026-04-27 22:00:33
CBA最新:萨林杰公开辟谣,新疆男篮成联盟焦点

CBA最新:萨林杰公开辟谣,新疆男篮成联盟焦点

二爷台球解说
2026-04-28 14:31:52
越南学者说了大实话:越南转向中国,就是拜特朗普的反复无常所赐

越南学者说了大实话:越南转向中国,就是拜特朗普的反复无常所赐

阿校谈史
2026-04-28 13:58:28
伊朗称发现15枚美军未爆重型导弹,已送技术部门逆向研发仿制

伊朗称发现15枚美军未爆重型导弹,已送技术部门逆向研发仿制

红星新闻
2026-04-27 16:51:19
你永远骂不醒一个沉迷手机的孩子!想要彻底解决手机问题,最重要的不是断网、砸手机,而是这5件事!

你永远骂不醒一个沉迷手机的孩子!想要彻底解决手机问题,最重要的不是断网、砸手机,而是这5件事!

青春期父母成长学堂
2026-04-27 06:06:25
山西泽州发生重大刑事案件,33岁嫌犯潜逃,警方发布协查通报

山西泽州发生重大刑事案件,33岁嫌犯潜逃,警方发布协查通报

极目新闻
2026-04-27 17:56:03
颜宁正面回应“只会利用电镜发论文灌水”

颜宁正面回应“只会利用电镜发论文灌水”

化学人生
2026-04-27 20:16:52
看完《八千里路云和月》大结局,无语凝噎,于是愤愤写下这篇文章

看完《八千里路云和月》大结局,无语凝噎,于是愤愤写下这篇文章

舍长阿爷谈事
2026-04-28 12:09:54
英国王室的小活宝8岁了!国王爷爷查尔斯送祝福,梅根又要气疯了

英国王室的小活宝8岁了!国王爷爷查尔斯送祝福,梅根又要气疯了

照见古今
2026-04-27 16:00:25
千万企退人员多年合理诉求迟迟未落地!真实现状深度解析

千万企退人员多年合理诉求迟迟未落地!真实现状深度解析

匹夫来搞笑
2026-04-25 15:26:44
大跌眼镜!恒大爆雷最大受害者曝光,竟是南通建筑,原因太过荒唐

大跌眼镜!恒大爆雷最大受害者曝光,竟是南通建筑,原因太过荒唐

谭谈社会
2026-04-27 19:35:02
战损曝光!中东战火下美军事资产“损失惨重” 五角大楼试图掩盖成本引质疑

战损曝光!中东战火下美军事资产“损失惨重” 五角大楼试图掩盖成本引质疑

财联社
2026-04-28 10:04:12
炸裂!北京车展恶性事件!尚界展车惨遭人为损毁,法务部硬核发声

炸裂!北京车展恶性事件!尚界展车惨遭人为损毁,法务部硬核发声

天天热点见闻
2026-04-27 06:27:09
唐国强的“糟心事”:两个儿子都是残疾,晚年奔波遭全网嘲讽

唐国强的“糟心事”:两个儿子都是残疾,晚年奔波遭全网嘲讽

君笙的拂兮
2026-04-27 23:48:49
新婚夜,妻子出上联:昌是日上日,丈夫的下联让妻子哈哈大笑

新婚夜,妻子出上联:昌是日上日,丈夫的下联让妻子哈哈大笑

千秋文化
2026-04-27 19:54:14
2026-04-28 15:31:00
固件更新中
固件更新中
有态度网友ytd
2997文章数 26关注度
往期回顾 全部

科技要闻

10亿周活目标落空!传OpenAI爆发内部分歧

头条要闻

辞任杭州市市长后 姚高员已任浙江省政府党组成员

头条要闻

辞任杭州市市长后 姚高员已任浙江省政府党组成员

体育要闻

季后赛最新局势:雷霆4-0晋级首队 4队3-1

娱乐要闻

蔡卓妍官宣结婚,老公比她小10岁

财经要闻

俞敏洪再遭重击

汽车要闻

拒绝疯狂套娃!现代艾尼氪金星长在未来审美点上

态度原创

游戏
亲子
本地
旅游
公开课

手机也能远程玩KK?贝锐向日葵20周年xKK官方对战平台限时联动福利来了!

亲子要闻

47岁卵巢功能衰退正常吗?高龄备孕吃什么卵子质量更好?

本地新闻

用青花瓷的方式,打开西溪湿地

旅游要闻

画美达尼青岛市乡村振兴片区丨五一必看!画美达尼最全游玩指南

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版