大家好,我是来自广州的小井。今天,我将继续与大家深入探讨Milvus及其在文档搜索领域的应用,特别是它在处理语句和段落搜索方面的能力。在文档搜索业务中,我们经常需要处理的不仅仅是单个词汇,更多的是整个语句或段落。让我们直接切入正题。

回顾与展望

在之前的分享中,我通过将“开心”、“快乐”、“不开心”等词汇进行词嵌入处理,并在Milvus中进行了搜索实验。例如,当我利用“开心”的词嵌入向量进行搜索时,得到的搜索结果如下: 搜索结果示例 请注意,此处的搜索结果仅为示意,具体效果会根据实际应用场景和数据集的不同而有所变化。
图片
在探讨文档搜索技术时,我们首先需要理解语义搜索的重要性。向量搜索通过计算词嵌入向量之间的距离,有效地解决了语义模糊情况下的搜索问题。例如,使用“开心”作为关键词,向量搜索能够关联到“快乐”等语义相近的词汇。然而,传统的Elasticsearch(ES)在处理语义模糊的搜索时可能表现不佳,需要额外的自定义词典来增强搜索质量,但这会涉及到成本和收益的权衡。 接下来,我们讨论文档数据的处理。文档由多种元素组成,包括词汇、语句、段落等。在向量搜索中,如何处理这些原始数据成为一个关键问题。我们需要考虑如何拆分和处理文档中的语句,以及向量搜索在处理语句时是否具有优势。

文档数据的处理

在文档搜索业务中,我们面对的不仅仅是简单的词汇,更多的是复杂的语句和段落。首要问题是如何确定文本的拆分尺度。这个问题的答案将在后续内容中探讨。

向量搜索与ES的比较

向量搜索在处理文本数据前需要进行词嵌入处理,这可以视为一种总结和提炼的过程。与之相比,ES在搜索时不需要对文本进行切割拆分,而是直接基于关键词命中数来计算得分。

实验:ES的语句搜索

为了更直观地理解ES的搜索机制,我们生成了三句描述互联网行业的句子,并将其录入ES进行搜索实验。以下是这三句句子的简要概括:

  1. 互联网行业的定义和核心业务。 2. 互联网行业的特点,如高速发展和创新性。 3. 互联网行业对社会经济和生活方式的影响。 通过这个实验,我们可以观察ES在处理整个语句时的搜索效果,并与向量搜索进行比较。
    图片

现在我们通过:“互联网的特点”作为搜索词,来对 ES 中的 content 字段进行检索看看结果如何(这里还是仅以 match 关键字做演示)。

图片
在进行搜索引擎的测试过程中,我发现三个不同的句子都能够被搜索系统识别出来,这并不令人意外,因为我之前已经对搜索匹配机制有所了解。尽管如此,这三个句子在搜索结果中的评分差异较大,这主要是由于关键词在句子中的出现次数不同导致的。从搜索结果来看,排名第一的句子在语义上更接近于我期望搜索的内容,这让我感到还算满意。现在,我打算改变搜索关键词,使用’互联网的好处’来进一步测试搜索引擎的表现。
图片
在进行搜索引擎优化(SEO)或信息检索时,我们经常会遇到关键词匹配的问题。搜索引擎(如Elasticsearch,简称ES)通过拆分关键词、匹配并计算得分来返回搜索结果。然而,这种基于关键词匹配的搜索机制,尽管能够处理从短语到整篇文章的搜索,却可能在语义相关性方面存在不足。

搜索引擎的工作原理

搜索引擎的工作原理可以概括为以下几个步骤:

  1. 关键词拆分:将用户的搜索词拆分成更小的单元,如词语或短语。
  2. 匹配:在数据库中查找与这些关键词匹配的内容。
  3. 得分计算:根据匹配程度和其他因素(如关键词密度、位置等)计算得分。
  4. 结果排序:根据得分高低对搜索结果进行排序。

语义搜索的挑战

尽管基于关键词的搜索在某些情况下能够提供准确的结果,但在语义相关性方面,它可能无法满足用户的需求。例如,用户搜索“互联网的好处”,可能更期望得到关于互联网优势和特点的描述,而不是简单的定义。

向量的语句搜索

为了提高搜索的语义相关性,可以采用向量搜索技术。通过将语句转换为向量形式,可以更好地捕捉语句的语义信息。以下是向量搜索的基本步骤:

  1. 词嵌入:将每个词语转换为固定维度的向量。
  2. 向量聚合:将句子中的词向量聚合为句子的向量表示。
  3. 相似度计算:计算查询向量与文档向量之间的相似度。
  4. 结果排序:根据相似度对搜索结果进行排序。

结论

虽然当前的搜索引擎技术在关键词匹配方面表现良好,但在语义搜索方面仍有提升空间。通过引入向量搜索技术,可以提高搜索结果的语义相关性,更好地满足用户的需求。
图片

插入完毕后,在 attu 中看到数据如图所示:

图片

我首先用“互联网的好处”去搜索,看看向量搜索这边有没有不一样的结果。当然,先对搜索关键词做 emb 后,得到向量数据再丢进去 milvus 中进行i向量搜索,结果如下图所示:

