一句话定义
一个文本嵌入是一个数值向量,用于表示文本,以便系统可以比较学习到的模式以进行相似性搜索、聚类或检索 [1][2]。
快速回答
本文主要关注用于搜索和检索增强生成的文本嵌入。文本嵌入将一个词、句子、段落或文档块转换为一串数字。这串数字通常称为向量。在嵌入模型中,向量接近的文本被视为相似。
向量接近度表示任务中学习的模式;它不是真理、身份、意图或事实等价的证明。两个段落可能接近是因为它们使用相关用语、讨论相同主题或符合学习到的语义模式。这并不意味着一个段落证明另一个段落,两者都准确,或系统完全理解了用户目标。
为什么重要
嵌入是现代AI工具可以按含义搜索而非仅按精确单词的原因之一。如果用户询问“失败激活后的退款”,关键词系统可能只查找这些词。基于嵌入的搜索系统可能会找到关于退货、许可证错误、激活失败或支持例外的段落,如果模型将这些想法彼此靠近的话。
这对于RAG系统、知识库搜索、重复检测、聚类、推荐和语义检索很有用。Sentence-BERT展示了一种有影响力的方法来创建可以使用余弦相似性进行比较的句子嵌入,使得相似性搜索和聚类比以前使用BERT风格方法逐一比较句子对更加实用[1]。
但嵌入不是魔法意义。MTEB的创建是因为文本嵌入需要在许多任务、数据集和语言上进行广泛评估;其作者发现没有一种方法在所有任务中都占优[2]。这是对构建者的实际教训:根据实际工作选择和测试嵌入,而不是根据一个通用的声明,即某个模型是“最佳”的。
如何工作
典型的文本嵌入工作流程有四个步骤。首先,将源材料拆分为段落、章节或记录等块。其次,将每个块发送到嵌入模型中,该模型会返回一个向量。第三,将向量与文档元数据一起存储在搜索索引或向量数据库中。第四,当用户提问时,对问题进行嵌入并搜索附近的向量。
然后可以将检索到的段落直接显示为搜索结果,或传递到RAG系统中作为上下文。语言模型可以使用这些段落来起草答案。嵌入不会写出答案,它有助于决定哪些材料可能足够相关以进行检索。
相似性通常以数学方式衡量,通常使用余弦相似性或相关距离度量。该评分对于排名候选者很有用,但它不是校准的真实评分。高相似性的段落仍可能是过时的、不完整的、未经授权的,或者仅与精确问题松散相关。
端到端示例
想象一家公司有一个包含2000个政策和故障排除页面的帮助中心。团队将每个页面分成部分,嵌入每个部分,并将带有产品、地区、日期和访问级别等元数据的向量存储起来。用户问:“如果试用期结束后激活失败,我可以退款吗?”
系统将问题嵌入并搜索附近的段落。它可能会检索退款政策部分、激活故障排除笔记和一个地区例外页面。一个好的界面会显示这些段落和日期。如果RAG助手起草了答案,用户仍需检查检索到的段落是否确实支持该声明,政策是否最新,以及客户是否被允许查看该信息。
常见误解
最大的误解是嵌入相似性意味着事实等价。它并不如此。'如何取消订阅'和'如何暂停订阅'在向量空间中可能很接近,但它们可能有不同的政策答案。'拒绝退款'和'批准退款'可能有大量相同词汇,但含义却相反。
另一个误解是嵌入(embeddings)消除了对搜索设计的需求。块大小、元数据过滤器、访问规则、查询重写、重新排序、新鲜度和评估都会影响结果。即使嵌入模型本身合理,薄弱的检索设置也可能给语言模型提供错误的证据。
风险和限制
嵌入系统可以检索合理但未经证实的材料。它们可能会错过罕见的例外情况,混淆近邻主题,隐藏在学习表示中的偏见,或在不同语言和领域中表现不均。ALIGN-SIM发现,研究的句子编码器并未与所有测试的语义相似性标准对齐,即使某些在流行的基准测试中表现良好 [3]。这支持了一种谨慎的规则:评估你需要的行为,而不仅仅是你喜欢的基准数字。
安全和隐私也很重要。如果嵌入是从私人文档构建的,检索系统必须在显示或使用检索到的块之前强制执行权限。向量本身并不是权限边界。通过不良索引、元数据错误、日志或从未经授权的文档生成的答案,敏感数据仍可能被泄露。
实用判断检查表
在信任基于嵌入的结果之前,请问:嵌入了什么内容?它是如何分块的?使用了哪些元数据过滤器?检索到的段落是否最新且授权?该段落是否支持确切的主张?相邻的段落是否可能有相反的含义?该系统是否在真实用户问题和已知失败案例上进行了测试?
对于低风险的探索,嵌入可以使得搜索更加宽容和有用。对于法律、医疗、金融、雇佣、客户或安全决策,仅将嵌入作为检索支持使用。最终答案仍需要来源验证、访问控制,并且在高风险使用中需要有人负责。