我有一个名为“vectormodels”的容器,其中包含
BgBomVectorModel
类型的项目。 My task is to return an array of BgBomVectorItem.
每个模型由 200 个 BgBomVectorItem 元素组成,容器总共包含 1000 个模型。我知道我需要的具体模型,因为我的客户将根据其 ID 选择模型。但是,它们仅需要所选模型中的 5 或 6 个 BgBomVectorItem 元素。因此,我需要在数组内执行向量搜索。
public class BgBomVectorModel
{
[VectorStoreRecordKey]
[JsonProperty(PropertyName = "id")]
public string Id { get; set; } //<- will select by id
public List<BgBomVectorItem> BomItemsInformation { get; set; } //<- For this need Vectore Search
}
public class BgBomVectorItem
{
[VectorStoreRecordKey]
public string id { get; set; }
[VectorStoreRecordData(IsFullTextSearchable = true)]
public string Information { get; set; }
//Vector Embedding
[VectorStoreRecordVector(4, DistanceFunction.EuclideanDistance, IndexKind.Flat)]
public ReadOnlyMemory<float> DescriptionEmbedding { get; set; }
}
我尝试在 CosmosDB 容器中执行向量搜索,特别是在每个 BgBomVectorModel 内的 BgBomVectorItem 元素数组中进行搜索。但是,到目前为止,我发现的大多数示例仅显示容器集合内的矢量搜索,而不是像我的例子那样显示对象内的矢量搜索。我原本期望根据特定模型的 ID 检索 BgBomVectorItem 元素的子集(5 或 6 个项目),但似乎当前的索引策略可能会阻止搜索在对象内正常工作。
这看起来合适吗? 1-首先通过id获取BgBomVectorModel 2- 使用 BgBomVectorModel 的 BgBomVectorItem 列表进行搜索并找到最匹配的几个?
如果是这样,只为 BomItemsInformation 列表编写一个查询怎么样?
SELECT TOP 10 c.id, VectorDistance(c.DescriptionEmbedding , [1,2,3]) AS SimilarityScore
FROM c --(c is BomItemsInformation, the list)
ORDER BY VectorDistance(c.DescriptionEmbedding , [1,2,3])