Back

站内搜索进化之路:分词正则、MongoDB文档、AI语义,我的多方案探索与未来畅想

MaoMaoyu

当前的混合搜索方案:稳妥之选,但仍有局限

目前,我的导航站采用的是一种混合搜索方案,主要由以下三部分组成:

  1. 分词 + 正则表达式: 这是最基础的搜索方式,通过对用户输入的关键词进行分词,然后利用正则表达式匹配网站标题、描述等字段。这种方案优点是简单快捷,成本低,对于简单的关键词搜索效果还不错。但缺点也很明显,无法理解语义,容易出现误判,比如搜索“苹果手机”,可能会匹配到包含“苹果”的菜谱。
  2. MongoDB 文档搜索: MongoDB 本身就提供了强大的文本搜索能力,我利用它对网站数据进行全文索引。相比简单的分词正则,它可以支持更复杂的搜索,并提供一定的相关性排序。但它仍然基于关键词匹配,无法真正理解用户的意图。
  3. AI 语义匹配类别 (DeepSeek 模型): 这是我为了解决语义理解问题引入的方案。我使用 DeepSeek 模型对网站进行类别划分,然后将用户搜索的关键词也进行语义分析,匹配到最相关的类别,最终返回该类别下的网站。这在一定程度上提升了搜索的准确性,但仍然不够精细,而且DeepSeek模型存在一定的成本。

这种混合方案在现阶段算是比较稳妥的选择,兼顾了成本和效果。但随着网站内容的增长,以及用户对搜索体验要求的提高,我意识到这种方案仍然存在不少局限性,比如:

  • 语义理解不足: 关键词匹配始终无法准确理解用户的真实意图,例如,用户搜索 “有什么好用的在线协作工具”,我们的搜索很可能找不到最佳答案。
  • 结果排序不够智能: 结果的排序往往基于简单的相关性,而不是用户可能真正需要的程度。
  • 维护成本较高: 三种方案需要分别维护,随着数据量增大,维护成本也会越来越高。

尝试过的其他方案:成本与复杂度的权衡

在探索的过程中,我也考虑过其他一些方案,但都因为各种原因没有采用:

  • 数据库语义搜索: 这是理想中的方案,利用语义向量技术,将网站数据和用户搜索都转化为向量,然后通过计算向量相似度来匹配。但这个方案的成本太高,需要大量的计算资源和存储空间,特别是对于我这种小网站来说,难以承受。
    • 中间方案: 为了降低成本,我还考虑过一个中间方案,即在网站数据结构中增加一个语义向量字段,在存储数据时调用免费的语义模型得到网站描述的语义向量。搜索时,再调用免费的语义模型得到搜索的语义向量,最后选择合适的计算方式匹配。这个方案虽然降低了一些成本,但仍然需要大量的开发工作,而且维护起来比较麻烦。
  • 服务商提供的站内搜索 API (Algolia): 这种方案非常省心,能够提供专业的搜索服务,但价格太贵了,免费额度只有 10000 次搜索/月,对于我来说远远不够用。

这些尝试让我更加清楚地认识到,选择合适的搜索方案需要综合考虑成本、效果、复杂度和维护成本等多个因素,找到一个适合自己的平衡点。

未来的畅想:AI 知识库 + 语义搜索

虽然目前的方案基本满足需求,但我心中一直有一个更理想的方案: 将所有网站数据做成一个 AI 知识库,然后直接调用 AI 语义搜索。

这个方案的优势显而易见:

  • 更强大的语义理解能力: AI 模型可以理解用户的真实意图,返回更精准的结果。
  • 更智能的排序: 基于 AI 的排序算法可以更好地根据用户需求和网站质量来排序结果。
  • 更灵活的搜索方式: 用户可以像和 AI 对话一样搜索,比如“我想找一个可以免费画流程图的在线工具”
  • 更低的维护成本: 只需要维护一个 AI 模型和一个知识库即可。

当然,这个方案也面临一些挑战,比如:

  • AI 知识库的构建: 如何高效地将网站数据转化为 AI 可以理解的知识?
  • AI 模型选择: 选择哪个模型更适合我的需求?
  • AI 缓存: 如何高效地缓存搜索结果,避免重复计算?

目前我对这些挑战的理解还比较浅显,很多东西都是我的知识盲区。但我坚信,随着 AI 技术的不断发展,构建基于 AI 知识库的站内搜索将成为未来的趋势。

总结与展望

站内搜索是一个不断进化的过程,没有一劳永逸的解决方案。我们需要根据自身的情况,不断尝试、调整和优化。

我希望通过这篇文章,能够和大家分享我的探索之路,也希望能够抛砖引玉,引发更多关于站内搜索方案的讨论。如果你也有关于站内搜索的经验或想法,欢迎在评论区留言,一起学习进步!

未来,我将继续探索基于 AI 知识库的站内搜索方案,并期待能与大家分享更多实践经验。感谢大家的阅读!