跳转到主要内容
AG·SORA
技术

企业网站与应用的语义搜索与向量搜索:嵌入、混合检索与评估

发布于 12 分钟阅读作者:agsora.tech
AG·SORA / BLOGAG·SORA技术企业网站与应用的语义搜索与向量搜索:嵌入、混合检索与评估agsora.tech
本文目录

搜索框是使用最频繁的功能之一,也是最常令人失望的功能之一。访客输入“笔记本电脑保修怎么申请”,但标题为“电子产品退换流程”的页面却没有出现,因为它不含相同的字词。员工在内网搜索“下个月到期的供应商合同”,只找到标题里有“合同”二字的文档。传统关键词搜索靠匹配字母和词语,而不是含义。语义搜索和向量搜索试图通过匹配含义来解决这个问题:用词不同但意思相同的两句话会被视为相近。

本文用企业主和产品经理能听懂的语言解释语义搜索的工作原理,然后讨论关键的技术决策:何时值得使用这项技术、如何与关键词搜索结合、如何保障数据质量与隐私,以及如何衡量结果是否真的更好。文中没有编造的数据,只有思路和检查清单。

摘要

  • 语义搜索通过嵌入(embedding)匹配含义,因此即使用词不同也能找到相关结果
  • 对于产品代码、订单号、专有名称和精确术语,关键词搜索仍然更强;最佳方案通常是混合检索
  • 搜索质量更多取决于文档的质量和结构,而不是模型或向量数据库的选择
  • 必须对搜索结果实施访问权限控制,避免用户看到无权查看的文档
  • 用测试问题集和简单指标来衡量,而不是只凭主观印象
  • 从价值明确的小场景起步,例如帮助中心或产品目录
一个坐着阅读的人形机器人,象征理解文本的机器
嵌入使计算机能够比较文本的含义,而不仅仅是字母的相似度

为什么关键词搜索经常失败

经典搜索引擎会建立词语索引。用户输入查询时,引擎查找包含这些词的文档,再按词出现的频率和独特程度排序。这种做法快速、便宜且可预测,但存在一些反复出现的弱点:

  • **词汇鸿沟**:用户写“冰箱”,文档写“电冰箱”;用户写“把东西寄回去”,文档写“产品退货”
  • **长句或提问式查询**:“下单后怎样修改收货地址”很难对应到一两个关键词
  • **错别字与语言变体**:印尼语、英语和口语缩写混用
  • **语境**:“苹果”可能是水果、品牌,也可能是人名
  • **零结果查询**:“未找到”页面会让访客离开

关于访客如何在网店搜索商品,包括筛选和同义词,请参阅网店的商品搜索与筛选。语义搜索并不取代这些,而是增加理解意图的能力。

语义搜索如何工作

这一概念可以分四步说明。

1. 把文本转换为嵌入

语言模型把一段文本转换为一串称为嵌入或向量的数字。这些数字是含义的“坐标”。含义相近的句子,向量彼此靠近;主题不同的则相距遥远。嵌入模型专为此任务训练,与对话模型不同。

2. 把向量存入索引

每份文档被切分成片段(chunk),例如段落或章节,然后各自转换为向量,并与标题、类别、语言、日期和访问权限等元数据一起存储。存储可以是专用的向量数据库,也可以是您已在使用的数据库上的向量扩展。对于中小型文档集合,现有数据库上的扩展往往已经足够,运维也更简单。

3. 转换查询并寻找最近邻

用户输入查询时,用同一模型把它转换为向量,系统再寻找最接近的文档向量。在大型集合上,最近邻搜索采用近似方式以保证速度,需要牺牲少量可调节的精度。

4. 排序并展示结果

展示排名靠前的结果,通常附带相关文本片段。许多系统会增加重排序(re-ranking)步骤,用更精细的模型从数十个候选中挑出最佳的几个。这一步以额外时间为代价提升质量。

混合检索:结合关键词与含义

语义搜索不是万能药。它恰恰在关键词搜索擅长的地方较弱:产品代码如“SKU-48213”、发票号、人名或公司名的精确匹配,以及罕见的技术术语。向量往往认为“SKU-48213”与其他代码相似,而用户想要的是精确的那一个。

混合方法同时运行两者,再合并得分。实践中:

  • 并行运行关键词搜索和向量搜索
  • 用简单的排名融合方法合并结果列表
  • 当查询看起来像代码、编号或名称时,提高关键词的权重
  • 在搜索之前或之后应用元数据筛选(类别、语言、日期)
  • 为用户提供筛选和排序功能,而不是只依赖自动得分

混合方法通常比单一方法给出更稳定的结果。因此,许多成功的项目并不是取代旧搜索,而是对其进行增强。

何时值得使用语义搜索

