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

