Skip to main content
CockroachDB 是一款构建于事务性强一致键值存储之上的分布式 SQL 数据库。它可水平扩展,能够在磁盘、机器、机架乃至数据中心故障时以极低的延迟中断存活,且无需人工干预。
核心特性:
  • 分布式 SQL:在保持 ACID 保证的同时实现横向扩展
  • 原生向量支持:内置 VECTOR 类型(v24.2+)和 C-SPANN 索引(v25.2+)
  • PostgreSQL 兼容:PostgreSQL 应用的直接替代方案
  • 全球复制:低延迟的多区域部署
  • 自动分片:数据自动分布到各节点
  • 可序列化隔离:默认使用最强隔离级别

安装与设置

安装 LangChain 集成:
pip install langchain-cockroachdb

获取 CockroachDB 连接字符串

您需要一个 CockroachDB 集群。选择以下一种方式: 方式一:CockroachDB Cloud(推荐)
  1. cockroachlabs.cloud 注册
  2. 创建免费集群
  3. 获取连接字符串:cockroachdb://user:pass@host:26257/db?sslmode=verify-full
方式二:Docker(开发环境)
docker run -d --name cockroachdb -p 26257:26257 \
  cockroachdb/cockroach:latest start-single-node --insecure
连接字符串:cockroachdb://root@localhost:26257/defaultdb?sslmode=disable 方式三:本地二进制文件 cockroachlabs.com/docs/releases 下载

集成

向量存储

CockroachDB 可以使用原生 VECTOR 类型和 C-SPANN 分布式索引作为向量存储。 核心特性:
  • 原生向量支持(v24.2+)
  • 针对分布式系统优化的 C-SPANN 索引(v25.2+)
  • 高级元数据过滤
  • 使用前缀列的多租户
  • 横向可扩展性
详细使用方法请参阅 CockroachDB 向量存储文档 快速示例:
from langchain_cockroachdb import AsyncCockroachDBVectorStore, CockroachDBEngine
from langchain_openai import OpenAIEmbeddings

# 初始化
engine = CockroachDBEngine.from_connection_string(
    "cockroachdb://user:pass@host:26257/db"
)

await engine.ainit_vectorstore_table(
    table_name="documents",
    vector_dimension=1536,
)

vectorstore = AsyncCockroachDBVectorStore(
    engine=engine,
    embeddings=OpenAIEmbeddings(),
    collection_name="documents",
)

# 使用
ids = await vectorstore.aadd_texts(["Hello world"])
results = await vectorstore.asimilarity_search("Hi", k=1)

聊天消息历史

将对话历史存储在 CockroachDB 中,构建持久化、分布式的聊天应用。 核心特性:
  • 自动复制的分布式存储
  • 强一致性(可序列化)
  • 基于会话的组织
  • 高可用性
详细使用方法请参阅 CockroachDB 聊天历史文档 快速示例:
from langchain_cockroachdb import CockroachDBChatMessageHistory
import uuid

chat_history = CockroachDBChatMessageHistory(
    session_id=str(uuid.uuid4()),
    connection_string=CONNECTION_STRING,
    table_name="chat_history",
)

from langchain.messages import HumanMessage, AIMessage

await chat_history.aadd_message(HumanMessage(content="Hello!"))
await chat_history.aadd_message(AIMessage(content="Hi there!"))

messages = await chat_history.aget_messages()

为什么选择 CockroachDB 用于 AI 应用?

天生分布式

  • 横向可扩展性:添加节点以处理更多负载
  • 多区域部署:以低延迟为全球用户提供服务
  • 自动再平衡:数据自动在节点间分布

生产级可靠性

  • 高可用性:能够在节点、机架和数据中心故障时存活
  • 零停机升级:滚动更新,无需停机
  • 备份与恢复:时间点恢复

规模化向量搜索

  • C-SPANN 索引:分布式近似最近邻搜索
  • 原生向量类型:嵌入的一等公民支持
  • 实时索引:新向量无需重建索引
  • 多租户:使用前缀列进行高效租户隔离

PostgreSQL 兼容性

  • 轻松迁移:PostgreSQL 的直接替代方案
  • 熟悉的 SQL:标准 PostgreSQL 语法
  • 现有工具:兼容 PostgreSQL 驱动和工具

资源

支持