Skip to main content
语义缓存功能支持与 Azure Cosmos DB for NoSQL 集成,使用户能够基于用户输入与先前缓存结果之间的语义相似性来检索缓存响应。它利用了 AzureCosmosDBNoSQLVectorStore,该组件存储缓存提示的向量嵌入。这些嵌入支持基于相似性的搜索,使系统能够检索相关的缓存结果。
如果您没有 Azure 账户,可以创建一个免费账户开始使用。

设置

首先需要安装 @langchain/azure-cosmosdb 包:
有关安装 LangChain 包的通用说明,请参阅此部分
npm
npm install @langchain/azure-cosmosdb @langchain/core
您还需要运行一个 Azure Cosmos DB for NoSQL 实例。您可以按照此指南在 Azure 门户上免费部署一个版本。 实例运行后,请确保您拥有连接字符串。如果使用托管身份,则需要端点。您可以在 Azure 门户中实例的“设置 / 密钥”部分找到它们。
使用 Azure 托管身份和基于角色的访问控制时,必须确保数据库和容器已预先创建。RBAC 不提供创建数据库和容器的权限。您可以在 Azure Cosmos DB 文档 中获取有关权限模型的更多信息。

使用示例

import {
  AzureCosmosDBNoSQLConfig,
  AzureCosmosDBNoSQLSemanticCache,
} from "@langchain/azure-cosmosdb";
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";

const embeddings = new OpenAIEmbeddings();
const config: AzureCosmosDBNoSQLConfig = {
  databaseName: "<DATABASE_NAME>",
  containerName: "<CONTAINER_NAME>",
  // 使用端点通过托管身份初始化客户端
  connectionString: "<CONNECTION_STRING>",
};

/**
 * 设置基于向量距离返回缓存结果的相似度分数阈值。
 * 仅当相似度分数达到或超过此阈值时,才返回缓存输出;
 * 否则,将生成新结果。默认值为 0.6,可通过构造函数调整,
 * 以适应不同的距离函数和用例。
 * (参见:https://aka.ms/CosmosVectorSearch)。
 */

const similarityScoreThreshold = 0.5;
const cache = new AzureCosmosDBNoSQLSemanticCache(
  embeddings,
  config,
  similarityScoreThreshold
);

const model = new ChatOpenAI({ model: "gpt-4.1-mini", cache });

// 调用模型执行操作
const response1 = await model.invoke("Do something random!");
console.log(response1);
/*
  AIMessage {
    content: "Sure! I'll generate a random number for you: 37",
    additional_kwargs: {}
  }
*/

const response2 = await model.invoke("Do something random!");
console.log(response2);
/*
  AIMessage {
    content: "Sure! I'll generate a random number for you: 37",
    additional_kwargs: {}
  }
*/