技术速递:如何利用 Microsoft.Extensions.VectorData 与 Qdrant、Azure AI 搜索实现高效语义搜索

在当今信息爆炸的时代,传统的基于关键字的搜索方式已无法满足用户对准确性和相关性的需求。为此,语义搜索应运而生,其通过理解查询意图与文档内容的深层次关联性,提升了数据检索的效率与精度。近期,微软推出的 Microsoft.Extensions.VectorData 为 .NET 开发者提供了全新工具,以便更方便地整合向量数据和语义搜索。本文将深入探讨如何通过 Qdrant 和 Azure AI 搜索结合使用 Microsoft.Extensions.VectorData,实现高效的语义搜索功能。

Microsoft.Extensions.VectorData 介绍

Microsoft.Extensions.VectorData 是一套为 .NET 应用程序设计的库,旨在管理基于向量的数据。这些库为开发者提供了一个统一的 C# 抽象层,以与向量存储进行交互,使得嵌入数据的处理和相似度查询的执行变得更加高效。具体来说,VectorData 管理向量生成、存储以及查询等多个环节,极大地方便了开发者在语义搜索领域的应用。

Qdrant 概述

Qdrant 是一个高性能的向量相似性搜索引擎,特别适合处理大规模数据集的语义搜索需求。它提供简洁的 API 和灵活的部署选项,开发者可以轻松在本地或云端环境中运行 Qdrant。通过与 Microsoft.Extensions.VectorData 集成,开发者可以利用 .NET 环境下的工具高效地执行基于向量的查询。利用 Ollama 模型生成嵌入,结合 Qdrant 的性能优势,开发者可以实现极其灵活和高效的语义搜索解决方案。

Azure AI 搜索简介

Azure AI 搜索是微软的 AI 驱动的搜索即服务平台,将传统的搜索功能与语义理解和向量搜索结合在一起。它为企业提供了强大的搜索功能,能够处理复杂的数据索引和查询。作为一个高度可扩展的解决方案,Azure AI 搜索允许开发者通过简单的 API 与其功能集成,从而快速获取准确的搜索结果。

语义搜索实现案例

本节将展示如何在本地使用 Qdrant 实现语义搜索,以及如何利用 Azure AI 搜索增强企业级应用的检索性能。首先,我们需要在本地环境中运行 Qdrant 容器。通过 Docker,可以使用以下命令启动 Qdrant 实例:

docker run -p 6333:6333 -p 6334:6334 -v $(pwd)/qdrant_storage:/qdrant/storage:z qdrant/qdrant

接下来,通过 Microsoft.Extensions.VectorData 和 Qdrant 的集成,我们可以创建一个简单的控制台应用程序,演示如何存储并检索嵌入数据。例如,以下代码片段展示了如何设置向量存储并执行语义查询:

using Microsoft.Extensions.AI; using Microsoft.Extensions.VectorData; using Microsoft.SemanticKernel.Connectors.Qdrant; using Qdrant.Client; var vectorStore = new QdrantVectorStore(new QdrantClient("localhost")); // 获取电影列表 var movies = vectorStore.GetCollection<ulong, MovieVector<ulong>>("movies"); await movies.CreateCollectionIfNotExistsAsync(); var movieData = MovieFactory<ulong>.GetMovieVectorList(); // 生成嵌入并存储 IEmbeddingGenerator<string, Embedding<float>> generator = new OllamaEmbeddingGenerator(new Uri("http://localhost:11434/"), "all-minilm"); foreach (var movie in movieData) { movie.Vector = await generator.GenerateEmbeddingVectorAsync(movie.Deion); await movies.UpsertAsync(movie); } // 执行搜索 var query = "一部包含巨人和龙的家庭友好的电影"; var queryEmbedding = await generator.GenerateEmbeddingVectorAsync(query); var results = await movies.VectorizedSearchAsync(queryEmbedding, new VectorSearchOptions { Top = 2 });

以上代码展示了如何利用嵌入与查询向量进行向量化搜索,获取与用户意图高度相关的电影推荐。

Azure AI 搜索案例实现

通过 Azure AI 搜索,我们可以将相同的概念扩展到云端。首先,需要在 Azure 门户中创建 Azure AI 搜索服务。然后,使用以下代码进行电影向量的存储与检索:

using Microsoft.Extensions.AI; using Microsoft.Extensions.VectorData; using Azure; using Azure.Search.Documents.Indexes; using Microsoft.SemanticKernel.Connectors.AzureAISearch; // 设置搜索索引客户端 var client = GetSearchIndexClient(); var vectorStore = new AzureAISearchVectorStore(searchIndexClient: client); // 获取电影列表并存储向量 var movies = vectorStore.GetCollection<string, MovieVector<string>>("movies"); await movies.CreateCollectionIfNotExistsAsync(); var movieData = MovieFactory<string>.GetMovieVectorList(); foreach (var movie in movieData) { movie.Vector = await generator.GenerateEmbeddingVectorAsync(movie.Deion); await movies.UpsertAsync(movie); } // 执行搜索 var query = "一部包含巨人和龙的家庭友好的电影"; var queryEmbedding = await generator.GenerateEmbeddingVectorAsync(query);

这段代码展示了如何在 Azure AI 搜索中设置索引,存储并检索向量数据,确保企业可以利用云端的强大计算能力进行高效的语义搜索。

未来发展趋势

随着语义搜索技术的不断进步和发展,未来将会涌现出更多创新的应用场景。开发者能够利用 Microsoft.Extensions.VectorData 以及可能的多种连接器,如 SQLite 和 Pinecone,构建更加灵活且高效的搜索引擎。此外,与 Elasticsearch 等其他搜索平台的集成,将继续推动语义搜索的普及和应用范围。通过深入理解用户需求与数据语义,开发者将能更好地提升应用的用户体验和业务价值。

结论

通过结合 Microsoft.Extensions.VectorData、Qdrant 和 Azure AI 搜索,开发者不仅能够实现简单高效的语义搜索解决方案,还能在此基础上进行不断的创新和扩展。这些工具的结合使得面对复杂检索需求的开发项目变得更加灵活与高效,为用户提供了更具价值的搜索体验。

在我使用了数十家AI绘画、AI生文工具后,强烈推荐给大家以下这个工具——简单AI。简单AI是搜狐旗下的全能型AI创作助手,包括AI绘画、文生图、图生图、AI文案、AI头像、AI素材、AI设计等。可一键生成创意美图,3步写出爆款文章。网站提供生成创意美图、动漫头像、种草笔记、爆款标题、活动方案等多项AI创作功能。工具链接:

国漫女神、游戏美女随心爆改,一键定制你的专属AI动漫女神,点击立即生成→ 返回搜狐,查看更多

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
作者声明:本文包含人工智能生成内容
阅读 ()
大家都在看
我来说两句
0人参与, 0条评论
登录并发表