跳到主要内容

使用 seekdb 向量搜索的 AI 应用工作流

本文档介绍了使用 seekdb 向量搜索的 AI 应用工作流。

非结构化数据经过向量嵌入处理转换为特征向量

非结构化数据(视频、文档、图片等)是整个工作流的起点。各种形式的非结构化数据,如视频、文本文件(文档)和图像,经由向量嵌入模型转化为向量数据表示。这个模型的任务是将这些原始的、难以直接计算相似度的非结构化数据,转换成高维的向量数据(Vectors)。这些向量能够捕捉数据的语义信息和特征,同时可以通过向量空间中的距离来表达数据的相似度。具体请参见向量嵌入技术

在 seekdb 中存储向量嵌入和创建向量索引

作为核心存储层,seekdb 承担了存储所有数据的职责。这包括传统的关系表(用于存储业务数据)以及原始的非结构化数据及经向量嵌入后生成的向量数据。具体请参见存储向量数据

为了实现高效的向量搜索,seekdb 内部会为向量数据构建向量索引。向量索引是一种专门的数据结构,它能够极大地加速在高维向量空间中的最近邻搜索。由于向量相似度计算的开销很大,精确搜索(逐个计算所有向量的距离)虽然能保证结果准确性,但会导致查询性能急剧下降。通过向量索引,系统可以快速定位候选向量,显著减少需要计算距离的向量数量,在保证较高准确率的同时大幅提升查询效率。具体请参见稠密向量索引

通过 SQL/SDK 执行最近邻搜索和混合搜索

用户通过客户端或编程语言与 AI 应用进行交互,提出查询请求。这些请求可能涉及文本、图片或其他形式。具体请参见支持客户端与语言

seekdb 通过 SQL 语句来查询和管理关系型数据,实现标量数据和向量数据的混合搜索。当用户发起查询时,如果是非结构化查询,系统会先通过向量嵌入模型将其转换为向量。然后,系统会借助向量索引及标量索引,快速搜索出和查询向量最相似的且满足标量过滤条件的向量数据,从而搜索最相关的非结构化数据。关于最近邻搜索的详细信息,请参见最近邻搜索

生成提示词并发送至 LLM 完成推理

最终阶段结合混合搜索的结果生成优化后的提示词(Prompt),并提交至大语言模型(LLM)执行完整的推理流程。LLM 会根据这些上下文信息,生成自然语言的响应。LLM 与向量嵌入模型之间存在反馈回路,这意味着 LLM 的输出或用户反馈可以用于优化向量嵌入模型,形成一个持续学习和优化的闭环。