如何用Microsoft.Extensions.AI实现向量搜索?

摘要:今天简单看了看,基于Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData构建向量搜索。给大家分享分享。 首先,创建.NET 控制台应用,然后执行以下开发步骤 通过为数据集生成嵌入
今天简单看了看,基于Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData构建向量搜索。给大家分享分享。 首先,创建.NET 控制台应用,然后执行以下开发步骤 通过为数据集生成嵌入内容来创建和填充向量存储。 为用户提示生成嵌入内容。 使用用户提示嵌入查询矢量存储。 显示矢量搜索的相关结果。 dotnet new console -o VectorDataAIDemo 切换到以上 VectorDataAIDemo 目录下,安装以下Nuget包 dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.VectorData.Abstractions dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets dotnet add package System.Linq.AsyncEnumerable Microsoft.Extensions.AI.OpenAI为 OpenAI 兼容的模型或终结点提供 AI 抽象。 此库还包括 OpenAI 服务 API 的官方OpenAI库作为依赖项。 Microsoft.Extensions.VectorData.Abstractions启用对向量存储的 Create-Read-Update-Delete (CRUD) 和搜索操作。 Microsoft.SemanticKernel.Connectors.InMemory提供内存中向量存储类来保存可查询向量数据记录。 Microsoft.Extensions.Configuration提供基于键值对的配置实现。 Microsoft.Extensions.Configuration.UserSecrets是为Microsoft.Extensions.Configuration提供的用户机密配置程序实现。 新建Class:CloudServiceWiki using Microsoft.Extensions.VectorData; namespace VectorDataAIDemo; internal class CloudServiceWiki { [VectorStoreKey] public int Key { get; set; } [VectorStoreData] public string Name { get; set; } [VectorStoreData] public string Description { get; set; } [VectorStoreVector( Dimensions: 384, DistanceFunction = DistanceFunction.CosineSimilarity)] public ReadOnlyMemory<float> Vector { get; set; } } Microsoft.Extensions.VectorData属性,例如VectorStoreKeyAttribute,会影响在向量存储中使用时每个属性的处理方式。 该Vector属性存储生成的嵌入,表示Description值在矢量搜索中的语义含义。
阅读全文