本文档介绍如何使用向量嵌入构建用于语义搜索的搜索应用程序。它涵盖了嵌入的基本概念、创建和搜索嵌入索引的过程,以及构建能够查找非结构化数据中相关信息的应用程序的实际实现细节。有关常规文本生成的信息,请参阅文本生成应用程序,有关基于聊天的交互,请参阅聊天应用程序。
由生成式 AI 驱动的搜索应用程序通过理解文本的语义含义,超越了传统的关键词匹配。在此系统上下文中,搜索应用程序使用嵌入(文本的数值表示)来根据含义而不是精确的词语匹配来查找相关内容。
存储库中演示的主要用例是构建一个搜索工具,该工具允许学生通过自然语言提问来搜索教育性 YouTube 视频。该系统会返回视频中可找到相关答案的具体时间点的链接。
来源:08-building-search-applications/README.md8-15
传统的搜索(基于关键词)查找文本中的精确词语匹配,常常会遗漏使用不同术语表达相同概念的相关内容。语义搜索理解单词背后的含义,可以根据概念相似性返回结果。
以存储库中的示例为例:用户使用语义搜索查询“我梦想中的汽车”时,系统会理解其意图是查找关于理想汽车的信息,而不是关于汽车的梦想。语义搜索理解意图和上下文,而不仅仅是单个单词。
来源:08-building-search-applications/README.md40-44
嵌入是文本的数值表示(向量),它捕获了语义含义。它们允许 AI 系统以数学方式理解和比较文本,从而实现语义搜索。
嵌入将文本表示为高维空间中的点,其中含义相似的文本无论使用何种特定词语,都会被放置得更近。在该系统中,OpenAI 嵌入模型用于生成这些向量表示。
例如,文本“今天我们将学习 Azure 机器学习”可能会表示为由 1536 个数字组成的向量,其中每个数字代表文本含义的某个方面。
来源:08-building-search-applications/README.md46-62 08-building-search-applications/README.md63-73
余弦相似度是用于确定两个嵌入向量有多接近的技术。它衡量了多维空间中两个向量之间夹角的余弦值。
关于余弦相似度的要点
来源:08-building-search-applications/README.md78-86
该存储库包含一个从 YouTube 视频字幕创建嵌入索引的过程,演示了如何为语义搜索准备数据。
对于生产应用程序,嵌入索引通常会存储在向量数据库中,如 Azure Cognitive Search、Redis、Pinecone 或 Weaviate。为简单起见,示例应用程序将索引存储在加载到 Pandas DataFrame 中的 JSON 文件中。
来源:08-building-search-applications/README.md63-76
实施过程涉及几个关键步骤:
来源:08-building-search-applications/README.md98-149
核心搜索功能包括:
该应用程序不仅返回相关片段,还提供指向 YouTube 视频中确切时间戳的链接,这些链接提供了答案,因此对于教育用途非常有用。
来源:08-building-search-applications/README.md152-158
虽然存储库中的示例使用了简单的 JSON 文件进行存储,但生产应用程序通常会使用专门的向量数据库,这些数据库专为大规模高效的相似性搜索而设计。
存储库中提到的一些选项包括:
这些数据库经过优化,能够高效地存储和搜索嵌入向量,支持快速的最近邻搜索算法,这对于大规模语义搜索至关重要。
来源:08-building-search-applications/README.md76-77
该搜索应用程序与 Azure OpenAI 服务集成,特别是使用 text-embedding-ada-002 模型生成嵌入。这为将文档和查询转换为相同的向量空间提供了一种一致的方法。
关键配置详情
text-embedding-ada-002Azure OpenAI 服务已部署,可通过 Azure Cloud Shell 访问,或以编程方式进行配置。
来源:08-building-search-applications/README.md100-149
搜索应用程序是此系统中可以使用生成式 AI 构建的应用程序类型之一。它们与其他类型的应用程序互为补充:
搜索应用程序尤其与检索增强生成(RAG)概念(#5.1)相关,该概念结合了搜索功能和生成式响应。
通过嵌入和语义搜索驱动的搜索应用程序与传统的基于关键词的搜索相比,提供了更直观、更有效的知识检索方式。通过理解文本的含义而不是仅仅匹配单词,这些应用程序可以提供更相关的结果,尤其是在教育和知识发现用例中。
本存储库中演示的基于嵌入的搜索方法为构建各种需要在大文本数据集中查找相关内容的应用程序奠定了基础。当与其他生成式 AI 功能结合使用时,它就能实现强大的系统,这些系统不仅可以查找信息,还可以理解和解释复杂信息。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(b88b09)