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 设置会很方便,因为它允许将凭据和数据库连接管理集中在一个位置。
通过 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 Expression Language) 创建一个 RAG 链,向量存储是其核心;
- 运行问答链。
清理
以下内容本质上是从 CassIO 检索Session 对象,并使用它运行 CQL DROP TABLE 语句: (您将丢失其中存储的数据。)了解更多
有关更多信息、扩展的快速入门和其他使用示例,请访问 CassIO 文档,了解有关使用 LangChainCassandra 向量存储的更多信息。
归属声明
Apache Cassandra、Cassandra 和 Apache 是Apache Software Foundation 在美国和/或其他国家的注册商标或商标。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。