<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .NET 原生駕馭 AI 新基建實(shí)戰(zhàn)系列(四):Qdrant ── 實(shí)時(shí)高效的向量搜索利器

      向量數(shù)據(jù)庫(kù)作為一種專為現(xiàn)代AI應(yīng)用設(shè)計(jì)的新型存儲(chǔ)技術(shù),能夠高效地管理和檢索高維數(shù)據(jù),成為智能應(yīng)用開發(fā)中的關(guān)鍵基礎(chǔ)設(shè)施。本文將深入探討 Qdrant 這個(gè)開源、高性能的向量數(shù)據(jù)庫(kù),重點(diǎn)介紹其如何與 .NET 生態(tài)系統(tǒng)結(jié)合,為開發(fā)者提供強(qiáng)大的工具支持。我們將從安裝配置到代碼實(shí)現(xiàn),再到實(shí)際應(yīng)用場(chǎng)景,全面展示 Qdrant 在 .NET 中的使用方式。


      一、Qdrant 簡(jiǎn)介

      Qdrant 是一款專為 AI 和 ML 應(yīng)用打造的開源向量數(shù)據(jù)庫(kù),旨在提供高效的向量存儲(chǔ)和相似性搜索能力。它以高性能、靈活性和易用性為核心設(shè)計(jì)理念,支持實(shí)時(shí)查詢、元數(shù)據(jù)過濾和分布式部署,非常適合需要處理大規(guī)模高維數(shù)據(jù)的場(chǎng)景。無論是語義搜索、推薦系統(tǒng)還是多媒體內(nèi)容檢索,Qdrant 都能為開發(fā)者提供可靠的支持。

      1.1 Qdrant 的核心特點(diǎn)

      Qdrant 的獨(dú)特優(yōu)勢(shì)體現(xiàn)在以下幾個(gè)方面:

      • 開源與高性能:Qdrant 遵循 Apache 2.0 許可,完全開源,開發(fā)者可以自由使用和定制。它針對(duì)高維向量數(shù)據(jù)進(jìn)行了深度優(yōu)化,確保在大規(guī)模數(shù)據(jù)集上的查詢性能。
      • 實(shí)時(shí)性與靈活性:支持實(shí)時(shí)向量搜索,并允許在查詢時(shí)結(jié)合元數(shù)據(jù)過濾,滿足復(fù)雜的業(yè)務(wù)邏輯需求。
      • 分布式架構(gòu):支持水平擴(kuò)展,可以部署在多節(jié)點(diǎn)集群上,提升系統(tǒng)的可伸縮性和可靠性。
      • 多語言支持:通過 REST API 和 gRPC 接口,Qdrant 能夠與多種編程語言無縫集成,包括通過 C# 客戶端支持 .NET。
      • 易于集成:官方提供的 Qdrant.Client NuGet 包讓 Qdrant 在 .NET 項(xiàng)目中的接入變得簡(jiǎn)單高效。

      1.2 Qdrant 的核心概念

      Qdrant 是一個(gè)開源向量數(shù)據(jù)庫(kù),專為存儲(chǔ)、搜索和管理高維向量設(shè)計(jì),廣泛應(yīng)用于人工智能和機(jī)器學(xué)習(xí)領(lǐng)域,尤其是嵌入向量存儲(chǔ)和相似性搜索。以下是其核心概念的整理:

      • 嵌入(Embeddings)

      嵌入是將原始數(shù)據(jù)(如文本、圖像)轉(zhuǎn)化為高維向量的過程,這些向量捕捉數(shù)據(jù)的語義信息,是向量數(shù)據(jù)庫(kù)的核心數(shù)據(jù)類型。

      • 相似性搜索(Similarity Search)

      相似性搜索是查找與查詢向量最相似的向量的過程,Qdrant 使用近似最近鄰(ANN)算法實(shí)現(xiàn)高效搜索。

      • 集合(Collections)

      集合是向量的邏輯分組,類似于傳統(tǒng)數(shù)據(jù)庫(kù)中的表,包含特定配置(如向量維度和距離度量)。

      • 點(diǎn)(Points)

      點(diǎn)是集合中的單個(gè)條目,包含向量、唯一 ID 和可選的元數(shù)據(jù)(負(fù)載),是存儲(chǔ)和檢索的基本單元。

      • 負(fù)載(Payload)

      負(fù)載是與向量關(guān)聯(lián)的元數(shù)據(jù)(JSON 格式),提供額外上下文并支持搜索時(shí)的過濾。

      • 距離度量(Distance Metrics)

      距離度量用于衡量向量間的相似性,Qdrant 支持歐幾里得距離、余弦相似度和點(diǎn)積等多種方式。

      • 索引(Indexing)

      索引是加速向量搜索的數(shù)據(jù)結(jié)構(gòu),Qdrant 使用 HNSW(層次可導(dǎo)航小世界)算法實(shí)現(xiàn)高效近似最近鄰搜索。

      • 過濾(Filtering)

      過濾允許基于負(fù)載元數(shù)據(jù)添加搜索條件,實(shí)現(xiàn)更精確的檢索結(jié)果。

      • API

      Qdrant 提供 RESTful 和 gRPC API,用于向量插入、搜索和集合管理等操作。

      • 分布式部署(Distributed Deployment)

      Qdrant 支持分布式部署,多節(jié)點(diǎn)協(xié)同處理大規(guī)模數(shù)據(jù)和高并發(fā)請(qǐng)求,提升可擴(kuò)展性和性能。

      1.3 Qdrant 的工作機(jī)制

      Qdrant 的核心在于其高效的向量索引和搜索技術(shù)。它采用了 HNSW(Hierarchical Navigable Small World)等先進(jìn)算法來構(gòu)建向量索引,支持多種距離度量方式,如歐幾里得距離、余弦相似度和內(nèi)積。開發(fā)者可以將文本、圖像或其他數(shù)據(jù)的嵌入(embeddings)存儲(chǔ)在 Qdrant 中,通過相似性搜索快速找到最相關(guān)的結(jié)果。這種機(jī)制特別適用于需要理解數(shù)據(jù)深層語義的場(chǎng)景,與傳統(tǒng)的關(guān)鍵字匹配方式形成了鮮明對(duì)比。

      與 Chroma 類似,Qdrant 的設(shè)計(jì)也強(qiáng)調(diào)了易用性和性能,但它在分布式支持和實(shí)時(shí)性上更進(jìn)一步,為需要高可用性和低延遲的應(yīng)用提供了額外的優(yōu)勢(shì)。


      二、在 .NET 中安裝與配置 Qdrant 環(huán)境

      要在 .NET 項(xiàng)目中使用 Qdrant,開發(fā)者需要安裝其 C# 客戶端庫(kù)并完成基本配置。以下是詳細(xì)的步驟,確保從零開始的開發(fā)者也能順利上手。

      2.1 安裝 Qdrant.Client NuGet 包

      Qdrant 提供了官方的 C# 客戶端庫(kù),可以通過 NuGet 包管理器輕松安裝,注意以下包存在預(yù)覽版,所以需要加上預(yù)覽標(biāo)識(shí)

      • Qdrant.Client
      • Microsoft.SemanticKernel.Connectors.Qdrant
      • Microsoft.Extensions.AI
      • Microsoft.Extensions.AI.Ollama
      1. 命令行安裝: 在 Visual Studio 的“包管理器控制臺(tái)”中運(yùn)行以下命令:

        Install-Package Qdrant.Client
        Install-Package Microsoft.SemanticKernel.Connectors.Qdrant  --prerelease
        Install-Package Microsoft.Extensions.AI  --prerelease
        Install-Package Microsoft.Extensions.AI.Ollama  --prerelease
      2. 圖形界面安裝

        • 右鍵點(diǎn)擊 .NET 項(xiàng)目,選擇“管理 NuGet 包”。
        • 在搜索框中輸入 Qdrant.Client等包,選擇官方包。
        • 點(diǎn)擊“安裝”,等待安裝完成。

      安裝成功后,項(xiàng)目會(huì)自動(dòng)引用 Qdrant.Client,為后續(xù)開發(fā)奠定基礎(chǔ)。

      2.2 配置 Qdrant 客戶端

      在使用 Qdrant 之前,需要初始化一個(gè) QdrantClient 實(shí)例,并指定連接參數(shù)。以下是一個(gè)簡(jiǎn)單的配置示例:

      using Qdrant.Client;
      
      var vectorStore = new QdrantVectorStore(new QdrantClient("localhost"));
      • host:Qdrant 服務(wù)的地址,默認(rèn)值為 localhost。如果服務(wù)部署在遠(yuǎn)程服務(wù)器上,需要替換為實(shí)際 IP 或域名。
      • port:Qdrant 的默認(rèn)端口為 6334,可根據(jù)實(shí)際部署調(diào)整。

      2.3 啟動(dòng) Qdrant 服務(wù)

      Qdrant 客戶端需要連接到一個(gè)運(yùn)行中的 Qdrant 實(shí)例。開發(fā)者可以通過以下方式啟動(dòng)服務(wù):

      • Docker 部署: 使用以下命令在本地運(yùn)行 Qdrant:

        docker run -d -p 6333:6333 -p 6334:6334 qdrant/qdrant
      • 手動(dòng)運(yùn)行: 從 Qdrant 的 GitHub 倉(cāng)庫(kù)下載二進(jìn)制文件,解壓后執(zhí)行:

        ./qdrant

      服務(wù)啟動(dòng)后,.NET 客戶端即可通過指定的地址和端口與之通信。與 Chroma 類似,Qdrant 的安裝過程簡(jiǎn)單明了,但其 Docker 支持和分布式特性為大規(guī)模部署提供了更多選擇。

      • UI界面

      大家可以打開地址:http://localhost:6333/dashboard#/welcome,查看UI界面

      2.4 安裝Ollama并配置相關(guān)模型

      • 安裝mxbai-embed-large用于生成嵌入向量

      三、Qdrant 在 .NET 中的代碼示例

      為了讓開發(fā)者快速掌握 Qdrant 的使用方法,以下提供了一系列實(shí)用的代碼示例,涵蓋創(chuàng)建集合、添加數(shù)據(jù)、執(zhí)行查詢和元數(shù)據(jù)過濾等核心功能。

      3.1 創(chuàng)建集合

      在 Qdrant 中,集合(Collection)是存儲(chǔ)向量的基本單位。以下代碼展示了如何創(chuàng)建一個(gè)名為skhotels的集合:

      首先需要?jiǎng)?chuàng)建Hotel實(shí)體,注意DescriptionEmbedding字段的Dimensions數(shù)值為384,這與我們使用的模型有關(guān),模型發(fā)生變化,這個(gè)數(shù)值也要發(fā)生變化。

      using Microsoft.Extensions.VectorData;
      
      namespace QdrantVectorTest;
      
      /// <summary>
      /// 
      /// </summary>
      public class Hotel
      {
          /// <summary>
          /// Gets or sets the hotel identifier.
          /// </summary>
          /// <value>
          /// The hotel identifier.
          /// </value>
          [VectorStoreRecordKey]
          public ulong HotelId { get; set; }
      
          /// <summary>
          /// Gets or sets the name of the hotel.
          /// </summary>
          /// <value>
          /// The name of the hotel.
          /// </value>
          [VectorStoreRecordData(IsFilterable = true)]
          public string HotelName { get; set; }
      
          /// <summary>
          /// Gets or sets the description.
          /// </summary>
          /// <value>
          /// The description.
          /// </value>
          [VectorStoreRecordData(IsFullTextSearchable = true)]
          public string Description { get; set; }
      
          /// <summary>
          /// Gets or sets the description embedding.
          /// </summary>
          /// <value>
          /// The description embedding.
          /// </value>
          [VectorStoreRecordVector(Dimensions: 384, DistanceFunction.CosineSimilarity, IndexKind.Hnsw)]
          public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
      
          /// <summary>
          /// Gets or sets the tags.
          /// </summary>
          /// <value>
          /// The tags.
          /// </value>
          [VectorStoreRecordData(IsFilterable = true)]
          public string[] Tags { get; set; }
      }
      using Microsoft.Extensions.AI;
      using Microsoft.SemanticKernel.Connectors.Qdrant;
      using Qdrant.Client;
      using QdrantVectorTest;
      #pragma warning disable SKEXP0001
      
      var vectorStore = new QdrantVectorStore(new QdrantClient("localhost"));
      var collection = vectorStore.GetCollection<ulong, Hotel>("skhotels");
      
      await collection.CreateCollectionIfNotExistsAsync();

      集合創(chuàng)建成功:

      3.2 添加向量嵌入生成算法

      這里通過Ollama使用all-minilm作為向量嵌入生成算法模型

      async Task<ReadOnlyMemory<float>> GenerateEmbeddingAsync(string descriptionText)
      {
          IEmbeddingGenerator<string, Embedding<float>> generator =
              new OllamaEmbeddingGenerator(new Uri("http://localhost:11434/"), "all-minilm");
      
          var embedding = await generator.GenerateEmbeddingVectorAsync(descriptionText);
      
          return embedding;
      }

      3.2 添加向量數(shù)據(jù)

      向集合中添加點(diǎn)(points)時(shí),需要指定 ID、向量和可選的元數(shù)據(jù)(payload)。以下示例展示了如何添加兩篇文檔的向量和元數(shù)據(jù):

      string descriptionText = "一個(gè)高檔的參加團(tuán)隊(duì)聚會(huì)的地方";
      ulong hotelId = 1;
      
      await collection.UpsertAsync(new Hotel
      {
          HotelId = hotelId,
          HotelName = "Bulgari",
          Description = descriptionText,
          DescriptionEmbedding = await GenerateEmbeddingAsync(descriptionText),
          Tags = new[] { "luxury", "pool" }
      });

      3.3 執(zhí)行相似性搜索

      通過向量查詢,可以找到與給定向量最相似的點(diǎn)。以下代碼展示了如何檢索與查詢向量最接近的兩篇文章:

      
      ReadOnlyMemory<float> searchVector = await GenerateEmbeddingAsync("我需要找一家高檔酒店");
      
      var searchResult = await collection.VectorizedSearchAsync(searchVector, new() { Top = 1 });
      
      await foreach (var record in searchResult.Results)
      {
          Console.WriteLine("描述信息: " + record.Record.Description);
          Console.WriteLine("匹配分?jǐn)?shù): " + record.Score);
      }

      輸出如下:


      四、Qdrant 應(yīng)用場(chǎng)景

      4.1 語義搜索系統(tǒng)

      在企業(yè)文檔管理系統(tǒng)中,傳統(tǒng)的關(guān)鍵字搜索難以捕捉用戶意圖的深層含義。通過將文檔內(nèi)容轉(zhuǎn)換為嵌入并存儲(chǔ)在 Qdrant 中,開發(fā)者可以實(shí)現(xiàn)語義搜索。例如,用戶輸入“如何提高團(tuán)隊(duì)協(xié)作效率”,系統(tǒng)能夠返回與團(tuán)隊(duì)管理、協(xié)作工具相關(guān)的內(nèi)容,而不僅僅是包含“效率”一詞的文檔。

      4.2 個(gè)性化推薦引擎

      在電商平臺(tái)中,Qdrant 可以存儲(chǔ)用戶行為和商品特征的向量表示。例如,將用戶的瀏覽歷史和商品描述轉(zhuǎn)換為嵌入,通過相似性搜索為用戶推薦相關(guān)產(chǎn)品。這種方法能夠捕捉用戶興趣的細(xì)微變化,提供更精準(zhǔn)的推薦體驗(yàn)。

      4.3 多媒體內(nèi)容檢索

      在圖像或視頻管理應(yīng)用中,Qdrant 可以存儲(chǔ)多媒體內(nèi)容的嵌入向量。例如,用戶上傳一張風(fēng)景照片,系統(tǒng)能夠快速返回視覺上相似的圖像,適用于內(nèi)容推薦、版權(quán)檢測(cè)等場(chǎng)景。與 Chroma 類似,Qdrant 在這一領(lǐng)域表現(xiàn)出色,但其分布式支持使其更適合處理大規(guī)模多媒體數(shù)據(jù)。

      4.4 智能問答系統(tǒng)

      在客戶支持應(yīng)用中,Qdrant 可以存儲(chǔ)常見問題及其答案的向量表示。用戶提問時(shí),系統(tǒng)通過向量搜索返回最匹配的答案,提升響應(yīng)速度和準(zhǔn)確性。這種應(yīng)用與 Chroma 的 NLP 場(chǎng)景類似,但 Qdrant 的實(shí)時(shí)性使其在高并發(fā)場(chǎng)景中更具優(yōu)勢(shì)。


      五、Qdrant 與 .NET 生態(tài)系統(tǒng)的集成

      Qdrant 不僅可以通過 C# 客戶端直接使用,還能與 .NET 生態(tài)中的其他工具深度結(jié)合,提升開發(fā)效率:

      • Semantic Kernel:微軟推出的 AI 開發(fā)框架支持與 Qdrant 集成,開發(fā)者可以將其作為向量存儲(chǔ),用于構(gòu)建復(fù)雜的 AI 工作流。
      • ASP.NET Core:通過依賴注入機(jī)制,Qdrant 客戶端可以輕松集成到 Web 應(yīng)用中,為實(shí)時(shí)智能功能提供支持。
      • Entity Framework 風(fēng)格的擴(kuò)展:借助 Microsoft.Extensions.VectorData,Qdrant 可以與 .NET 的標(biāo)準(zhǔn)化數(shù)據(jù)訪問接口協(xié)作,簡(jiǎn)化開發(fā)流程。

      這些集成特性與 Chroma 在 .NET 中的應(yīng)用方式相似,但 Qdrant 的分布式支持和 gRPC 接口為其帶來了額外的靈活性。


      六、性能優(yōu)化技巧

      為了在 .NET 中充分發(fā)揮 Qdrant 的潛力,開發(fā)者可以采用以下優(yōu)化策略:

      • 索引優(yōu)化:調(diào)整 HNSW 參數(shù)(如 mef_construction),在查詢速度和精度之間找到最佳平衡。
      • 分布式部署:對(duì)于大規(guī)模數(shù)據(jù),利用 Qdrant 的集群功能分片存儲(chǔ)和并行查詢,提升吞吐量。
      • 本地緩存:在 .NET 應(yīng)用中為熱點(diǎn)查詢添加緩存層,減少對(duì) Qdrant 的直接請(qǐng)求。

      這些技巧雖與 Chroma 的性能優(yōu)化建議有異曲同工之妙,但 Qdrant 的分布式特性為其在大規(guī)模場(chǎng)景中的優(yōu)化提供了更多可能性。


      七、Qdrant 的未來發(fā)展展望

      隨著向量數(shù)據(jù)庫(kù)在 AI 驅(qū)動(dòng)應(yīng)用中的重要性日益凸顯,Qdrant 作為一款開源項(xiàng)目展現(xiàn)出廣闊的前景:

      • 功能增強(qiáng):未來可能支持更多索引類型和距離度量,滿足多樣化的應(yīng)用需求。
      • 性能突破:通過算法優(yōu)化,進(jìn)一步提升大規(guī)模數(shù)據(jù)集的處理能力。
      • 云原生支持:推出官方托管服務(wù),降低部署門檻,為 .NET 開發(fā)者提供開箱即用的解決方案。
      • 生態(tài)融合:與 .NET 的深度集成可能帶來更多專用工具和文檔,提升開發(fā)體驗(yàn)。

      與 Chroma 的發(fā)展方向類似,Qdrant 也在不斷演進(jìn),但其分布式架構(gòu)和實(shí)時(shí)性為其在企業(yè)級(jí)應(yīng)用中贏得了一席之地。


      八、結(jié)語

      Qdrant 作為一款高性能、開源的向量數(shù)據(jù)庫(kù),為 .NET 開發(fā)者提供了一個(gè)強(qiáng)大的工具,用于構(gòu)建高效的智能應(yīng)用。從簡(jiǎn)單的安裝配置到豐富的代碼示例,再到多樣化的應(yīng)用場(chǎng)景,Qdrant 展示了其在語義搜索、推薦系統(tǒng)和多媒體檢索等領(lǐng)域的潛力。通過與 .NET 生態(tài)系統(tǒng)的無縫集成,開發(fā)者可以快速將其融入現(xiàn)有項(xiàng)目,釋放 AI 技術(shù)的價(jià)值。未來,隨著 Qdrant 的持續(xù)發(fā)展,其在 .NET 社區(qū)中的影響力將進(jìn)一步擴(kuò)大,為智能應(yīng)用的創(chuàng)新提供更多可能。

      posted @ 2025-04-22 10:39  AI·NET極客圈  閱讀(324)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 免费吃奶摸下激烈视频| 国产精品亚洲二区亚瑟| 亚洲人成网站在线无码| 2019国产精品青青草原| 欧美日韩一区二区三区视频播放| 毛葺葺老太做受视频| 长腿校花无力呻吟娇喘| 丝袜老师办公室里做好紧好爽 | 高清自拍亚洲精品二区| 国产亚洲精品AA片在线播放天| 国产精品无码a∨麻豆| 亚洲免费人成网站在线观看 | 日本黄页网站免费观看| 茄子视频国产在线观看| 线观看的国产成人av天堂| 国产超碰无码最新上传| 国产不卡一区二区四区| 久热视频这里只有精品6| 妺妺窝人体色WWW看人体| 四虎成人在线观看免费| 精品国产三级a∨在线欧美| 青青在线视频一区二区三区| 色爱综合另类图片av| 久久精品国产99国产精品严洲| 国产av一区二区亚洲精品| 在线免费观看毛片av| 无码av永久免费专区麻豆| 海宁市| 亚洲一区二区三区十八禁| 99热精品毛片全部国产无缓冲| 国产成人午夜福利在线观看| 精品国产乱码久久久久app下载 | 日本一区二区三区专线| 国产在线超清日本一本| 日韩一区二区三区高清视频| 亚洲一区二区三区丝袜| 亚洲精品久久无码av片软件| 沅陵县| 亚洲精品一区二区口爆| 亚洲成av人片不卡无码手机版| 国产一码二码三码区别|