口碑好的专业网站建设,网页设计模板素材营销型首页,瑞诺国际的员工数量,模板云网站建设目录
向量搜索#xff08;Vector Search#xff09;
支持的向量类型
向量搜索选项
VectorProperty
Top 和 Skip
IncludeVectors
Filter
小结 Semantic Kernel 提供了向量存储#xff08;Vector Store#xff09;抽象层中的向量搜索功能#xff0c;支持多种选项如过…目录向量搜索Vector Search支持的向量类型向量搜索选项VectorPropertyTop 和 SkipIncludeVectorsFilter小结Semantic Kernel 提供了向量存储Vector Store抽象层中的向量搜索功能支持多种选项如过滤、分页等。本文将详细介绍其用法。向量搜索Vector SearchSearchAsync方法允许基于已向量化的数据进行搜索。该方法接收一个向量和可选的VectorSearchOptionsTRecord作为输入适用于以下类型IVectorSearchableTRecordVectorStoreCollectionTKey, TRecord注意VectorStoreCollectionTKey, TRecord实现了IVectorSearchableTRecord。如下是VectorStoreCollection类的定义:public abstract class VectorStoreCollectionTKey, TRecord : IVectorSearchableTRecord, IDisposable where TKey : notnull where TRecord : class { ..... }支持的向量类型SearchAsync的向量参数为泛型类型。每个数据存储支持的向量类型不同请参阅各连接器文档。⚠️ 搜索向量类型必须与目标向量类型一致。例如同一条记录中有两个不同类型的向量需确保提供的搜索向量与目标向量类型匹配。若有多个向量可通过VectorProperty指定目标。向量搜索选项通过VectorSearchOptionsTRecord可配置以下选项VectorProperty指定要搜索的向量属性。如果未指定且模型仅包含一个向量则使用该向量。若没有或有多个向量而未指定则会抛出异常。public async IAsyncEnumerable(Hotel Record, double? Score) SearchByTextAsync( string query, int topK 5, CancellationToken ct default) { var queryVector await _emb.CreateAsync(query, ct); var col GetCollection(); var options new VectorSearchOptionsHotel { //Filter h h.HotelName Tokyo, VectorProperty h h.DescriptionEmbedding, Skip 0, IncludeVectors false }; awaitforeach (var r in col.SearchAsync(queryVector, topK, options, ct)) { yield return (r.Record, r.Score); } }Top 和 Skip用于分页。Top返回前 N 条结果Skip跳过前 N 条结果var vectorSearchOptions new VectorSearchOptionsProduct { Skip 40 }; var searchResult collection.SearchAsync(searchVector, top: 20, vectorSearchOptions);IncludeVectors指定是否返回结果中的向量属性。默认值false节省带宽与处理成本若为true则返回完整向量数据var vectorSearchOptions new VectorSearchOptionsProduct { IncludeVectors true };Filter用于在向量搜索前先对记录进行过滤。好处降低延迟和计算开销用于访问控制过滤掉用户无权限的数据⚠️ 很多存储需要字段设置为IsIndexed true才能参与过滤。public async IAsyncEnumerable(Hotel Record, double? Score) SearchByTextAsync( string query, int topK 5, CancellationToken ct default) { var queryVector await _emb.CreateAsync(query, ct); var col GetCollection(); var options new VectorSearchOptionsHotel { Filter h h.HotelName Tokyo, VectorProperty h h.DescriptionEmbedding, Skip 0, IncludeVectors false }; awaitforeach (var r in col.SearchAsync(queryVector, topK, options, ct)) { yield return (r.Record, r.Score); } }小结Semantic Kernel 的 Vector Store 连接器提供了强大的向量搜索功能SearchAsync执行相似度搜索VectorProperty选择目标向量Top / Skip支持分页IncludeVectors是否返回向量Filter先过滤后搜索提高性能和安全性这些功能让你能够在不同存储如 InMemory、Qdrant 等上轻松实现向量化搜索和检索。引入地址