企业网站与应用的语义搜索与向量搜索:嵌入、混合检索与评估
本文目录
搜索框是使用最频繁的功能之一,也是最常令人失望的功能之一。访客输入“笔记本电脑保修怎么申请”,但标题为“电子产品退换流程”的页面却没有出现,因为它不含相同的字词。员工在内网搜索“下个月到期的供应商合同”,只找到标题里有“合同”二字的文档。传统关键词搜索靠匹配字母和词语,而不是含义。语义搜索和向量搜索试图通过匹配含义来解决这个问题:用词不同但意思相同的两句话会被视为相近。
本文用企业主和产品经理能听懂的语言解释语义搜索的工作原理,然后讨论关键的技术决策:何时值得使用这项技术、如何与关键词搜索结合、如何保障数据质量与隐私,以及如何衡量结果是否真的更好。文中没有编造的数据,只有思路和检查清单。
摘要
- 语义搜索通过嵌入(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 的情况下展示普通的结果列表。只有当您想要摘要或直接回答时,才需要生成式模型。
适用于印尼语和混合语言吗?
可以,只要嵌入模型很好地支持该语言。不同模型的质量有差异,因此在决定之前,请用您真实的查询和文档(包括缩写和口语)进行测试。
必须购买专用的向量数据库吗?
不一定。对于中小型集合,现有数据库上的向量扩展往往足够。当您需要的规模、速度或功能超出其能力时,才值得考虑专用服务。
需要多少文档才值得做?
没有固定门槛。当用户难以找到确实存在的信息时,价值就会显现。如果只有几十页结构清晰的文档,良好的导航可能更有效。
如何保持索引最新?
设计增量更新流程:文档被创建、修改或删除时,相关片段重新索引或从索引中移除。同时安排定期检查,以发现遗漏的变更。
高度敏感的文档怎么办?
如果不需要被搜索,就将其排除在索引之外,或使用运行在您自己环境中、访问控制严格的模型。在索引个人或机密数据之前,请让安全和法务团队参与。
结论
语义搜索让系统理解用户的意图,而不仅仅是匹配词语。当它与关键词搜索结合、由干净的数据和良好的元数据支撑、受严格的访问权限保护,并用真实的测试集评估时,价值最大。从一个收益明确的场景开始,衡量前后变化,然后谨慎扩展。
免费清单:如何选择软件公司
签约前评估供应商的 24 个要点,可保存为 PDF。