Cassandra 是一个 NoSQL、面向行、高度可扩展且高度可用的数据库。从 5.0 版本开始,该数据库附带了向量搜索功能。注意:除了数据库访问权限外,运行完整示例还需要一个 OpenAI API 密钥。
设置和通用依赖项
使用此集成需要以下 Python 包。datasets、openai、pypdf 和 tiktoken 的最新版本,以及 langchain-community)。
导入向量存储
连接参数
本页所示的向量存储集成可用于 Cassandra 以及其他衍生数据库,例如 Astra DB,它们都使用 CQL(Cassandra 查询语言)协议。DataStax Astra DB 是一个基于 Cassandra 构建的托管无服务器数据库,提供相同的接口和优势。根据您是连接到 Cassandra 集群还是通过 CQL 连接到 Astra DB,在创建向量存储对象时需要提供不同的参数。
连接到 Cassandra 集群
您首先需要创建一个cassandra.cluster.Session 对象,如 Cassandra 驱动程序文档 中所述。细节各不相同(例如网络设置和身份验证),但可能类似于:
cassio.init 设置非常方便,如果您的应用程序以多种方式使用 Cassandra(例如,用于向量存储、聊天记忆和 LLM 响应缓存),因为它允许在一个地方集中管理凭据和数据库连接。
通过 CQL 连接到 Astra DB
在这种情况下,您使用以下连接参数初始化 CassIO:- 数据库 ID,例如
01234567-89ab-cdef-0123-456789abcdef - 令牌,例如
AstraCS:6gBhNmsk135....(必须是“数据库管理员”令牌) - 可选的键空间名称(如果省略,将使用数据库的默认键空间)
加载数据集
将源数据集中的每个条目转换为Document,然后将它们写入向量存储:
metadata 字典是从源数据创建的,并且是 Document 的一部分。
添加更多条目,这次使用 add_texts:
add_texts 和 add_documents 的执行 - 查看方法的 batch_size 参数以获取更多详细信息。根据网络和客户端机器规格,您最佳性能的参数选择可能会有所不同。
运行搜索
本节演示元数据过滤和获取相似度分数:MMR(最大边际相关性)搜索
删除存储的文档
最小 RAG 链
接下来的单元格将实现一个简单的 RAG 流程:- 下载一个示例 PDF 文件并将其加载到存储中;
- 使用 LCEL(LangChain 表达式语言)创建一个 RAG 链,其中向量存储是其核心;
- 运行问答链。
清理
以下代码本质上是从 CassIO 检索Session 对象并使用它运行 CQL DROP TABLE 语句:
(您将丢失存储在其中的数据。)
了解更多
有关更多信息、扩展的快速入门和额外的使用示例,请访问 CassIO 文档,了解如何使用 LangChainCassandra 向量存储。
归属声明
Apache Cassandra、Cassandra 和 Apache 是 Apache Software Foundation 在美国和/或其他国家的注册商标或商标。

