news 2026/8/4 6:37:21

Semantic Kernel使用连接器进行向量搜索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Semantic Kernel使用连接器进行向量搜索

目录

向量搜索(Vector Search)

支持的向量类型

向量搜索选项

VectorProperty

Top 和 Skip

IncludeVectors

Filter

小结


Semantic Kernel 提供了向量存储(Vector Store)抽象层中的向量搜索功能,支持多种选项如过滤、分页等。本文将详细介绍其用法。

向量搜索(Vector Search)

SearchAsync方法允许基于已向量化的数据进行搜索。该方法接收一个向量和可选的VectorSearchOptions<TRecord>作为输入,适用于以下类型:

  • IVectorSearchable<TRecord>

  • VectorStoreCollection<TKey, TRecord>

注意VectorStoreCollection<TKey, TRecord>实现了IVectorSearchable<TRecord>

如下是VectorStoreCollection类的定义:

public abstract class VectorStoreCollection<TKey, TRecord> : IVectorSearchable<TRecord>, IDisposable where TKey : notnull where TRecord : class { ..... }

支持的向量类型

SearchAsync的向量参数为泛型类型。每个数据存储支持的向量类型不同,请参阅各连接器文档。

⚠️ 搜索向量类型必须与目标向量类型一致。例如,同一条记录中有两个不同类型的向量,需确保提供的搜索向量与目标向量类型匹配。若有多个向量,可通过VectorProperty指定目标。


向量搜索选项

通过VectorSearchOptions<TRecord>可配置以下选项:

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 VectorSearchOptions<Hotel> { //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 VectorSearchOptions<Product> { Skip = 40 }; var searchResult = collection.SearchAsync(searchVector, top: 20, vectorSearchOptions);

IncludeVectors

指定是否返回结果中的向量属性。

  • 默认值:false(节省带宽与处理成本)

  • 若为true,则返回完整向量数据

var vectorSearchOptions = new VectorSearchOptions<Product> { 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 VectorSearchOptions<Hotel> { 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 等)上轻松实现向量化搜索和检索。

引入地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 14:25:06

Java毕设项目推荐-基于Springboot的乡政府管理系统设计与实现基于springboot的村务管理系统的设计与实现【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/4 5:33:38

2025冬至继上

如果把生活类比成可迭代的对象&#xff0c;我的生活又到哪个版本了&#xff1f;还有什么可优化的地方吗&#xff1f;客观的事物不以人的意志为转移&#xff0c;怎么才能使自己的生活贴近事物发展的自然规律&#xff0c;使自己更贴近 按规律办事&#xff1f;古人云&#xff0c;头…

作者头像 李华
网站建设 2026/8/4 3:34:32

5.A.swift 使用指南

家好&#xff0c;我是K哥。一名独立开发者&#xff0c;同时也是Swift开发框架【Aquarius】的作者&#xff0c;悦记和爱寻车app的开发者。Aquarius开发框架旨在帮助独立开发者和中小型团队&#xff0c;完成iOS App的快速实现与迭代。使用框架开发将给你带来简单、高效、易维护的…

作者头像 李华
网站建设 2026/7/31 21:41:43

3个常见的降AI率工具大汇总(含免费降AI额度),AI率降到20以内!

临近毕业&#xff0c;好多学弟学妹都在问&#xff1a;有没有免费的降AI率工具&#xff1f; 一篇论文动不动10000、20000字&#xff0c;查重、查AI率、降重、降AIGC率&#xff0c;再查一次AIGC率。从写好论文到最后通过查重&#xff0c;最起码得好几百。 对学生来说&#xff0…

作者头像 李华
网站建设 2026/8/4 16:55:11

生产事故-Caffeine缓存误用之临下班的救赎

0x01 事故背景2025年7月9日17时有余&#xff0c;笔者正准备结束疲惫的一天&#xff0c;关机走人之时&#xff0c;桌面右下角安静了一天的内部通讯软件图标突然亮起&#xff0c;内心顿感不妙……打开一看&#xff0c;原来是运维小哥找过来了&#xff0c;说是某接口服务连续多次调…

作者头像 李华
网站建设 2026/8/1 5:07:59

大模型RL后训练扩展定律:66组实验揭示的幂律关系与效率饱和现象

中国科学技术大学与上海人工智能实验室联合研究基于Qwen2.5全系列模型(0.5B-72B)进行66组控制变量实验&#xff0c;首次系统探究RL后训练扩展定律。研究发现测试损失与计算量、数据量呈对数线性关系&#xff0c;可总结为幂律公式&#xff1b;同时定量揭示强化学习效率随参数量增…

作者头像 李华