跳转到主要内容
dbpedia 数据集包含来自 Wikipedia 的 100 万篇文章,以及使用 OpenAI 的 text-embedding-3-large 模型生成的嵌入向量。 该数据集非常适合作为入门示例,帮助理解嵌入向量、向量相似度搜索和生成式 AI。我们使用该数据集来演示 ClickHouse 中的近似最近邻搜索,以及一个简单但功能强大的问答应用。

数据集详情

该数据集包含 26 个位于 huggingface.coParquet 文件。文件名分别为 0.parquet1.parquet、…、25.parquet。如需查看该数据集的部分示例行,请访问此 Hugging Face 页面

创建表

创建 dbpedia 表,用于存储文章 ID、标题、文本和嵌入向量:

加载表

要从所有 Parquet 文件中加载数据集,请运行以下 shell 命令:
或者,也可以按如下所示逐条运行 SQL 语句,以加载 25 个 Parquet 文件中的每一个:
确认 dbpedia 表中有 100 万行数据:
推荐阅读:“嵌入向量 ” OpenAPI 指南 使用嵌入向量进行语义搜索 (也称为 相似性搜索) 通常包括 以下步骤:
  • 接收用户以自然语言提出的搜索查询,例如 “给我介绍一些风景优美的铁路旅行”“以欧洲为背景的悬疑小说”
  • 使用 LLM 模型为搜索查询生成嵌入向量
  • 在数据集中查找与该搜索嵌入向量最接近的最近邻
这些 最近邻 是与用户查询相关的文档、图像或其他内容。 检索到的结果是生成式 AI 应用中检索增强生成 (RAG) 的关键输入。 KNN (k - 最近邻) 搜索或暴力搜索,需要计算数据集中每个向量 到搜索嵌入向量的距离,然后按距离排序以找出最近邻。对于 dbpedia 数据集, 一种快速且直观地观察语义搜索的方法,是直接使用数据集本身的嵌入向量作为搜索 向量。例如:
Query
Response
记下查询延迟,以便将其与 ANN 的查询延迟 (使用向量索引) 进行比较。 还要记录在 OS 文件缓存未预热以及 max_threads=1 条件下的查询延迟,以便识别实际的计算资源 使用量和存储带宽占用 (将其外推到包含数百万向量的生产数据集!)

构建向量相似度索引

使用以下 SQL 在 vector 列上定义并构建向量相似度索引:
有关创建索引和执行搜索的参数及性能注意事项,请参阅文档 索引的构建和保存可能需要几分钟,具体取决于可用的 CPU 核心数以及存储带宽。 Approximate Nearest Neighbours (ANN) 是指一类技术 (例如图和随机森林等特殊数据结构) ,它们能够比精确向量搜索更快地得出结果。其结果准确率通常对于实际应用来说已经“足够好”。许多近似技术还提供了可调参数,用于在结果准确率与搜索时间之间进行权衡。 向量相似度索引构建完成后,向量搜索查询会自动使用该索引:
Query
Response

为搜索查询生成嵌入向量

到目前为止,前面看到的相似性搜索查询都是使用 dbpedia 表中的现有向量之一作为搜索向量。在实际应用中,搜索向量必须 根据用户输入的查询生成,而该查询可能是自然语言。搜索向量 应使用与为数据集生成嵌入向量时相同的 LLM 模型来生成。 下面列出了一个 Python 示例脚本,用于演示如何通过编程方式调用 OpenAI API 并使用 text-embedding-3-large 模型生成嵌入向量。然后,搜索嵌入向量 会作为参数传递给 SELECT 查询中的 cosineDistance() 函数。 运行该脚本需要在环境变量 OPENAI_API_KEY 中设置 OpenAI API 密钥。 注册 https://platform.openai.com 后即可获取 OpenAI API 密钥。

问答演示应用

上面的示例演示了如何使用 ClickHouse 进行语义搜索和文档检索。接下来将介绍一个非常简单但颇具潜力的生成式 AI 示例应用。 该应用执行以下步骤:
  1. 接收用户输入的主题
  2. 调用 OpenAI API,并使用模型 text-embedding-3-large 为该主题生成 嵌入向量
  3. dbpedia 表上使用 向量相似度搜索 检索高度相关的 Wikipedia 文章/文档
  4. 接收用户用自然语言提出的、与该主题相关的自由形式问题
  5. 使用 OpenAI gpt-3.5-turbo Chat API,基于第 3 步检索到的文档中的知识回答该问题。 第 3 步检索到的文档会作为上下文传递给 Chat API,这是生成式 AI 中的关键环节。
下面先列出几个运行该问答应用时的对话示例,随后给出 该问答应用的代码。运行该应用需要在环境 变量 OPENAI_API_KEY 中设置 OpenAI API 密钥。注册 https://platform.openai.com 后即可获取 OpenAI API 密钥。
代码:
最后修改于 2026年7月1日