Skip to main content

Cassandra 聊天记忆

为了在聊天会话中实现更长期的持久化,您可以将默认的内存中 chatHistory(为 BufferMemory 等聊天记忆类提供支持)替换为 Cassandra 集群。

准备工作

首先,安装 Cassandra Node.js 驱动程序:

:::提示 请参阅安装集成包的一般说明部分。 :::

npm install cassandra-driver @langchain/openai @langchain/community @langchain/core

根据您的数据库提供商不同,连接数据库的具体方式也会有所不同。我们将创建一个 configConnection 文档,该文档将用于向量存储配置的一部分。

Apache Cassandra®

const configConnection = {
contactPoints: ['h1', 'h2'],
localDataCenter: 'datacenter1',
credentials: {
username: <...> as string,
password: <...> as string,
},
};

Astra DB

Astra DB 是一个云原生的 Cassandra 即服务(Cassandra-as-a-Service)平台。

  1. 创建一个 Astra DB 账户
  2. 创建一个 启用向量功能的数据库
  3. 为您的数据库创建一个 Token
const configConnection = {
serviceProviderArgs: {
astra: {
token: <...> as string,
endpoint: <...> as string,
},
},
};

除了使用 endpoint: 属性,您也可以提供 datacenterID: 属性,以及可选的 regionName: 属性。

使用方法

import { BufferMemory } from "langchain/memory";
import { CassandraChatMessageHistory } from "@langchain/community/stores/message/cassandra";
import { ChatOpenAI } from "@langchain/openai";
import { ConversationChain } from "langchain/chains";

// The example below uses Astra DB, but you can use any Cassandra connection
const configConnection = {
serviceProviderArgs: {
astra: {
token: "<your Astra Token>" as string,
endpoint: "<your Astra Endpoint>" as string,
},
},
};

const memory = new BufferMemory({
chatHistory: new CassandraChatMessageHistory({
...configConnection,
keyspace: "langchain",
table: "message_history",
sessionId: "<some unique session identifier>",
}),
});

const model = new ChatOpenAI({
model: "gpt-4o-mini",
});
const chain = new ConversationChain({ llm: model, memory });

const res1 = await chain.invoke({ input: "Hi! I'm Jonathan." });
console.log({ res1 });
/*
{
res1: {
text: "Hello Jonathan! How can I assist you today?"
}
}
*/

const res2 = await chain.invoke({ input: "What did I just say my name was?" });
console.log({ res2 });

/*
{
res1: {
text: "You said your name was Jonathan."
}
}
*/

API Reference:


Was this page helpful?


You can also leave detailed feedback on GitHub.