DataStax Astra DB 是一个基于 Apache Cassandra® 构建的无服务器 AI 就绪数据库,通过易于使用的 JSON API 方便地提供。
设置
依赖项
使用此集成需要langchain-astradb 合作伙伴包
凭据
要使用 AstraDB 向量存储,您必须首先访问 AstraDB 网站,创建一个帐户,然后创建一个新数据库——初始化可能需要几分钟。 数据库初始化完成后,检索您的 连接密钥,您很快就会用到。这些是:- 一个
API 端点,例如"https://01234567-89ab-cdef-0123-456789abcdef-us-east1.apps.astra.datastax.com/" - 以及一个
数据库令牌,例如"AstraCS:aBcD123......"
keyspace(在 LangChain 组件中称为“namespace”),您可以通过数据库仪表板的 Data Explorer 选项卡进行管理。如果您愿意,可以在下面的提示中将其留空,并回退到默认的 keyspace。
初始化
有多种方法可以创建 Astra DB 向量存储方法 1:显式嵌入
您可以单独实例化一个langchain_core.embeddings.Embeddings 类并将其传递给 AstraDBVectorStore 构造函数,就像大多数其他 LangChain 向量存储一样。
方法 2:服务器端嵌入(“向量化”)
或者,您可以使用 Astra DB 的服务器端嵌入计算功能(“向量化”),只需在为存储创建服务器基础结构时指定嵌入模型即可。随后的读写操作中的嵌入计算将完全在数据库内部处理。(要继续使用此方法,您必须已为您的数据库启用了所需的嵌入集成,如文档中所述。)方法 3:从现有集合自动检测
您的 Astra DB 中可能已经有一个集合,可能通过其他方式(例如通过 Astra UI 或第三方应用程序)预填充了数据,您只是想在 LangChain 中开始查询它。在这种情况下,正确的方法是在向量存储构造函数中启用autodetect_collection 模式,让类自行找出详细信息。(当然,如果您的集合没有“向量化”,您仍然需要提供一个Embeddings对象)。
关于“混合搜索”的说明
Astra DB 向量存储支持向量搜索中的元数据搜索;此外,0.6 版本通过 findAndRerank 数据库原语完全支持混合搜索:文档通过向量相似性搜索和基于关键词(“词汇”)搜索检索,然后通过重排序模型合并。这种完全在服务器端处理的搜索策略可以提高结果的准确性,从而提高您的 RAG 应用程序的质量。只要可用,向量存储就会自动使用混合搜索(尽管如果您愿意,可以对其进行手动控制)。附加信息
AstraDBVectorStore 可以通过多种方式进行配置;有关完整指南,请参阅API 参考,其中涵盖了异步初始化;非 Astra-DB 数据库;自定义索引允许/拒绝列表;手动混合搜索控制;等等。
显式嵌入初始化(方法 1)
使用显式嵌入类实例化我们的向量存储服务器端嵌入初始化(“向量化”,方法 2)
在此示例代码中,假设您已经- 在您的 Astra DB 组织中启用了 OpenAI 集成,
- 已将名为
"OPENAI_API_KEY"的 API 密钥添加到集成中,并将其范围限定为您正在使用的数据库。
自动检测初始化(方法 3)
如果集合已存在于数据库中,并且您的AstraDBVectorStore 需要使用它(进行读写),则可以使用此模式。LangChain 组件将检查集合并找出详细信息。 如果集合已创建,并且最重要的是,通过 LangChain 以外的工具(例如,通过 Astra DB Web 界面摄取数据)填充了数据,这是推荐的方法。 自动检测模式不能与集合设置(如相似性指标等)共存;另一方面,如果没有使用服务器端嵌入,仍然需要将一个Embeddings对象传递给构造函数。 在以下示例代码中,我们将“自动检测”与上面方法 2(“向量化”)创建的完全相同的集合。因此,无需提供Embeddings对象。管理向量存储
创建向量存储后,通过添加和删除不同的项目与其交互。 所有与向量存储的交互都与初始化方法无关:如果您愿意,请修改以下单元格,以选择您已创建并希望进行测试的向量存储。向向量存储添加项目
使用add_documents 方法将文档添加到向量存储。 “id”字段可以单独提供,在匹配的 ids=[...] 参数中传递给 add_documents,甚至可以完全省略,让存储生成 ID。从向量存储中删除项目
使用delete 函数通过 ID 删除项目。
查询向量存储
创建并填充向量存储后,您可以查询它(例如,作为您的链或代理的一部分)。直接查询
相似性搜索
搜索与提供的文本相似的文档,如果需要,还可以添加元数据过滤器带分数的相似性搜索
您还可以返回相似度分数指定不同的关键词查询(需要混合搜索)
注意:此单元格仅当集合支持 find-and-rerank 命令且向量存储已知此事实时才能运行。如果向量存储使用启用了混合功能的集合并检测到此事实,则默认情况下它将在运行搜索时使用该功能。 在这种情况下,在 find-and-rerank 过程中,向量相似性检索步骤和基于词法检索步骤都使用相同的查询文本,除非您明确为后者提供不同的查询:
其他搜索方法
本笔记本中未涵盖各种其他搜索方法,例如 MMR 搜索和按向量搜索。 有关AstraDBVectorStore 中可用搜索模式的完整列表,请查看API 参考。通过转换为检索器进行查询
您还可以将向量存储转换为检索器,以便在您的链中更轻松地使用。 将向量存储转换为检索器,并使用简单的查询+元数据过滤器调用它:用于检索增强生成的使用
有关如何将此向量存储用于检索增强生成 (RAG) 的指南,请参阅以下部分 欲了解更多信息,请此处查看使用 Astra DB 的完整 RAG 模板。清理向量存储
如果您想从 Astra DB 实例中完全删除集合,请运行此命令。 (您将丢失存储在其中的数据。)API 参考
有关所有AstraDBVectorStore 功能和配置的详细文档,请查阅API 参考。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。