Exploring Sentence and Paragraph Search with Milvus Vector Search vs Elasticsearch
This article examines how vector search using Milvus handles sentence and paragraph queries compared to traditional Elasticsearch, demonstrating the advantages of embedding‑based semantic matching for document search scenarios through practical experiments and visual results.
halo大家好,我是广州小井。书接上回,本文将从语句、文段搜索的方向,继续跟大家探索Milvus和向量搜索在文档搜索业务领域的功力。毕竟在文档搜索的业务场景中,我们面对的不只有词语,更多情况下的可能是语句、段落。
前文回顾
前文我通过将“开心”、“快乐”、“不开心”等词语做了词嵌入处理后,放到了 Milvus 中去实际体验了一把搜索的效果。当我通过“开心”的词嵌入结果拿去搜索时,结果如下图所示:
通过这种搜索情况的表现,我们不难发现,向量搜索通过对词嵌入结果(向量)做距离计算的搜索方式,确实可以缓解 ES 在语义模糊情况下的搜索不准确的问题。
接下来我们思考在文档搜索业务中如何处理原始文档数据——文档由词、语句、段落、超链接、代码块等组成,需要合理的拆分与向量化。
ES的语句搜索
在文档搜索的业务领域中,我们要面对的文档数据绝不仅仅是词语,而更多的是句子、段落,还有其他的一些文本内容。ES 通过 match 关键字对搜索词进行拆词、匹配并计算关键词命中次数来评分。
示例:使用三句关于互联网的描述,分别插入 ES 并用“互联网的特点”或“互联网的好处”进行搜索,结果显示 ES 能检索到所有句子,但排序主要依据关键词命中次数,语义相关性有限。
向量的语句搜索
将同样的三句话做词嵌入后插入 Milvus,使用相同的查询词进行向量搜索,结果显示排名更符合语义预期——与查询词语义更接近的句子排在前面,证明向量搜索在语义模糊场景下的优势。
段落搜索
进一步使用由 GPT 生成的约250字的文段进行实验,将文段向量化后插入 Milvus,分别以“互联网简介”和“互联网的优势”进行搜索,结果显示向量搜索能够根据查询意图将对应的文段排在前列。
对比 ES 的段落搜索结果,ES 仍能检索到相关文段,但得分普遍不高,且在语义匹配上不如向量搜索精准。
写在最后
在实际落地文档搜索业务时,关键在于如何处理文档的源数据——是按词、句、段落拆分后分别向量化,还是整体嵌入;以及如何处理 markdown 中的表格、代码块、链接等特殊格式。
关注作者,后续将继续探讨文档源数据的处理细节。
Rare Earth Juejin Tech Community
Juejin, a tech community that helps developers grow.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.