Skip to main content
Azure Cosmos DB for NoSQL 提供了对具有灵活模式的项目的查询支持,并原生支持 JSON。它现在提供了向量索引和搜索功能。此功能旨在处理高维向量,能够在任何规模下实现高效且准确的向量搜索。您现在可以直接将向量存储在文档中,与您的数据一起。您的数据库中的每个文档不仅可以包含传统模式无关的数据,还可以将高维向量作为文档的其他属性。
从 此页面 了解如何利用 Azure Cosmos DB for NoSQL 的向量搜索功能。如果您没有 Azure 账户,可以通过 创建免费账户 开始使用。

设置

有关检索增强生成(RAG)的快速入门,请参阅 LangChain.js 和 Azure Cosmos DB 快速入门 和 Microsoft Learn 教程。 在配置您的容器之前,请查看 Azure Cosmos DB 向量搜索文档 和 针对特定工作负载的向量索引选择指南。 您首先需要安装 @langchain/azure-cosmosdb 包:
npm
您还需要运行 Azure Cosmos DB for NoSQL 实例。您可以在 Azure 门户上部署免费版本,无需任何费用,请按照 此指南 操作。 一旦您的实例运行起来,请确保您有连接字符串。您可以在 Azure 门户中找到它们,在您的实例的“设置 / 密钥”部分下。然后您需要设置以下环境变量:
.env example

使用 Azure Managed identity

如果您使用 Azure Managed Identity,可以像这样配置凭据:
当使用 Azure Managed Identity 和基于角色的访问控制时,您必须确保数据库和容器已预先创建。RBAC 不会提供创建数据库和容器的权限。您可以在 Azure Cosmos DB 文档 中了解更多关于权限模型的信息。

使用过滤器时的安全注意事项

使用过滤器与用户提供输入时,如果数据没有正确清理,可能会存在安全风险。请遵循以下建议,以防止潜在的安全问题。
允许原始用户输入连接到类似 SQL 的子句(例如 WHERE ${userFilter})会引入 SQL 注入攻击的关键风险,可能会暴露意外数据或损害您的系统完整性。为了减轻这种风险,请始终使用 Azure Cosmos DB 的参数化查询机制,传入 @param 占位符,这将查询逻辑与用户提供输入清晰地区分开来。 以下是不安全代码的示例:
如果攻击者提供 123 OR 1=1,则查询将变为 SELECT * FROM c WHERE c.metadata.userId = '123' OR 1=1,这将强制条件始终为真,导致它绕过预期过滤器并删除所有文档。 为了防止这种注入风险,您定义一个占位符,如 @userId,Cosmos DB 将用户输入作为参数单独绑定,确保它被严格视为数据,而不是可执行的查询逻辑,如下所示。
现在,如果攻击者输入 123 OR 1=1,输入将被视为要匹配的纯文字值,而不是查询结构的一部分。 请参阅 Azure Cosmos DB for NoSQL 中的参数化查询 的官方文档,了解更多使用示例和最佳实践。

使用示例

以下示例展示了如何在 Azure Cosmos DB for NoSQL 中索引文件中的文档,运行向量搜索查询,并最终使用链根据检索到的文档用自然语言回答问题。

高级搜索选项

所有搜索类型都通过使用过滤器选项中的 searchType 参数通过统一的 similaritySearch 和 similaritySearchWithScore 方法访问。搜索类型作为 AzureCosmosDBNoSQLSearchType 中的常量提供: 可用搜索类型:
  • AzureCosmosDBNoSQLSearchType.Vector(默认):标准向量相似度搜索
  • AzureCosmosDBNoSQLSearchType.VectorScoreThreshold:带最小分数过滤器的向量搜索
  • AzureCosmosDBNoSQLSearchType.FullTextSearch:使用 FullTextContains 的全文搜索(预览)
  • AzureCosmosDBNoSQLSearchType.FullTextRanking:使用 BM25 排序的全文搜索(预览)
  • AzureCosmosDBNoSQLSearchType.Hybrid:使用 RRF 的混合向量 + 全文搜索(预览)
  • AzureCosmosDBNoSQLSearchType.HybridScoreThreshold:带分数阈值的混合搜索(预览)
您还可以在创建存储时使用 defaultSearchType 配置选项设置默认搜索类型,这样您就不必在每次查询中都指定它:

带分数阈值的向量搜索

根据最小相似度分数过滤结果:

最大边际相关性(MMR)搜索

MMR 搜索在结果的相关性和多样性之间取得平衡:

全文和混合搜索(预览)

全文和混合搜索是 Azure Cosmos DB 中的预览功能。您需要使用全文策略和适当的索引来配置您的容器以使用这些功能。请参阅 Azure Cosmos DB 文档 了解设置说明。
要使用全文或混合搜索,在创建存储时启用它:

全文搜索

全文排序

混合搜索

混合搜索结合了向量相似度与使用互惠排名融合(RRF)的全文搜索:

实用方法

删除文档

访问底层容器

相关


官方原文:src/oss/javascript/integrations/vectorstores/azure_cosmosdb_nosql.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026