You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LiteDB Vector功能疑问:如何获取计算得出的匹配分数?

获取LiteDB TopKNear查询的向量匹配分数

在LiteDB预发布版的向量功能中,要获取TopKNear查询的匹配分数,只需在调用TopKNear(...)之后链式调用IncludeScore()方法即可:

文档型查询示例

// 执行带分数返回的向量查询
var topResults = col.Query()
    .TopKNear("vector_field", targetVector, k: 10)
    .IncludeScore()
    .ToList();

// 遍历结果提取分数
foreach (var doc in topResults)
{
    var matchScore = doc.Get<double>("_score"); // 默认分数字段名为"_score"
    // 处理文档逻辑...
}

自定义分数字段名

如果不想使用默认的_score字段名,可给IncludeScore()传入自定义字段名:

var results = col.Query()
    .TopKNear("vector_field", targetVector, k: 5)
    .IncludeScore("match_score")
    .ToList();

// 提取自定义字段的分数
var score = doc.Get<double>("match_score");

强类型实体场景

若使用强类型实体,需在实体类中添加对应分数属性,再通过表达式指定映射:

public class Product
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public float[] Embedding { get; set; }
    public double MatchScore { get; set; } // 存储匹配分数的属性
}

// 查询并映射分数到实体属性
var products = col.Query<Product>()
    .TopKNear(p => p.Embedding, targetVector, k: 5)
    .IncludeScore(p => p.MatchScore)
    .ToList();

// 直接访问实体的分数属性
foreach (var product in products)
{
    Console.WriteLine($"产品:{product.Name},匹配分数:{product.MatchScore}");
}

IncludeScore()是预发布版LiteDB为向量查询新增的专属方法,会将向量相似度计算的分数直接注入返回结果,无需额外手动计算。

内容的提问来源于stack exchange,提问作者Christian Riedl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:03:11