图片
在探讨互联网的诸多好处时,我们可以通过搜索引擎的搜索结果来观察其对用户预期的匹配程度。例如,当使用关键词“互联网的好处”进行搜索时,发现原本在搜索引擎排名第一的结果,可能因为更贴近用户对“好处”的预期而被排到了后面。这说明搜索引擎在处理语义模糊的搜索词时,能够根据向量搜索技术,将文本数据通过词嵌入处理转换成高维向量,并计算出与搜索信息的距离,从而提供更符合用户预期的结果。 此外,当我们搜索“互联网的特点”时,也可以验证向量搜索技术在处理这类搜索词时的效果。尽管0.4几的距离在数值上看起来差距不大,但在数据量较少的情况下,这种差距足以影响搜索结果的排名。 向量搜索技术的核心在于文本数据的词嵌入处理,即将文本转换为1024维的向量,使得搜索引擎能够通过计算这些向量与搜索词的距离来确定搜索结果的排序。这种技术在语义搜索中尤为重要,因为它能够提供更加精准和符合用户预期的搜索结果。 在实际应用中,向量搜索技术可以广泛应用于各种搜索引擎和推荐系统中,帮助用户更快地找到他们需要的信息。
图片
互联网,这个现代科技的奇迹,已经彻底改变了我们的生活方式。从在线购物到远程工作,从社交媒体到数字娱乐,互联网的触角延伸到了生活的每一个角落。它的核心是一个由数以亿计的计算机和服务器组成的庞大网络,通过复杂的协议和标准连接在一起,实现了信息的快速交换和共享。 互联网的起源可以追溯到20世纪60年代,当时是作为军事通信网络的一部分而诞生的。随着时间的推移,它逐渐向民用领域开放,最终发展成为今天我们所熟知的全球性网络。 互联网的普及带来了巨大的社会变革。它不仅促进了信息的自由流通,还催生了新的商业模式和创新技术。然而,它也带来了挑战,如隐私保护、网络安全和数字鸿沟等问题。 总之,互联网是一个不断发展和演变的领域,它将继续塑造我们的未来。
图片

再通过”互联网优势“为核心写一个小文段如下:

图片

话不多说,我同样将这两个文段做词嵌入后插入到 milvus 中。其中一个文段如下图所示:

图片

此时,我用”互联网简介“作为搜索词去搜索,看看效果如何:

图片

如图所示,两个对”互联网“下定义的数据排名靠前,而讲互联网优势的句子、段落排名靠后。从这一点上来说,比较符合我们的预期。再接着我用”互联网的优势“去搜索试试效果,看看是不是排名会有所改变?

图片
在对搜索引擎的比较分析中,我们发现侧重于阐述优势的文段往往获得了更高的排名。这与我的预期相一致。现在,让我们将注意力转向Elasticsearch(ES),并探究其对长文本搜索的处理是否与向量搜索相似,或者存在差异性。

1. 搜索引擎表现对比

  • 向量搜索:在向量搜索中,强调优势的文段获得了较好的排名。
  • 互联网简介:对于介绍互联网基础概念的文段,排名稍低。

2. Elasticsearch(ES)的搜索测试

  • 测试目的:验证ES对长文本搜索的处理方式。
  • 测试内容:选取“互联网简介”作为搜索关键词。

3. 预期与实际结果分析

  • 预期:根据向量搜索的结果,我们预期ES可能展现出相似的搜索倾向。
  • 实际结果:需要通过实际测试来验证ES的搜索结果是否与预期相符。

4. 结论

  • 通过对比分析,我们可以得出搜索引擎在处理长文本时可能存在的差异性,以及它们在搜索算法上的独特优势。
    图片

结果如上图所示,这个结果对于大家来说可能也没啥意外,毕竟都能搜索出来。不过这里我发现了一个点,那就是他们的得分都不高…不过结果还算符合预期,我们再来看看“互联网的优势”的搜索情况:

图片
在对互联网优势的介绍中,我们发现一个有趣的现象:尽管没有使用任何拆词器插件,如ik等,但测试的Elasticsearch(ES)在对文段的搜索得分上却异常高,并且成功地检索出了5条数据。这可能是因为文段中的关键词与查询条件高度匹配。

向量搜索的优势

经过对句子和段落的搜索结果进行测试,并与搜索领域的权威——Elasticsearch的搜索结果进行横向对比,我们可以得出结论:向量搜索在处理长文本搜索的场景中确实展现出了其独特的优势。它值得被进一步探索和应用。

文档搜索业务的落地

然而,在将向量搜索技术实际应用到文档搜索业务中时,我们面临着一个关键步骤——文档的源数据处理。这里有几个问题需要我们深思:

  1. 我们是否应该将文档拆分成词语、句子或段落,然后进行词嵌入和索引?2. 是否有必要对整个文档进行处理,而不进行任何拆分?3. 对于不同类别的数据,我们是否需要采取不同的处理策略?例如,对于Markdown格式中的表格、代码块、链接等特殊内容,我们应该如何进行处理?

结语

这些问题的答案将直接影响向量搜索技术在文档搜索业务中的表现和效果。如果您对这些问题感兴趣,或者希望了解更多关于向量搜索的信息,请继续关注我们的后续文章。期待与您在下一篇文章中再次相见。