Skip to main content
AsyncCockroachDBVectorStore 是一个使用 CockroachDB 分布式 SQL 数据库(具有原生向量支持)的 LangChain 向量存储实现。 本笔记本介绍如何使用 AsyncCockroachDBVectorStore API。 代码位于集成包中:langchain-cockroachdb

概述

CockroachDB 是一个分布式 SQL 数据库,提供:
  • 原生向量支持,使用 VECTOR 数据类型(v24.2+)
  • 分布式 C-SPANN 索引,用于近似最近邻(ANN)搜索(v25.2+)
  • 默认可序列化隔离,确保事务正确性
  • 水平可扩展性,支持自动分片和复制
  • PostgreSQL 线路兼容,便于采用

向量工作负载的关键优势

  • 分布式向量索引:C-SPANN 索引自动在集群中分片
  • 多租户支持:索引中的前缀列实现高效的租户隔离
  • 强一致性:可序列化事务防止数据异常
  • 高可用性:自动故障转移,无数据丢失

设置

安装

安装集成库 langchain-cockroachdb

CockroachDB 集群

您需要一个支持向量的 CockroachDB 集群(v24.2+)。选择一个选项:

选项 1:CockroachDB Cloud(推荐)

  1. cockroachlabs.cloud 注册
  2. 创建一个免费集群
  3. 从集群详情页面获取连接字符串

选项 2:Docker(开发环境)

选项 3:本地二进制文件

cockroachlabs.com/docs/releases 下载

设置连接值

初始化

创建连接引擎

CockroachDBEngine 管理到集群的连接池:

初始化表

创建具有适当模式的表用于向量存储:
可选:指定模式名称

创建嵌入实例

使用任何 LangChain 嵌入模型

初始化向量存储

管理向量存储

添加文档

添加带有元数据的文档:

添加文本

直接添加文本,无需结构化为文档:
性能说明:CockroachDB 的向量索引在较小的批次大小下效果最佳。默认的 batch_size=100 针对向量插入进行了优化。VECTOR 类型的大批量插入可能导致性能下降。

删除文档

按 ID 删除文档:

查询向量存储

相似性搜索

使用自然语言搜索相似文档:

带分数的相似性搜索

获取结果的相关性分数:

按向量搜索

使用预计算的嵌入向量进行搜索:

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

检索平衡相关性和多样性的多样化结果:

向量索引

使用 CockroachDB 的 C-SPANN 向量索引加速相似性搜索(需要 v25.2+)。

什么是 C-SPANN?

C-SPANN(CockroachDB Space Partition Approximate Nearest Neighbor)是一个分布式向量索引,它:
  • 自动在集群节点间分片
  • 在大规模下提供亚秒级查询性能
  • 支持余弦、欧几里得(L2)和内积距离
  • 与前缀列配合用于多租户架构

创建向量索引

距离策略

选择与您的用例匹配的距离度量:

调整索引参数

调整分区大小以优化性能:

查询时调整

在查询时调整搜索参数:

删除索引

移除向量索引:

元数据过滤

使用元数据字段过滤相似性搜索。

支持的运算符

过滤示例

同步接口

所有异步方法都有使用同步包装器的同步等效方法:

用于检索增强生成(RAG)的用法

有关使用 CockroachDB 作为向量存储实现 RAG 的信息,请参阅 LangChain RAG 教程。CockroachDB 向量存储可以在这些模式中替代任何其他向量存储。

清理

⚠️ 此操作无法撤销
删除向量存储表:

API 参考

有关所有功能和配置的详细文档:

附加资源