当用户用多样的词语表达需求且内容是自由文本时,语义搜索价值最大。合适的例子:

  • **帮助中心与知识库**:客户用日常语言提问,文章用正式术语撰写。更准确的结果可以减少支持工单。另见[客户支持工单系统与 SLA](/blog/sistem-tiket-dukungan-pelanggan-dan-sla)
  • **描述丰富的产品目录**:搜索“办公室穿的凉爽衬衫”,可以找到根本没有“凉爽”一词的商品
  • **内部文档**:分散在许多文件夹中的政策、合同、流程和会议纪要
  • **相关内容推荐**:博客文章、案例研究或类似产品
  • **跨语言搜索**:部分多语言嵌入模型允许印尼语查询找到英文文档
  • **AI 助手背后的搜索**:基于企业知识的聊天机器人用语义搜索检索回答素材,见[基于企业知识并采用 RAG 的 AI 聊天机器人](/blog/chatbot-ai-berbasis-pengetahuan-perusahaan-dengan-rag)

反过来,如果您的目录很小、结构清晰,用户主要按名称或代码搜索,那么带同义词和筛选的良好关键词搜索通常就够了。不要仅仅因为技术流行就增加复杂性。

计算机屏幕上显示用于构建搜索索引的程序代码
向量索引由经过清理并附带元数据的文档片段构建而成

准备数据:最关键的部分

搜索项目最大的错误,是在源文档一团糟的情况下把时间花在选模型上。需要先解决的几件事:

  • **重复与过期版本**:如果同一政策的三个版本都在索引里,用户会得到相互矛盾的答案。标记有效版本,移除过期版本
  • **文档结构**:清晰的标题、小标题和摘要可产生有意义的片段。没有文本层的扫描文档需要文字识别并检查质量
  • **片段大小**:太小会丢失上下文,太大则混杂多个主题。从逻辑单元(如带标题的段落)开始,再测试
  • **元数据**:来源、日期、所有者、语言、类别和访问级别。元数据支持筛选和引用
  • **内部语言与术语**:公司缩写和专用术语应记录在同义词表中,或写进文本里

更一般的数据准备指南见启动 AI 项目前的企业数据准备度和中型企业的数据质量与数据治理。

选择嵌入模型与数据库

技术选择应服从需求,而不是跟风。几点考虑:

  • **语言**:确保模型很好地支持您内容的语言,包括印尼语和混合用语。用您自己的查询和文档测试
  • **维度与存储成本**:向量越长,占用的空间和搜索时间越多
  • **API 服务还是自建模型**:云 API 上手快,但数据会发送给第三方。自建模型能更好地控制数据,但运维负担更重。类似的取舍见[自托管 LLM 还是云 API](/blog/llm-self-hosted-atau-api-cloud-memilih-model-ai-untuk-data-bisnis)
  • **模型更新**:更换嵌入模型后,所有文档都需要重新索引,因为不同模型的向量无法比较。在索引元数据中保存模型名称和版本
  • **规模**:数十万个片段通常可由支持向量的通用数据库处理;流量很高的超大规模可能需要专用服务
  • **配套功能**:元数据筛选、混合检索和增量更新,比基准测试分数的微小差异更重要

访问权限、隐私与安全

语义搜索让文档更容易被找到,也包括某些人本不该看到的文档。基本原则:访问权限必须在每个结果上执行,而不仅仅是在界面上。

  • 把访问级别或角色列表存为元数据,并在展示前按用户身份过滤结果
  • 不要索引不需要的敏感数据,如证件号码或健康数据
  • 谨慎记录查询。查询可能包含个人信息,因此对日志实施保留期限和访问限制
  • 如果文档被发送给第三方嵌入服务,请核查其数据存储和使用条款
  • 当搜索结果被送入 AI 助手时,警惕文档中隐藏的注入指令。该风险见[AI 应用安全:提示注入与数据泄露](/blog/keamanan-aplikasi-ai-prompt-injection-dan-kebocoran-data)
  • 通过限速保护搜索接口,防止滥用和批量抓取,参见[防范机器人、爬取和自动化攻击](/blog/perlindungan-bot-scraping-dan-serangan-otomatis-pada-website-bisnis)

衡量搜索质量

没有度量,“感觉更好”很容易误导人。建立一个简单的评估集:

  • **收集真实查询**:来自搜索日志、支持工单或用户访谈。包括短查询、长查询、拼写错误的查询,以及此前失败的查询
  • **确定正确答案**:为每个查询标记一个或多个应该出现的文档。让了解内容的人参与
  • **选择简单指标**:正确文档是否出现在前三或前十个结果中,以及排名多高
  • **比较不同方案**:仅关键词、仅向量、混合、有无重排序、不同片段大小
  • **监测用户行为**:零结果查询比例、对靠前结果的点击,以及用户看到结果后修改查询的频率
  • **定期复查**:内容和用户习惯都会变化,评估需要反复进行

