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

设置和通用依赖项

使用该集成需要以下 Python 包。
Note: 根据您的 LangChain 设置,您可能需要安装/升级此演示所需的其他依赖项 (specifically, recent versions of datasets, openai, pypdf and tiktoken are required, along with langchain-community).

导入向量存储

连接参数

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

连接到 Cassandra 集群

您首先需要创建一个 cassandra.cluster.Session 对象,如 Cassandra 驱动程序文档 中所述。详细信息各不相同(例如网络设置和身份验证),但这可能类似于:
现在,您可以将 session 和您想要的 keyspace 名称设置为全局 CassIO 参数:
现在您可以创建向量存储:
Note: 在创建向量存储时,您也可以直接将 session 和 keyspace 作为参数传递。然而,如果您的应用程序以多种方式(例如用于向量存储、聊天内存和 LLM 响应缓存)使用 Cassandra,则使用全局 cassio.init 设置会更方便,因为它允许在一个地方集中管理凭据和数据库连接。

通过 CQL 连接到 Astra DB

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

加载数据集

将源数据集中的每个条目转换为 Document,然后将它们写入向量存储:
在上面,metadata 字典是从源数据创建的,并且是 Document 的一部分。 添加更多条目,这次使用 add_texts
Note: 您可能希望通过增加并发级别来加快 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 软件基金会 的注册商标或商标。