Skip to main content
本页面提供了使用 Apache Cassandra® 作为向量存储的快速入门指南。
Cassandra 是一个 NoSQL、面向行、高度可扩展且高可用的数据库。从 5.0 版本开始,该数据库内置了向量搜索功能
注意:除了数据库访问权限外,运行完整示例还需要一个 OpenAI API 密钥。

设置和通用依赖项

使用此集成需要以下 Python 包。
注意:根据您的 LangChain 设置,您可能需要安装/升级此演示所需的其他依赖项 (具体来说,需要 datasetsopenaipypdftiktoken 的最新版本,以及 langchain-community)。

导入向量存储

连接参数

本页面展示的向量存储集成可用于 Cassandra 以及其他衍生数据库,例如使用 CQL(Cassandra 查询语言)协议的 Astra DB。
DataStax Astra DB 是一个基于 Cassandra 构建的托管无服务器数据库,提供相同的接口和优势。
根据您是通过 CQL 连接到 Cassandra 集群还是 Astra DB,在创建向量存储对象时需要提供不同的参数。

连接到 Cassandra 集群

您首先需要创建一个 cassandra.cluster.Session 对象,如 Cassandra 驱动程序文档中所述。具体细节各不相同(例如网络设置和身份验证),但可能类似于:
现在您可以将会话和所需的键空间名称设置为全局 CassIO 参数:
现在您可以创建向量存储:
注意:您也可以在创建向量存储时直接将会话和键空间作为参数传递。但是,使用全局 cassio.init 设置在您的应用程序以多种方式使用 Cassandra 时(例如,用于向量存储、聊天记忆和 LLM 响应缓存)会很方便,因为它允许将凭证和数据库连接管理集中在一处。

通过 CQL 连接到 Astra DB

在这种情况下,您使用以下连接参数初始化 CassIO:
  • 数据库 ID,例如 01234567-89ab-cdef-0123-456789abcdef
  • 令牌,例如 AstraCS:6gBhNmsk135....(必须是“数据库管理员”令牌)
  • 可选的键空间名称(如果省略,将使用数据库的默认键空间)
现在您可以创建向量存储:

加载数据集

将源数据集中的每个条目转换为一个 Document,然后将它们写入向量存储:
在上面的代码中,metadata 字典是从源数据创建的,并且是 Document 的一部分。 添加更多条目,这次使用 add_texts
注意:您可能希望通过增加这些批量操作的并发级别来加速 add_textsadd_documents 的执行 ——请查看这些方法的 batch_size 参数 以获取更多详细信息。根据网络和客户端机器规格,您最佳性能的参数选择可能会有所不同。

运行搜索

本节演示元数据过滤和获取相似度分数:

MMR(最大边际相关性)搜索

删除存储的文档

一个最小的 RAG 链

接下来的单元格将实现一个简单的 RAG 流程:
  • 下载一个示例 PDF 文件并将其加载到存储中;
  • 使用 LCEL(LangChain 表达式语言)创建一个 RAG 链,向量存储是其核心;
  • 运行问答链。
更多内容,请查看使用 Astra DB 通过 CQL 的完整 RAG 模板

清理

以下代码本质上是从 CassIO 中检索 Session 对象并使用它运行 CQL DROP TABLE 语句: (您将丢失存储在其中的数据。)

了解更多信息

有关更多信息、扩展的快速入门指南和额外的使用示例,请访问 CassIO 文档,以获取有关使用 LangChain Cassandra 向量存储的更多内容。

归属声明

Apache Cassandra、Cassandra 和 Apache 是 Apache 软件基金会在美国和/或其他国家/地区的注册商标或商标。