文档菜单
文档主页
/
MongoDB地图集
////

knn贝塔

在本页上

  • 定义
  • 语法
  • 选项
  • 行为
  • 示例
knn贝塔

这个knn贝塔操作员使用分层导航小世界执行语义的算法搜索。你可以使用地图集搜索支持kNN(千牛顿)查询以搜索与选定产品类似的内容,搜索用于图像等。

knn贝塔具有以下语法:

1{
2$搜索以下为: {
“索引”以下为: “<索引名>”, //可选,默认为“默认”
4 “knnBeta”以下为: {
5 “矢量”以下为: [<数字数组>],
6 “路径”以下为: “<现场搜索>”,
7 “过滤器”以下为: {<特定过滤器>},
8 “k”以下为:<数字>,
9 “得分”以下为: {<选项>}
10 }
11 }
12}
字段
类型
描述
必要性
滤波器
文件
任何地图集搜索 操作人员以筛选基于元数据或特定搜索条件的文档可以帮助缩小矢量搜索的范围。
可选
k个
要返回的最近邻居的数量。您可以指定一个数字大于要返回的文档数(美元限额)以提高准确性。
要求的
路径
一串
已编制索引knn矢量type字段进行搜索。请参见路径构造了解更多信息。
要求的
分数
文件
在结果中分配给匹配文档的分数。学习更多信息,请参阅得分行为
可选
矢量
数字数组
的数字数组BSON公司类型整数双重的那个表示查询向量。数组大小必须与数字匹配向量的尺寸在中指定指数用于字段。
要求的

你可以跑步kNN(千牛顿)针对字段的查询被索引为地图集搜索类型knn矢量只有。

你可以使用美元限额之后$搜索阶段限制中的文档数knn贝塔查询结果。我们建议为设置值k个高于的值美元限额。这种要求过高的模式是在您的近似最近邻搜索。经验上,我们已经看到5-10倍的乘数对于许多用例来说都很好,但我们建议在您的特定数据集上对此进行调优。

例子

以下查询查找150查询的最近邻居和将剩余结果数限制为50

1数据库<集合>.agregate({
2 “$搜索”以下为: {
“knnBeta”以下为: {
4 “矢量”以下为:<数字数组到搜索>,
5 “路径”以下为:<索引字段到搜索>,
6 “k”以下为: 150
7 }
8 }
9},
10{
11 “$限制”以下为: 50
12})

要提高查询性能,请使用$项目阶段到选择要在结果中返回的字段,除非您需要结果中的字段。我们建议排除这个$项目阶段。

您可以使用分数带有的字段$元表达搜索得分在里面这个$项目阶段返回中文档的分数结果。

地图集搜索为结果打分kNN(千牛顿)查询在固定范围内01只有。对于余弦dotProduct(点产品) 相似之处,地图集搜索使用以下算法将分数标准化:

分数=(1+余弦/dot_product(v1,v2))/2

knn贝塔运算符必须是查询中的顶级运算符,并且因此,您不能使用knn贝塔操作员位于以下位置:

你不能使用knn贝塔运算符查询使用索引的字段矢量搜索类型索引。你不能使用这个$搜索 分类选项knn贝塔操作员。

我们不建议为您的地图集搜索结果使用$skip(跳过)美元限额之后$搜索阶段。

以下查询搜索示例示例视频嵌入视频集合,使用knn贝塔操作员。查询搜索绘制_嵌入字段,其中包含使用OpenAI创建的嵌入文本嵌入-ada-002嵌入模型。如果您添加了样品收集到您的阿特拉斯集群和创建了示例索引定义对于集合,您可以切换到样本_传单数据库并运行对集合执行以下查询。

 在里面