ClickHouse 是速度最快、资源效率最高的开源数据库,专为实时应用和分析而设计,支持完整的 SQL 语法及丰富的分析查询函数。近期新增的数据结构和距离搜索函数(如 L2Distance)以及近似最近邻搜索索引,使 ClickHouse 能够作为高性能、可扩展的向量数据库,通过 SQL 存储和搜索向量。
本 notebook 展示如何使用与 ClickHouse 向量存储相关的功能。
设置
首先使用 Docker 启动本地 ClickHouse 服务器:langchain-community 和 clickhouse-connect:
凭证
本 notebook 无需凭证,只需确保已按上述方式安装好依赖包。 如果您希望获得模型调用的顶级自动追踪功能,还可以取消注释以下内容,设置您的 LangSmith API 密钥:实例化
管理向量存储
创建向量存储后,可以通过添加和删除不同的条目与其进行交互。向向量存储添加条目
可以使用add_documents 函数向向量存储添加条目。
从向量存储删除条目
可以使用delete 函数通过 ID 删除向量存储中的条目。
查询向量存储
创建向量存储并添加相关文档后,通常需要在运行链或智能体时对其进行查询。直接查询
相似度搜索
执行简单相似度搜索的方法如下:带分数的相似度搜索
也可以带分数进行搜索:过滤
您可以直接使用 ClickHouse SQL 的 WHERE 子句。可以按照标准 SQL 编写WHERE 子句。
注意:请注意 SQL 注入风险,此接口不得直接由终端用户调用。
如果您在设置中自定义了 column_map,可以像这样使用过滤器进行搜索:
其他搜索方法
还有多种其他搜索方法未在本 notebook 中介绍,例如 MMR 搜索或按向量搜索。有关Clickhouse 向量存储可用搜索能力的完整列表,请查阅 API 参考。
转换为检索器进行查询
您还可以将向量存储转换为检索器,以便在链中更方便地使用。 以下是将向量存储转换为检索器,然后使用简单查询和过滤器调用检索器的方法:用于检索增强生成
有关如何将此向量存储用于检索增强生成(RAG)的指南,请参阅以下章节: 更多内容,请查阅使用 Astra DB 的完整 RAG 模板 这里。API 参考
有关Clickhouse 所有功能和配置的详细文档,请前往 API 参考。
通过 MCP 将这些文档连接 到 Claude、VSCode 等,获取实时解答。

