什么是向量嵌入?
嵌入是机器学习中对输入数据语义的数值表示。它们将复杂的高维数据(例如文本、图像或音频)的含义提取到向量中,从而使算法能够更高效地处理和分析数据。
为什么要使用向量嵌入?
你有没有过这样的经历:浏览社交媒体时,感觉内容都特别适合你?先是你在关注的新闻,接着是你最喜欢的技术栈的完美教程,然后是一个让你笑到喷嚏的表情包。
或者想想YouTube是如何推荐你最终喜欢上的视频的。这些视频的创作者你甚至都没听说过,而且你也没给YouTube发过关于你理想内容偏好的留言。
这就是嵌入的魔力。
这些数据是通过深度学习模型分析您的在线互动数据得出的。这些数据包括您的点赞、分享、评论、搜索记录、您停留时间较长的内容类型,甚至是您选择跳过的内容。它还能让算法预测您未来可能感兴趣的内容。
相同的嵌入内容可以重新用于搜索、广告和其他功能,从而创造高度个性化的用户体验。
它们使高维数据更易于管理。这降低了存储需求,提高了计算效率,并使大量非结构化数据变得有意义。
嵌入是如何工作的?
自然语言的细微差别,以及图像、声音或用户交互等大型数据集中隐藏的含义,都难以用表格来概括。传统的关系型数据库无法高效查询当前使用和产生的绝大多数数据类型,导致此类信息的检索非常有限。
在词嵌入空间中,同义词往往出现在相似的语境中,最终具有相似的词嵌入。这个空间是一个足够智能的系统,它能够理解“漂亮”和“有吸引力”属于同一范畴,而无需明确告知。
这就是魔法所在。
向量嵌入的核心在于语义。它将“词义取决于它所处的语境”这一理念大规模地应用到语义层面。
这种能力对于创建搜索系统、推荐引擎、检索增强生成 (RAG) 以及任何受益于对内容的深入理解的应用程序都至关重要。
嵌入是通过神经网络创建的。它们将复杂的关系和语义捕捉到稠密的向量中,这些向量更适合机器学习和数据处理应用。然后,它们可以将这些向量投影到合适的高维空间,具体来说,就是向量数据库。
数据点的含义隐含地由其在向量空间中的位置决定。向量存储后,我们可以利用它们的空间属性进行最近邻搜索。这些搜索基于数据点在空间中的接近程度,检索语义相似的数据项。
向量表示的质量决定了性能。最适合您的嵌入模型取决于您的具体应用场景。
创建向量嵌入
嵌入技术将人类语言的复杂性转化为计算机可以理解的格式。它利用神经网络为输入数据赋予数值,使得相似的数据具有相似的值。
例如,如果我想让我的电脑理解“对”这个词,我可以给它分配一个像 1.3 这样的数字。这样,当我的电脑看到 1.3 时,它就看到了“对”这个词。
现在我想让我的计算机理解单词“right”的上下文。我可以使用二维向量,例如 [1.3, 0.8],来表示“right”。第一个数字 1.3 仍然标识单词“right”,而第二个数字 0.8 则指定了上下文。
我们可以引入更多维度来捕捉更多细微差别。例如,第三个维度可以表示词语的正式程度,第四个维度可以表示其情感内涵(正面、中性、负面),等等。
这一概念的演变催生了诸如Word2Vec和GloVe之类的词嵌入模型。它们学习理解词语出现的上下文,从而为每个词语生成高维向量,捕捉更为复杂的属性。
然而,这些模型仍然存在局限性。它们基于单词在文本中的使用情况,为每个单词生成一个单独的向量。这意味着单词“right”的所有细微差别都被融合到一个向量表示中。这对于计算机来说,不足以完全理解上下文。
那么,我们如何帮助计算机理解不同语境下的语言细微差别呢?换句话说,我们如何区分以下几种情况:
- 你的答案是正确的。
- “在拐角处右转”
- “人人享有言论自由的权利”
这些句子都使用了“right”这个词,但含义各不相同。
更高级的模型,例如BERT和GPT,使用基于Transformer 架构的深度学习模型,这有助于计算机理解词语的完整上下文。这些模型关注整个上下文,理解词语在其周围环境中的具体用法,然后为每种用法创建不同的词嵌入。
但这种理解和诠释过程在实践中是如何运作的呢?例如,想想“亲生物设计”这个术语。为了生成它的嵌入,Transformer 架构可以使用以下上下文:
- “亲生物设计将自然元素融入建筑规划中。”
- “采用亲生物设计元素的办公室,员工幸福感更高。”
- “……植物、自然光和水景是亲生物设计的关键要素。”
然后,它将各种情境与已知的建筑和设计原则进行比较:
- “可持续设计优先考虑环境和谐。”
- “符合人体工程学的空间能够提升用户的舒适度和健康。”
该模型创建了一个“亲生物设计”的向量嵌入,概括了将自然元素融入人造环境的概念。此外,该模型还添加了属性,以突出这种融合与其对健康、福祉和环境可持续性的积极影响之间的关联。
与嵌入式 API 集成
为您的用例选择合适的嵌入模型对应用程序性能至关重要。Qdrant 通过与一系列最佳嵌入 API 的无缝集成,简化了这一过程,这些 API 包括Cohere、Gemini、Jina Embeddings、OpenAI、Aleph Alpha、Fastembed和AWS Bedrock。
如果您正在寻找自然语言处理和快速原型开发工具,包括语言翻译、问答系统和文本生成,OpenAI 是一个不错的选择。Gemini 则非常适合图像搜索、重复检测和聚类任务。
我们将在下面的示例中使用 Fastembed,它旨在提高效率和速度,非常适合需要低延迟响应的应用程序,例如自动完成和即时内容推荐。
我计划在以后的文章中深入探讨如何根据性能、成本、集成便捷性和可扩展性来选择最佳模型。
使用 Fastembed 创建神经搜索服务
既然你已经熟悉了向量嵌入的核心概念,何不开始构建你自己的神经搜索服务呢?
本教程将指导您如何根据startups-list.com上的公司描述,实际应用 Qdrant 进行文档管理。内容涵盖从嵌入数据、将其与 Qdrant 的矢量数据库集成、构建搜索 API,到最终使用 FastAPI 部署解决方案。
请访问在线演示网站,查看该项目的最终版本。
请告诉我们您正在使用嵌入式技术构建什么!加入我们的Discord社区,分享您的项目!
文章来源:https://dev.to/qdrant/what-are-vector-embeddings-24pd





