.NET + AI 的矢量数据库

矢量数据库旨在存储和管理矢量嵌入。 嵌入是保留语义含义的非数值数据的数值表示形式。 单词、文档、图像、音频和其他类型的数据都可以矢量化。 你可以使用嵌入来帮助 AI 模型了解输入内容的含义,以便它可以执行比较和转换操作,例如汇总文本、查找上下文相关数据或根据文本说明创建图像。

例如,可以使用矢量数据库来执行以下操作:

  • 根据图像、主题、情绪和样式识别相似的图像、文档和歌曲。
  • 根据产品特征、功能和用户组识别相似的产品。
  • 根据用户偏好推荐内容、产品或服务。
  • 从大型选项池中确定最佳潜在选项以满足复杂要求。
  • 识别与主要模式或正常模式不同的数据异常或欺诈活动。

矢量数据库提供矢量搜索功能,以便根据它们的数据特征而不是属性字段的完全匹配来查找类似的项。 矢量搜索的工作原理是分析使用 AI 嵌入模型(例如 Azure OpenAI 嵌入模型)创建的数据的矢量表示形式。 搜索过程会测量数据矢量与查询矢量之间的距离。 最接近查询矢量的数据矢量是在语义上最相似的数据矢量。

某些服务(例如 Azure Cosmos DB for MongoDB vCore)为数据提供本机矢量搜索功能。 可以使用 Azure AI 搜索等服务(例如 Azure AI 搜索,可以扫描数据并编制索引,从而提供矢量搜索功能)为存储的数据编制索引,从而通过矢量搜索增强其他数据库,以便提供矢量搜索功能。

使用 .NET 和 OpenAI 的矢量搜索工作流

矢量数据库及其搜索功能特别适用于使用 Azure OpenAI 的 RAG 模式工作流。 此模式允许通过对数据的其他语义丰富的知识来增强 AI 模型。 使用矢量数据库的常见 AI 工作流可能包括以下步骤:

  1. 使用 OpenAI 嵌入模型为数据创建嵌入。
  2. 在向量数据库或搜索服务中存储嵌入内容并编制索引。
  3. 将用户提示从应用程序转换为嵌入。
  4. 对数据运行矢量搜索,比较用户提示嵌入和数据库嵌入。
  5. 使用 GPT-35 或 GPT-4 等语言模型从矢量搜索结果中集合用户友好的完成。

有关此流的实践示例,请访问“在 .NET 应用中使用矢量搜索实现 Azure OpenAI 和 RAG”教程。

RAG 模式的其他优势包括:

  • 从 AI 模型生成与用户提示的上下文相关的准确响应。
  • 克服 LLM 令牌限制 - 通过数据库矢量搜索完成繁重的工作。
  • 避免频繁优化更新的数据以降低成本。

可用的矢量数据库解决方案

AI 应用程序通常使用数据矢量数据库和服务来提高相关性并提供自定义功能。 其中许多服务为 .NET 提供本机 SDK,而另一些服务则提供 REST 服务,可以通过自定义代码进行连接。 语义内核提供了一个可扩展的组件模型,让你能够使用不同的矢量存储,而无需了解每个 SDK。

语义内核为以下矢量数据库和服务提供连接器:

矢量服务 语义内核连接器 .NET SDK
Azure AI 搜索 Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB for NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL 服务器 Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL 数据库 Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Chroma NA
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
MongoDB Atlas 矢量搜索 Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
Pinecone Microsoft.SemanticKernel.Connectors.Pinecone REST API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
Redis Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis
Weaviate Microsoft.SemanticKernel.Connectors.Weaviate REST API

请访问每个服务的文档,了解 .NET SDK 和 API 支持。