![What is vector search? Complete guide [2025]](/_next/image?url=https%3A%2F%2Funable-actionable-car.media.strapiapp.com%2Fwhat_is_vector_search_d70ac43a9f.png&w=3840&q=75)
曾经想找一首歌的歌词却记不住确切的词语吗?
于是你做了次优选择——打开搜索引擎,输入你记得最好的词语,然后奇迹般地,你正在寻找的那首歌就出现了。
这就是向量搜索在幕后工作的方式。
近年来,向量搜索在各行各业中得到了越来越广泛的应用,从支持电子商务引擎(无需确切的产品名称就能返回正确的产品)到帮助企业评估其AI聊天机器人的准确性。
在本文中,我们将讨论向量搜索以及如何利用它快速准确地检索非结构化数据。
阅读完本文后,您将了解到
- 什么是向量和向量搜索嵌入
- 向量搜索带来的好处和挑战
- 向量搜索嵌入的应用
- 向量搜索与其他搜索技术的区别
我们开始吧。
什么是向量搜索?
向量搜索是一种定义和检索与给定查询最相似信息的方法。与查找精确匹配的传统搜索引擎不同,向量搜索将查询和要检索的数据都转换为数值向量,然后查找并返回最接近的匹配项。
例如,如果您在向量搜索引擎中使用关键词“世界暖”进行搜索,即使这没有意义,您也会得到关于全球变暖、气候变化、清洁能源和温室气体等概念上相似的结果。搜索引擎会理解您的意图,即使您的查询不准确,结果也正是您需要的。
如今,向量搜索在多媒体、电子商务、金融、医疗保健、客户支持、供应链物流、教育等各个行业都有应用。
让我们看看向量搜索是如何工作的。
向量搜索如何工作?
要了解向量搜索的工作原理,我们需要先了解一些关于向量嵌入的背景知识。向量嵌入是各种数据类型(文本、文档、图像或视频)的数值表示,它们捕捉了数据的语义含义。
以下是向量搜索如何检索结果。
- 存储向量嵌入:在执行搜索之前,所有相关项目(文本、图像等)都会转换为向量嵌入并存储在向量数据库中。
- 将搜索查询转换为嵌入:当用户提交查询时,它会使用相同的嵌入模型转换为向量嵌入。
- 比较嵌入:然后,模型将查询嵌入与存储的嵌入进行比较,以找到最相似的嵌入。
- 返回结果:最相似的项目会被排名并作为搜索结果返回给用户。匹配项根据查询嵌入与数据库中嵌入的接近程度返回。这确保了基于含义而不是逐字准确性的匹配。具体来说,使用余弦相似度和欧几里得距离等指标来计算嵌入之间的数学距离,并返回距离较短的嵌入。
例如,文章“如何照顾你的猫”和“饲养小猫的初学者指南”作为嵌入存储在向量数据库中。这些嵌入之间的数学距离预计会很小,因为两篇文章都讨论了相似的动物。搜索“猫咪护理”可能会返回这两篇文章,即使其中一篇是关于猫的,另一篇是关于小猫的。
我们刚刚介绍了一堆复杂的术语。现在,让我们深入了解每个术语的含义。
在向量搜索的上下文中,什么是向量?
在向量搜索的上下文中,向量是一个数字数组,代表一段数据。它们有助于将文本、图像甚至视频中的数据转换为数字。
向量是多维的。一个向量可以有数百个维度,每个维度都根据特定因素捕获项目的上下文。例如,在上图中,维度包括主题、情感和形式等。
现在,让我们讨论向量搜索嵌入。
什么是向量搜索嵌入?
向量嵌入是机器学习模型生成的输入数据的密集数值表示,旨在实现有效搜索。这些嵌入表示与查询嵌入进行比较的数据。
创建向量搜索嵌入的过程包括以下步骤:
- 识别数据类型(文本、图像等)
- 预处理数据
- 应用正确的嵌入模型
- 评估嵌入质量
- 如果需要,优化结果
有各种机器学习模型用于将数据类型转换为嵌入。例如,Transformer 的双向编码器表示(BERT)、全局向量(GloVe)和 Word2Vec。
向量嵌入广泛应用于图像识别、相关性排名、客户意图理解及其他应用。
向量搜索有哪些好处?
向量搜索在多个方面都有帮助。让我们讨论一些具体的方面:
1. 提高搜索结果的相关性
由于向量搜索理解上下文和查询的含义,您可以轻松获得高度相关的结果。“冬季服装”的向量搜索会理解上下文并返回“手套”、“风衣”和“夹克”等结果。
2. 处理非结构化数据
据《福布斯》报道,世界上约80%的数据是非结构化的,其中90%可能仍未被分析。通过向量搜索,您可以更好地表示和解释非结构化数据,而不仅仅是表格数据。
例如,向量搜索能够开发强大的图像和视频识别模型。安全摄像头可以通过从每一帧中提取特征向量并将其与存储的向量进行比较来分析实时视频。
3. 多语言理解
您可以使用向量搜索来查找与查询相似的结果,即使它们是不同语言的。“BERT多语言”模型允许在104种语言中进行向量嵌入。
在这种向量数据库中,“school”和“escuela”会彼此接近,因为西班牙语单词“escuela”的意思是“school”。
4. 个性化搜索体验
向量搜索可以利用其理解上下文的能力来个性化搜索结果和体验。通过将搜索历史转换为向量,企业可以根据用户的个性化体验识别相关结果。
例如,如果一个音乐应用用户通常听舒缓的背景音乐,那么后续的搜索会倾向于舒缓的歌曲而不是快节奏的歌曲。
5. 可扩展的AI驱动功能
向量搜索支持AI驱动的功能,如聊天机器人、推荐引擎和虚拟助手。
一个例子是将公司的公开文档添加到ChatGPT。LLM将文档文本转换为嵌入,然后可以通过将用户查询与文档嵌入进行匹配来准确回答问题。
向量搜索面临哪些挑战?
向量搜索是一项颠覆性的技术,但一些挑战不容忽视。
1. 计算成本和性能
向量搜索涉及大量多维向量,需要大量的计算资源用于向量索引、存储和推理。一个向量可以有高达1536个维度,执行一次向量搜索可能意味着比较数百万个向量。
此外,向量搜索采用近似最近邻(ANN)等算法,这需要大量的内存和计算资源。尝试通过分层可导航小世界(HNSW)索引等方式优化此过程也需要大量计算。
2. 实施复杂性
实施向量搜索需要陡峭的学习曲线。您必须掌握大量概念,例如机器学习模型、嵌入技术和向量数据库。
3. 嵌入质量
糟糕的嵌入等于糟糕的结果,毋庸置疑。在构建向量搜索引擎时,选择正确的嵌入模型是最重要的事情之一。
此外,向量搜索并不仅仅止于嵌入;数据库的索引也必须精确。否则,搜索结果将变得不可靠。
4. 可解释性和调试
由于向量搜索是基于含义和上下文的,因此解释和理解一些结果可能很困难。这会创建一个“黑箱”系统,很难精确地看到为什么会返回某个特定结果。
当结果不正确时,诊断问题可能很困难。它可能源于选择不当的嵌入模型、次优的索引、效率低下的相似性度量或不当的优化。许多可能的原因使得调试成为一项复杂的任务。
5. 数据隐私和安全
如果向量搜索中的向量处理不当,敏感数据可能会泄露。由于嵌入是直接从原始数据派生出来的,因此能够访问嵌入模型或向量索引的攻击者可能会执行重建攻击以恢复敏感信息。
此外,向量之间的相似性泄露可能会暴露用户行为模式或私人关联,构成严重的隐私风险。
向量搜索的应用和用例有哪些?
向量搜索的用例涵盖多个行业,包括搜索引擎和推荐系统。
以下是其一些最常见的应用:
- 电子商务:您可以应用向量搜索进行准确的产品推荐。由于其进行相似性和多模态搜索的能力,向量搜索可以提供与您正在寻找的产品相似的产品。
- 医疗保健:放射科医生可以在医学影像中使用向量搜索来识别肺炎或肿瘤等疾病。此用例使用一种称为卷积神经网络(CNN)的向量模型,将胸部X光片转换为向量,从而推断出肿瘤中的相似模式。
- AI驱动的客户支持(聊天机器人):向量搜索可以提供自然语言的高级交互。许多AI聊天机器人将向量搜索与语言模型相结合,以提供准确且有意义的响应。
- 基于图像的搜索:向量搜索用于面部识别软件和社交媒体上的视觉内容推荐。
- 语音助手查询:向量搜索通过实现上下文交互改变了语音助手的功能。一个很好的例子是智能家居控制设备。这些设备使用向量搜索来理解命令中的细微差别。例如,命令“让房子暖和”被转换为向量,允许设备调整室内温度。
- 文档分类和检索:向量嵌入可以捕捉文档的主题,使其易于分类和检索。
- 混合搜索:向量搜索可以与其他搜索技术(如关键词搜索)结合使用,以进一步增强搜索结果。
- 客户反馈情感分析:您可以使用向量搜索来深入了解客户的意见和反馈,并确定其总体是积极的还是消极的。
到目前为止很有趣!现在,让我们看看公司如何在他们的产品中使用向量搜索。
有哪些向量搜索的例子?
以下是我们日常生活中可能使用的一些向量搜索示例:
- 谷歌搜索:使用BERT(Transformer的双向编码器表示)等向量模型来解释搜索查询。
- Netflix:了解您的观看习惯,将其与类似观众的习惯进行比较,然后推荐您可能喜欢的电影或节目。
- Spotify:根据您的听歌历史和音频嵌入推荐音乐。
- Facebook:根据您的个人资料信息推荐朋友。
- Pinterest:利用图像嵌入,使用户能够发现相似的图像。例如,如果您搜索“装饰花园”,Pinterest会返回装饰花园的布局。
让我们看看如何在您的项目中实现向量搜索。
如何实现向量搜索
根据我们对向量搜索的所有说明,很明显将其实现到您的项目中可能是一个挑战。但是,如果您使用正确的工具,例如 Meilisearch,它就不必如此。
Meilisearch是一个开源平台,可以与各种软件产品无缝集成。它还提供出色的文档和全面的用户指南。
让我们看看使用 Meilisearch 实现向量搜索的分步过程:
1. 运行 Meilisearch 服务器
第一步是自托管 Meilisearch。为此,请从官方文档下载 Meilisearch 二进制文件。
使用简单的命令./meilisearch
在本地运行它。Meilisearch 可通过http://127.0.0.1:7700访问。
或者,您可以使用 Docker 运行 Meilisearch 服务器,命令为
# Using Docker (recommended) docker run -d -p 7700:7700 getmeili/meilisearch:v1.6 # Or using Homebrew brew install meilisearch meilisearch
2. 设置 Meilisearch MCP 服务器
向量搜索使用 Meilisearch MCP 服务器执行。如果您尚未安装,请使用 Claude Desktop 安装 Meilisearch MCP 服务器。
# Using pip pip install meilisearch-mcp # Or using uvx (recommended) uvx -n meilisearch-mcp
配置 Claude Desktop 连接到 Meilisearch 服务器。在claude_desktop_config.json
文件中,包含以下内容:
{ "mcpServers": { "meilisearch": { "command": "uvx", "args": ["-n", "meilisearch-mcp"] } } }
3. 启用向量搜索
向量搜索是一个实验性功能,因此我们必须在 Meilisearch 中明确启用它。在 Claude Desktop 中,输入:
# Enable the vector search experimental feature on Meilisearch enable-vector-search
4. 配置向量嵌入器
使用外部嵌入模型为您的数据生成嵌入。我们可以使用 OpenAI、Ollama 和Hugging Face等模型。
或者,我们可以让 Meilisearch 为我们生成向量。例如,要使用 OpenAI 嵌入器模型将索引中的所有文本转换为可搜索的 1536 维向量,请在 MCP 服务器(即 Claude Desktop)中输入命令:
# Example: Configure OpenAI embedder update-embedders '{ "indexUid": "my-index", "embedders": { "openai-embedder": { "source": "openAi", "model": "text-embedding-3-small", "dimensions": 1536 } } }
5. 将数据转换为向量
下一步涉及通过向量嵌入器将您的文档转换为可搜索的向量。
使用add-documents
添加文档及其向量。在此示例中,id
、title
和content
包含文档,而vectors
是来自 OpenAI 的嵌入。文档保存在索引my-index
中。
# Add documents with vector embeddings to Meilisearch add-documents '{ "indexUid": "my-index", "documents": [ { "id": "1", "title": "Vector search guide", "content": "This is about vector search...", "_vectors": { "openai-embedder": [0.123, 0.456, 0.789] } } ] }
要让 Meilisearch 自动生成嵌入,只需在文档中跳过 _vectors 键即可。
# Add documents with vector embeddings to Meilisearch add-documents '{ "indexUid": "my-index", "documents": [ { "id": "1", "title": "Vector search guide", "content": "This is about vector search..." } ] }
6. 执行向量搜索
现在文档已经表示为嵌入,您可以将搜索查询输入到您的向量搜索中。系统会处理搜索查询,计算向量相似度,匹配语义结果,然后根据相似度得分对结果进行排名。
例如,以下命令搜索my-index
中的向量。
# Perform a vector search on the index using Meilisearch CLI search '{ "indexUid": "my-index", "vector": [0.123, 0.456, 0.789, …], "limit": 10 }'
结果将返回前10个最相似的文档,按其向量相似度分数排名。
现在我们了解了 Meilisearch 的向量搜索如何工作,向量搜索与关键词搜索相比如何?
向量搜索与其他模型有何不同?
搜索引擎有多种形式——关键词搜索、上下文搜索、语义搜索和混合搜索——每种都有独特的方法和优势。让我们探讨一下向量搜索与它们各自的比较。
向量搜索 vs. 关键词搜索
向量搜索根据向量嵌入查找结果,而关键词搜索根据精确的关键词匹配查找结果。
向量搜索和关键词搜索之间的主要区别如下所示。
向量搜索 vs. 语义搜索
这些是相似但又不同的。向量搜索侧重于意义,而语义搜索侧重于理解词语背后的意图。主要区别在于语义搜索使用自然语言处理(NLP)而不是向量嵌入。语义搜索也称为AI驱动搜索。
向量搜索和语义搜索之间的主要区别如下所示。
向量搜索 vs. 上下文搜索
向量搜索和上下文搜索也密切相关,有时可以互换使用。但它们之间仍然存在一些差异。
向量搜索使用向量嵌入之间的语义相似性,而上下文搜索则侧重于查询历史、用户意图和位置等因素。
向量搜索和上下文搜索之间的主要区别如下所示。
向量搜索 vs. 混合搜索
混合搜索结合了关键词搜索和语义搜索。混合搜索也可以包括向量搜索。
向量搜索和混合搜索之间的主要区别如下表所示。
那么,向量搜索的未来会怎样?
2025年向量搜索的最终思考
如果您是一名软件工程师、数据科学家或开发人员,并且仍然在为传统关键词搜索的局限性而苦恼,那么您应该考虑将向量搜索作为一种可行的解决方案。