向量嵌入在AI中的原理与应用
讲解embedding数学原理和在向量数据库、LLM中的应用。对AI初学者有帮助,但缺乏深度实战指导。
讲解embedding数学原理和在向量数据库、LLM中的应用。对AI初学者有帮助,但缺乏深度实战指导。
Embeddings 是对输入数据语义的数值化机器学习表示。它们将文本、图像或音频等复杂的高维数据所蕴含的含义编码为向量,使算法能够更高效地处理和分析这些数据。
你有没有过这样的体验:刷社交媒体信息流时,里面的内容仿佛都是为你量身定制的?先是你关心的新闻,接着是一篇使用你最喜欢的技术栈编写的绝佳教程,然后又出现一张让你笑到喷出来的梗图。
再想想 YouTube 推荐的视频:你最后非常喜欢这些视频,但此前甚至从未听说过它们的创作者,更没有给 YouTube 留言,告诉它你理想中的内容清单是什么样的。
这就是 Embeddings 的魔力。
这些 Embeddings 来自深度学习模型对你的在线互动数据所做的分析,包括你的点赞、分享、评论、搜索、停留观看的内容,甚至是你决定跳过的内容。它们还能让算法预测你未来可能会喜欢的内容。
同一组 Embeddings 还可以复用于搜索、广告和其他功能,从而打造高度个性化的用户体验。
它们让高维数据变得更易于管理,从而降低存储需求、提高计算效率,并从海量非结构化数据中提取出有意义的信息。
自然语言中的细微差别,或大型图像、声音及用户交互数据集中隐藏的含义,很难被塞进一张表格里。传统关系型数据库无法高效查询当前正在使用和产生的大多数数据类型,导致这些信息的检索能力非常有限。
在 Embeddings 空间中,同义词往往出现在相似的上下文里,因此最终也会拥有相似的 Embeddings。这个空间足够聪明,能够理解 “pretty” 和 “attractive” 属于同一阵营,而不需要有人明确告诉它这一点。
从本质上说,向量 Embeddings 关注的是语义。它们采用“观其伴而知其词”的理念,并将其大规模应用。
这种能力对于构建搜索系统、推荐引擎、检索增强生成(RAG),以及任何需要深入理解内容的应用都至关重要。
Embeddings 通过神经网络创建。神经网络将复杂的关系和语义编码到稠密向量中,使其更适合机器学习和数据处理应用。随后,这些向量可以被投射到合适的高维空间中,具体来说,就是 Vector Database。
一个数据点的含义由它在向量空间中的位置隐式定义。向量存储完成后,我们就可以利用它们的空间属性执行最近邻搜索。此类搜索会根据各个项目在这一空间中的距离,检索语义相似的项目。
向量表示的质量决定了系统的性能。哪种 embedding model 最适合你,取决于具体的使用场景。
Embeddings 将人类语言的复杂性转换成计算机能够理解的格式。它利用神经网络为输入数据分配数值,并让相似的数据拥有相似的数值。
例如,如果我想让计算机理解单词 ‘right’,可以为它分配一个类似 1.3 的数值。这样,当计算机看到 1.3 时,它所识别的就是单词 ‘right’。
现在,我还想让计算机理解单词 ‘right’ 的上下文。为此,可以使用一个二维向量,例如 [1.3, 0.8],来表示 ‘right’。第一个数值 1.3 仍然用于标识单词 ‘right’,第二个数值 0.8 则用于描述上下文。
我们可以引入更多维度来捕捉更多细微差别。例如,第三个维度可以表示这个词的正式程度,第四个维度可以表示它的情感含义(积极、中性或消极),以此类推。
这一概念不断演进,最终催生了 Word2Vec 和 GloVe 等 embedding model。它们通过学习单词出现时的上下文,为每个单词生成高维向量,从而捕捉远比以前复杂的属性。
不过,这些模型仍然存在局限。它们根据一个单词在不同文本中的总体用法,为每个单词生成一个固定向量。这意味着,“right” 这个词的所有细微含义都会被混合到同一个向量表示中。仅凭这些信息,还不足以让计算机充分理解上下文。
那么,我们该如何帮助计算机理解语言在不同上下文中的细微含义?换句话说,我们该如何区分下面这些句子:
“你的答案是正确的”
“在拐角处右转”
“每个人都有言论自由的权利”
这些句子都使用了 ‘right’,但含义各不相同。
BERT 和 GPT 等更先进的模型使用基于 transformer 架构的深度学习模型,帮助计算机考察一个单词的完整上下文。这些模型会关注整个上下文,理解单词在周围语境中的具体用法,然后分别创建不同的 Embeddings。
但这种理解和解释的过程在实践中究竟是如何运作的?以 “biophilic design”(亲生物设计)这个术语为例。为了生成它的 embedding,transformer 架构可以使用以下上下文:
“亲生物设计将自然元素融入建筑规划。”
“采用亲生物设计元素的办公室,其员工幸福感更高。”
“……植物、自然光和水景是亲生物设计的关键要素。”
然后,模型会将这些上下文与已知的建筑和设计原则进行比较:
“可持续设计优先考虑与环境的和谐共生。”
“符合人体工程学的空间能够提高用户的舒适度与健康水平。”
模型会为 “biophilic design” 创建一个向量 embedding,其中包含“将自然元素融入人造环境”这一概念。同时,它还会补充相关属性,突出这种融合与健康、幸福感及环境可持续性之间的正向关联。
为你的使用场景选择合适的 embedding model,对应用性能至关重要。Qdrant 提供了与多种优秀 embedding API 的无缝集成,包括 Cohere、Gemini、Jina Embeddings、OpenAI、Aleph Alpha、Fastembed 和 AWS Bedrock,让模型选择变得更加容易。
如果你关注 NLP 和快速原型开发,包括语言翻译、问答和文本生成,那么 OpenAI 是一个很好的选择。Gemini 则非常适合图像搜索、重复内容检测和聚类任务。
下面的示例将使用 Fastembed。它专为效率和速度而设计,非常适合需要低延迟响应的应用,例如自动补全和即时内容推荐。
我们计划在后续文章中进一步探讨,如何根据性能、成本、集成难度和可扩展性选择最佳模型。
现在你已经熟悉了向量 Embeddings 的核心概念,不妨开始构建自己的 Neural Search Service。
本教程将通过一个实际应用,指导你如何基于 startups-list.com 上的公司描述,使用 Qdrant 进行文档管理。整个流程包括为数据创建 Embeddings、将其集成到 Qdrant 的 vector database 中、构建搜索 API,最后使用 FastAPI 部署解决方案。
你可以在在线演示中查看这个项目最终版本的实际效果。
欢迎告诉我们你正在使用 Embeddings 构建什么!加入我们的 Discord 社区,分享你的项目!