引言
384。
该数据集可用于讲解基于用户生成文本数据构建的大规模真实世界向量搜索应用在设计、容量规划和性能等方面的考量。
数据集详情
Parquet 文件提供,文件位于一个 S3 bucket 中。
我们建议用户先参考文档进行容量规划,以估算该数据集所需的存储和内存资源。
步骤
1
创建表
2
加载数据
要从 向表中插入 2874 万行数据需要几分钟时间。
Parquet 文件中加载数据集,请运行以下 SQL 语句:3
构建向量相似度索引
运行以下 SQL,在 有关索引创建和搜索的参数及性能注意事项,请参见文档。
上述语句中,HNSW 超参数
hackernews 表的 vector 列上定义并构建向量相似度索引:M 和 ef_construction 分别使用了 64 和 512。
你需要通过评估索引构建时间和搜索结果质量,
为这些参数谨慎选择最佳配置值。对于完整的 2874 万数据集,构建并保存索引甚至可能需要几分钟到几小时,具体取决于可用的 CPU 核心数量和存储带宽。4
执行 ANN 搜索
向量相似度索引构建完成后,向量搜索查询会自动使用该索引:首次将向量索引加载到内存中可能需要几秒到几分钟。
Query
5
为搜索查询生成嵌入向量
Sentence Transformers 提供本地化、易于使用的嵌入模型,用于捕捉句子和段落的语义。此 HackerNews 数据集包含由 all-MiniLM-L6-v2 模型生成的向量嵌入。下方提供了一个示例 Python 脚本,演示如何使用 以下展示了运行上述 Python 脚本及相似度搜索结果的示例
(每条结果仅打印前 20 个帖子各自的前 100 个字符) :上述应用程序的代码:
sentence_transformers Python 包以编程方式生成嵌入向量。搜索嵌入向量随后作为参数传入 SELECT 查询中的 cosineDistance() 函数。摘要 Demo 应用
上述示例演示了如何使用 ClickHouse 进行语义搜索和文档检索。接下来将介绍一个简单却极具潜力的生成式 AI 示例应用。该应用程序执行以下步骤:- 接收用户输入的 topic
- 使用
SentenceTransformers和模型all-MiniLM-L6-v2为 主题 生成 embedding 向量 - 使用
hackernews表上的向量相似度搜索来检索高度相关的帖子/评论 - 使用
LangChain和 OpenAIgpt-3.5-turboChat API 对第 3 步中检索到的内容进行总结。 第 3 步中检索到的帖子/评论会作为 上下文 传递给 Chat API,是 Generative AI 的关键一环。
OPENAI_API_KEY 中设置 OpenAI API 密钥。OpenAI API 密钥可在 https://platform.openai.com 注册后获取。该应用程序展示了一个 Generative AI 用例,适用于多个企业领域,例如:
客户情感分析、技术支持自动化、用户对话挖掘、法律文件、医疗记录、
会议记录、财务报表等。