基本 ANN 搜索
近似近邻(ANN)搜索以记录 Embedding 排序顺序的索引文件为基础,根据接收到的搜索请求中携带的查询向量定位 Embedding 子集,将查询向量与子群中的向量进行比较,并返回最相似的结果。通过 ANN 搜索,Milvus 提供了高效的搜索体验。本页将帮助您了解如何进行基本的 ANN 搜索。
过滤搜索
ANN 搜索能找到与指定 Embedding 最相似的 Embedding。不过,搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件,这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤,将搜索范围从整个 Collection 缩小到只搜索符合指定过滤条件的实体。
范围搜索
范围搜索将返回实体的距离或得分限制在特定范围内,从而提高搜索结果的相关性。本页将帮助您了解什么是范围搜索以及进行范围搜索的步骤。
分组搜索
分组搜索允许 Milvus 按指定字段中的值对搜索结果进行分组,以便在更高层次上汇总数据。例如,你可以使用基本的 ANN 搜索来查找与手头这本书类似的书籍,但你也可以使用分组搜索来查找可能涉及该书所讨论主题的书籍类别。本主题将介绍如何使用分组搜索以及主要注意事项。
混合搜索
在许多应用中,可以通过标题和描述等丰富的信息集或文本、图像和音频等多种模式来搜索对象。例如,如果文本或图片与搜索查询的语义相符,就可以搜索包含一段文本和一张图片的推文。混合搜索将这些不同领域的搜索结合在一起,从而增强了搜索体验。Milvus 允许在多个向量字段上进行搜索,同时进行多个近似近邻(ANN)搜索,从而支持这种搜索。…
查询
除 ANN 搜索外,Milvus 还支持通过查询进行元数据过滤。本页将介绍如何使用查询、获取和查询迭代器来执行元数据过滤。
过滤
5 个项目
全文搜索
全文搜索是一种在文本数据集中检索包含特定术语或短语的文档,然后根据相关性对结果进行排序的功能。该功能克服了语义搜索的局限性(语义搜索可能会忽略精确的术语),确保您获得最准确且与上下文最相关的结果。此外,它还能接受原始文本输入,自动将文本数据转换为稀疏嵌入,无需手动生成 Embedding,从而简化了向量搜索。
文本匹配
Milvus 中的文本匹配功能可根据特定术语进行精确的文档检索。该功能主要用于满足特定条件的过滤搜索,并可结合标量过滤来细化查询结果,允许在符合标量标准的向量内进行相似性搜索。
Phrase Match
短语匹配可让您搜索包含精确短语查询词的文档。默认情况下,单词必须以相同的顺序出现,并且彼此直接相邻。例如,查询 "机器人机器学习 "会匹配"...典型的机器人机器学习模型... "这样的文本,其中 "机器人"、"机器 "和 "学习 "依次出现,中间没有其他词。
将 Elasticsearch 查询转至 Milvus
基于 Apache Lucene 构建的 Elasticsearch 是领先的开源搜索引擎。然而,它在现代人工智能应用中面临着各种挑战,包括更新成本高、实时性差、分片管理效率低、非云原生设计以及资源需求过高。作为云原生向量数据库,Milvus 通过解耦存储和计算、高效的高维数据索引以及与现代基础设施的无缝集成,克服了这些问题。…
搜索迭代器
ANN Search 对单次查询可调用的实体数量有最大限制,因此仅使用基本 ANN Search 可能无法满足大规模检索的需求。对于 topK 超过 16,384 的 ANN Search 请求,建议考虑使用 SearchIterator。本节将介绍如何使用 SearchIterator 以及相关注意事项。
使用 Partition Key
Partition Key 是一种基于 Partition 的搜索优化解决方案。通过指定一个特定的标量字段作为 Partition Key,并在搜索过程中根据 Partition Key 指定过滤条件,可以将搜索范围缩小到几个 Partition,从而提高搜索效率。本文将介绍如何使用 Partition Key 及相关注意事项。
Reranker
混合搜索通过多个同时进行的 ANN 搜索获得更精确的搜索结果。多次搜索会返回多组结果,这就需要 Reranking 策略来帮助合并结果并进行 rerank,并返回一组结果。本指南将介绍 Milvus 支持的重排策略,并提供选择适当重排策略的提示。