评估 AI 系统输出的类似方法见业务应用中 AI 与 LLM 输出质量的评估。别忘了快速搜索也是体验的一部分;在衡量质量的同时衡量延迟,若搜索嵌入网页中,请参阅企业网站的核心网页指标。

需要考虑的成本

语义搜索成本由几个部分组成,应在一开始就加以估算:

  • **为整个文档集合生成嵌入**,以及文档变化时的更新
  • **每次用户搜索时的查询嵌入**
  • **向量索引的存储与计算**
  • **重排序或答案生成**(如果使用语言模型),通常是最昂贵的部分。控制方法见[控制 AI 成本:令牌与推理](/blog/mengendalikan-biaya-ai-token-dan-inferensi-untuk-aplikasi-bisnis)
  • **人力**,用于清理数据、构建评估集和维护索引

降低成本的办法包括缓存常见查询的结果、仅对排名靠前的候选做重排序,以及选择大小合理的嵌入模型。若想从更宽的视角选择合适的 AI 方案,请阅读提示词、RAG 还是微调。

对 SEO 与用户体验的影响

站内搜索影响转化,同时也提供访客在找什么的数据。零结果查询就是您尚未撰写的内容创意清单。热门查询展示受众使用的词汇,对页面标题和描述很有用。需要注意的是,站内搜索结果页通常不需要被搜索引擎收录;请使用适当的指令,以免产生成千上万的薄内容页面。现代搜索的走向及其影响见AI 搜索与企业网站 SEO 的未来。

现实可行的实施路径

分阶段的方法能降低风险并更快证明价值:

  • **最初几周**:选一个场景,例如帮助中心。收集约一百个真实查询并确定正确答案
  • **基础阶段**:整理文档,创建片段与元数据,构建索引,并以现有关键词搜索为基线进行衡量
  • **混合阶段**:结合关键词与向量,必要时加入筛选和重排序
  • **生产阶段**:实施访问权限、监控、文档变化时的增量更新以及用户反馈回路
  • **扩展**:加入其他内容来源,并在相关时通过[模型上下文协议](/blog/model-context-protocol-mcp-menghubungkan-ai-dengan-sistem-bisnis)等标准集成连接 AI 助手或其他系统

使用分阶段发布和功能开关,以便出问题时可以退回旧搜索,见功能开关与分阶段发布。

常见错误

  • 没有基线就彻底替换旧搜索,导致退步无法被发现
  • 不清理重复和过期版本就索引所有文档
  • 忽略搜索结果上的访问权限
  • 仅凭通用排名选择模型,而不在自己的语言和内容上测试
  • 不保存嵌入模型版本,导致迁移困难
  • 认为语义搜索适合所有查询,包括代码和编号
  • 不给用户留出路,如筛选、排序以及无结果时的“联系我们”按钮

常见问题

语义搜索需要生成式 AI 吗?

不需要。语义搜索使用嵌入模型,与撰写答案的模型不同。您可以在不使用生成式 AI 的情况下展示普通的结果列表。只有当您想要摘要或直接回答时,才需要生成式模型。

适用于印尼语和混合语言吗?

可以,只要嵌入模型很好地支持该语言。不同模型的质量有差异,因此在决定之前,请用您真实的查询和文档(包括缩写和口语)进行测试。

必须购买专用的向量数据库吗?

不一定。对于中小型集合,现有数据库上的向量扩展往往足够。当您需要的规模、速度或功能超出其能力时,才值得考虑专用服务。

需要多少文档才值得做?

没有固定门槛。当用户难以找到确实存在的信息时,价值就会显现。如果只有几十页结构清晰的文档,良好的导航可能更有效。

如何保持索引最新?

设计增量更新流程:文档被创建、修改或删除时,相关片段重新索引或从索引中移除。同时安排定期检查,以发现遗漏的变更。

高度敏感的文档怎么办?

如果不需要被搜索,就将其排除在索引之外,或使用运行在您自己环境中、访问控制严格的模型。在索引个人或机密数据之前,请让安全和法务团队参与。

结论

语义搜索让系统理解用户的意图,而不仅仅是匹配词语。当它与关键词搜索结合、由干净的数据和良好的元数据支撑、受严格的访问权限保护,并用真实的测试集评估时,价值最大。从一个收益明确的场景开始,衡量前后变化,然后谨慎扩展。

提升您网站和应用的搜索质量

Agsora 协助设计和构建语义与混合搜索,从数据准备到评估与安全。请告诉我们您的搜索需求,我们将提供初步建议。

免费咨询

免费清单:如何选择软件公司

签约前评估供应商的 24 个要点,可保存为 PDF。

获取清单

准备好构建与您业务共同成长的系统了吗?

与 AG·SORA 团队讨论您的需求, 完全免费,无需承诺。