为什么需要向量数据库:适配海量非结构化数据语义检索场景
做AI知识库落地那阵子,我才算真正弄懂为什么需要向量数据库,不是跟风堆砌新技术,是传统数据库的底层逻辑,压根撑不住当下的AI业务场景。当时接手公司内部智能问答系统的开发迭代,核心需求很直白,整合企业所有零散的文档资料,让员工口语化提问就能精准找到对应内容,不用人工翻找海量文件。
最开始图开发省事,全程沿用了项目组惯用的传统关系型数据库。所有文档、截图文本、培训素材都做简单分词处理,存入数据表,检索逻辑只靠关键词精准匹配。初期测试数据少,几百条文档检索速度飞快,页面响应丝滑,完全看不出任何问题。那时候真的觉得,网上热议的向量数据库纯属多余,普通检索功能就完全能覆盖需求。
数据量破十万,一切都变了。
系统开始频繁出现各种离谱的检索错误,员工问的是项目立项的具体流程,系统只会抓取“项目”两个关键词,推送一堆项目收尾、项目结算的无关资料。明明语义完全贴合的内容,因为文字表述不一样,就彻底检索不到,整个问答系统基本丧失了实用价值。
当时死磕了传统方案优化半个多星期,反复调整分词阈值、叠加多层关键词匹配规则、给高频业务问题单独建立专属索引,熬了好几个通宵改代码。可不管怎么微调参数,漏洞始终存在。传统数据库只识别固定的文字字符,完全读不懂语义,人类眼里意思相近的两句话,在系统后台就是毫无关联的字符串,这种底层短板,靠表层的代码修补根本填不上。数据量越大,检索失真、查询超时、检索失真、查询超时、页面卡顿的问题就越严重,用户投诉越来越多,项目直接卡在上线环节动弹不得。
身边做算法的同事看我瞎折腾半天,才提醒我语义检索场景根本不该硬扛传统数据库。抱着试试看的心态,接入了向量数据库,没有重构整个系统架构,只是把所有非结构化的文档内容、图片文本转换成向量嵌入,将关键词匹配替换成语义相似度检索。
改动的代码量特别少,差不多只微调了核心检索逻辑,可落地效果完全是颠覆性的。不管员工用正式话术、口语化表达、简化句式提问,系统都能精准捕捉核心语义,匹配对应的资料。检索准确率从原先的三成左右,直接拉到九成以上,十万级数据的查询延迟从两三秒缩短到毫秒级,之前所有的bug全部自动消失。
折腾好久才搞明白,两种数据库的适配场景从来不一样。传统数据库擅长处理规整的结构化数据,数字、表格、固定字段内容,它处理的又快又准。但面对AI场景里最常见的长文本、图片、碎片化文案、语音转文字这些非结构化数据,涉及模糊匹配、语义理解、相似度排查,传统数据库就彻底失灵了。
没必要在小数据量的简单场景强行替换工具,但只要做AI问答、智能检索、内容匹配这类业务,向量数据库就不是可选功能,是刚需。
项目顺利上线的那天晚上,关掉电脑后台的监控日志,桌上凉透的奶茶还剩大半杯。