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

设置

您首先需要安装 @langchain/azure-cosmosdb 包:
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: {}
  }
*/