当前位置:

首页 > 业界资讯 > 亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索

亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索

AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com本文作者是来自OpenSearch中国研发团队的机器学习负责人杨扬博士以及机器学习工程师耿志超和管聪。OpenSearch是一个由亚马逊云科技发起的纯开源搜索和实时分析引擎项目。目前软件

本文目录
    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索
    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

    本文作者是来自 OpenSearch 中国研发团队的机器学习负责人杨扬博士以及机器学习工程师耿志超和管聪。OpenSearch 是一个由亚马逊云科技发起的纯开源搜索和实时分析引擎项目。目前软件超过 5 亿下载量,社区在全球拥有 70 个以上的企业合作伙伴。

    自从大模型爆火以来,语义检索也逐渐成为一项热门技术。尤其是在 RAG(retrieval augmented generation)应用中,检索结果的相关性直接决定了 AI 生成的最终效果。

    目前市面上绝大部分的语义检索实现方案,都是利用语言模型(Language Model)将一串文本编码为一个高维向量,并利用近似 k - 邻近搜索(k-NN)进行检索。面对 VectorDB 和语言模型部署(需要 GPU)高昂的费用,很多人望而却步。

    近日,亚马逊 OpenSearch 连同亚马逊上海人工智能研究院,在 OpenSearch NeuralSearch 插件中推出了 Neural Sparse 功能,解决了当前语义检索正在面临的以下三个挑战:

    • 相关性表现在不同查询上的稳定性:zero-shot 语义检索要求语义编码模型在不同背景的数据集上都有不错的相关性表现,即要求语言模型即开即用,无需用户在自己的数据集上 fine-tune。利用稀疏编码与词向量(Term Vector)同源的特性,Neural Sparse 可以在遇到陌生文字表述(行业专有词、缩写等等)的时候向文本匹配降级,从而避免离谱的检索结果。
    • 在线搜索的时间效率:低时延对于实时检索应用的意义是显而易见的。目前流行的语义检索方法一般都会包含语义编码以及索引两个过程,这两者的速度决定了一个检索应用端到端的检索效率。Neural Sparse 独特的 doc-only 模式,无需在线编码,即能在与文本匹配相近的时延情况下,达成与一流语言模型相媲美的语义检索的精度。
    • 索引的存储资源消耗:商业化的检索应用对存储资源的消耗是非常敏感的。在对海量数据进行索引时,搜索引擎的运行成本与存储资源的消耗强相关。在相关实验中,索引相同规模的数据,Neural Sparse 仅需要 k-NN 索引的 1/10。同时内存消耗也大大小于 k-NN 索引。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索                     Relevance Demo

    • 文档主页:https://opensearch.org/docs/latest/search-plugins/neural-sparse-search/
    • 项目 Github 地址:https://github.com/opensearch-project/neural-search

    技术亮点

    稀疏编码与原生 Lucene 索引结合

    当前语义检索的主要方法来自于稠密编码(Dense Encoding),待检索的文档以及查询文本都会被语言编码模型转换为一个高维空间中的向量。例如 Sentence-BERT 中的 TASB 模型会生成 768 维的向量,All-MiniLM-L6 则会将文本转化为 384 维的向量。这一类高维向量的索引需要用到特殊的 k-NN 搜索引擎,例如最早基于树结构的 FLANN、基于哈希的 LSH、还有后来出现基于邻近图与跳表的 HNSW 以及最新基于量化的 FAISS 引擎。

    而稀疏编码(Sparse Encoding)则会将文本转化为一组 token 与权值的组合。这里的 token 是语言编码模型采用分割器对文本进行切割后产生的文字单元。例如使用 WordPiece 分割器,token 可以在一定程度上理解为「单词」,但也会出现单词过长而被切分为两个 token 的情况。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索                               稀疏编码与稠密编码对比

    由于稀疏编码所产生的 token - 权值组合,与传统文本匹配方法采用的 term-vector 非常类似,所以在 OpenSearch 中可以采用原生的 Lucene 索引去存储文档稀疏编码。相较于 k-NN 搜索引擎,原生的 Luence 引擎会更加轻便,占用的资源也较少。

    下表展示了采用 Lucene 进行文本匹配,采用 k-NN 引擎存储稠密编码以及采用 Lucene 存储稀疏编码的磁盘消耗以及运行时内存(runtime RAM)消耗的比较。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索                             *整个系统在只运行 OpenSearch 时的内存,包括 JVM 的堆内和堆外内存

    在陌生数据集上的自适应性

    根据 BEIR 文章中提及的,由于目前绝大部分的稠密编码模型都是基于 MSMARCO 数据集上精调(fine-tune)得到,模型在该数据集上表现非常优越。然而在其他的 BEIR 的数据集上进行 zero-shot 的测试时,稠密编码模型在大约有 60%~70% 的数据集上的相关性无法超越 BM25。这一点也可以从我们自己复现的对比实验中间看出(见下表)。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索                              部分数据集上几个方法的相关性表现比较

    我们在实验中发现稀疏编码在陌生数据集上的表现要优于稠密编码。虽然目前还没有更加详细的量化数据来印证,但根据在部分样本上的分析,其优势主要在两点:1)稀疏编码在近义词的联想方面更加突出,2)在遇到完全陌生的文本表述,例如一些专业术语,稀疏编码会更倾向于增强这些术语 token 的权值而弱化联想出的 token 的权值,使得检索过程向关键词匹配退化,追求的一个稳定的相关性表现。

    在 BEIR 基准上的实验中我们可以看到,Neural Sparse 的两个方法相较于稠密编码模型以及 BM25,相关性得分更高。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索

    极致速度:仅文档编码模式

    Neural Search 同时提供了一种能够提供极致线上检索速度的模式。在这种模式下,仅有待检索的文档会进行稀疏编码。相反,在在线检索的过程中,查询文本并不会调用语言编码模型进行编码。而仅仅使用分割器(tokenizer)对查询文本进行分割。由于省去了对深度学习模型的调用过程,不但大大降低了在线检索的时延,也节省了模型推理所需要的大量计算资源,例如 GPU 算力等。

    下表比较了文本匹配检索方法 BM25、稠密编码检索 BERT-TASB 模型、稀疏编码检索带查询编码 bi-encoder 方式以及稀疏编码检索仅文档编码 doc-only 在 MSMARCO v2 一百万量级数据集上的速度对比。我们可以清楚地看到仅文挡编码模式具有和 BM25 相近的速度表现,而且从上一节的表格中我们可以看到仅文档编码模式的相关性表现,并没有与带查询稀疏编码的方法差太多。可以说,仅文档编码模式是一个非常具有性价比的选择。

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索

    还要更快:使用两段式搜索进行加速

    前文中提到,在稀疏编码的过程中,文本被转化为一组 token 与权值的组合。这种转化产生了大量权值较低的 token,这些 token 虽然在搜索过程中占用了大部分时间,但对最终搜索结果的贡献并不显著。

    因此,我们提出了一种新的搜索策略,首先在第一次搜索中过滤掉这些低权值 token,仅依赖高权值 token 来定位排名较高的文档。随后在这些精选的文档上,重新引入之前被过滤的低权值 token 进行第二次详细评分,从而获取最终得分。

    通过这种方法,我们显著减少了两部分的延时:首先,在第一阶段搜索中,仅通过高权值 token 在倒排索引中进行匹配,大幅减少了不必要的计算时间。其次,在精确的小范围结果文档内再次评分时,我们仅对具有潜在相关性的文档计算低权值 token 的分数,进一步优化了处理时间。

    最终,这种改进的方法在仅文档编码模式(doc-only)上实现了与 BM25 搜索接近的延时表现,在带查询编码模式 (bi-encoder) 上则加快了 5 到 8 倍,极大地提升了 Neural Search 的延时表现和吞吐量。以下是在四个典型 BEIR 数据集上标准 neural sparse、两阶段 neural sparse、BM25 的时延对比:

    亚马逊云创新「神经稀疏检索」:仅需要文本匹配就能实现语义搜索                               两阶段式搜索速度对比

    用 5 步在 OpenSearch 中搭建 Neural Sparse 语义检索应用

    1. 设置启用 Neural Search

    首先设置集群配置来使得模型可以在本地集群上运行。
    PUT /_cluster/settings{"transient" : {"plugins.ml_commons.allow_registering_model_via_url" : true,"plugins.ml_commons.only_run_on_ml_node" : false,"plugins.ml_commons.native_memory_threshold" : 99}}

    2. 部署编码器

    Opensearch 目前开源了 3 个模型。相关注册信息都可以在官方文档中获取。我们以 amazon/neural-sparse/opensearch-neural-sparse-encoding-v1 为例,首先使用 register API 来注册:

    POST /_plugins/_ml/models/_register?deploy=true{    "name": "amazon/neural-sparse/opensearch-neural-sparse-encoding-v1",    "version": "1.0.1",    "model_format": "TORCH_SCRIPT"}
    在集群的返回中,可以看到 task_id
    {"task_id": "","status": "CREATED"}

    用 task_id 来得到详细的注册信息:

    GET /_plugins/_ml/tasks/

    在 API 返回中,我们可以拿到具体的 model_id:

    {"model_id": "","task_type": "REGISTER_MODEL","function_name": "SPARSE_TOKENIZE","state": "COMPLETED","worker_node": ["wubXZX7xTIC7RW2z8nzhzw"],    "create_time":1701390988405,"last_update_time": 1701390993724,"is_async": true}

    3. 设置预处理管线

    在索引之前,每个文档需要被编码的文本字段需要被转变成稀疏向量。在 OpenSearch 中,这一过程是通过预处理器来自动实现的。你可以使用以下 API 来创建离线索引时的处理器管线:

    PUT /_ingest/pipeline/neural-sparse-pipeline{  "description": "An example neural sparse encoding pipeline",  "processors" : [    {      "sparse_encoding": {        "model_id": "",        "field_map": {           "passage_text": "passage_embedding"        }      }    }  ]}

    如果需要开启两阶段加速功能 (非必需功能),则需要建立一个两阶段搜索管线,并在索引建立之后设置为默认的搜索管线。

    建立一个默认参数的两阶段加速搜索管线方式如下,更详细的参数设置和意义请参考 2.15 及以后版本的 OpenSearch 官方文档。

    PUT /_search/pipeline/two_phase_search_pipeline{  "request_processors": [    {      "neural_sparse_two_phase_processor": {        "tag": "neural-sparse",        "description": "This processor is making two-phase processor."      }    }  ]}

    4. 设置索引

    神经稀疏搜索利用 rank_features 字段类型来存储编码得到的词元和相对应的权重。索引将使用上述预处理器来编码文本。我们可以按以下方式创建索一个包含两阶段搜索加速管线的索引(如果不想开启此功能,可把 `two_phase_search_pipeline` 替换为 `_none` 或删除 `settings.search` 这一配置单元)。

    PUT /my-neural-sparse-index{  "settings": {    "ingest":{        "default_pipeline":"neural-sparse-pipeline"    },    "search":{        "default_pipeline":"two_phase_search_pipeline"    }  },  "mappings": {    "properties": {      "passage_embedding": {        "type": "rank_features"      },      "passage_text": {        "type": "text"      }    }  }}

    5. 使用预处理器导入文档并搜索

    在设置索引之后,客户可以提交文档。客户提供文本字段,而摄取进程将自动将文本内容转换为稀疏向量,并根据预处理器中的字段映射 field_map 将其放入 rank_features 字段:
    PUT /my-neural-sparse-index/_doc/{   "passage_text": "Hello world"}

    在索引中进行稀疏语义搜索的接口如下,将 替换为第二步中注册的 model_id:

    GET my-neural-sparse-index/_search{  "query":{    "neural_sparse":{      "passage_embedding":{        "query_text": "Hi world",        "model_id":       }    }  }}

    关于 OpenSearch

    OpenSearch 是一种分布式、由社区驱动并取得 Apache 2.0 许可的 100% 开源搜索和分析套件,可用于一组广泛的使用案例,如实时应用程序监控、日志分析和网站搜索。OpenSearch 提供了一个高度可扩展的系统,通过集成的可视化工具 OpenSearch 控制面板为大量数据提供快速访问和响应,使用户可以轻松地探索他们的数据。

    OpenSearch 由 Apache Lucene 搜索库提供技术支持,它支持一系列搜索及分析功能,如 k - 最近邻(KNN)搜索、SQL、异常检测、Machine Learning Commons、Trace Analytics、全文搜索等。
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    业界资讯
    相关文章 更多
    Llama3训练每3小时崩一次?豆包大模型、港大团队为脆皮万卡训练提效
    Llama3训练每3小时崩一次?豆包大模型、港大团队为脆皮万卡训练提效

    伴随大模型迭代速度越来越快,训练集群规模越来越大,高频率的软硬件故障已经成为阻碍训练效率进一步提高的痛点,检查点(Checkpoint)系统在训练过程中负责状态的存储和恢复,已经成为克服训练故障、保障训练进度和提高训练效率的关键。近日,字节跳动豆包大模型团队与香港大学联合提出了ByteCheckpoint。这是一个PyTorch原生,兼容多个训练框架,支持Checkpoint的高效读写和自动重新切分的大模型Checkpointing系统,相比现有方法有显著性能提升和易用性优势。本文介绍了大模型训练提效中C

    TPAMI 2024 | ProCo: 无限contrastive pairs的长尾对比学习
    TPAMI 2024 | ProCo: 无限contrastive pairs的长尾对比学习

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com本论文第一作者杜超群是清华大学自动化系2020级直博生。导师为黄高副教授。此前于清华大学物理系获理学学士学位。研究兴趣为不同数据分布上的模型泛化和鲁棒性研究,如长尾学习,半监督学习,迁移

    将图像自动文本化,图像描述质量更高、更准确了
    将图像自动文本化,图像描述质量更高、更准确了

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com皮仁杰:香港科技大学博士三年级学生,师从张潼教授和周晓方教授。于2024年获得苹果奖学金。目前主要研究方向是多模态大语言模型和数据为中心的AI。张鉴殊:武汉大学本科三年级学生,目前在张潼

    告别逐一标注,一个提示实现批量图片分割,高效又准确
    告别逐一标注,一个提示实现批量图片分割,高效又准确

    仅需一个任务描述,即可一键分割所有图片!SegmentationAnythingModel(SAM)的提出在图像分割领域引起了巨大的关注,其卓越的泛化性能引发了广泛的兴趣。然而,尽管如此,SAM仍面临一个无法回避的问题:为了使SAM能够准确地分割出目标物体的位置,每张图片都需要手动提供一个独特的视觉提示。如下图所示,即使点击的是同一物体(图(b)-(d)),微小位置变化都会导致分割结果的显著差异。这是因为视觉提示语义信息的缺乏,即使提供了想要分割的目标物体上,仍然可能引发歧义。框提示和涂鸦提示(图(e)(

    CVPR 2024 | 分割一切模型SAM泛化能力差?域适应策略给解决了
    CVPR 2024 | 分割一切模型SAM泛化能力差?域适应策略给解决了

    第一个针对「SegmentAnything」大模型的域适应策略来了!相关论文已被CVPR2024接收。引言大语言模型(LLMs)的成功激发了计算机视觉领域探索分割基础模型的兴趣。这些基础分割模型通常通过PromptEngineer来进行zero/few图像分割。其中,SegmentAnythingModel(SAM)是最先进的图像分割基础模型。图SAM在多个下游任务上表现不佳但是最近的研究表明,SAM在多种下游任务中并非具有很强的鲁棒性与泛化性,例如在医学图像、伪装物体、添加干扰的自然图像等领域表现较差。

    ECCV 2024 | 提升GPT-4V、Gemini检测任务性能,你需要这种提示范式
    ECCV 2024 | 提升GPT-4V、Gemini检测任务性能,你需要这种提示范式

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com本文作者来自浙江大学、上海人工智能实验室、香港中文大学、悉尼大学和牛津大学。作者列表:吴逸璇,王逸舟,唐诗翔,吴文灏,贺通,WanliOuyang,PhilipTorr,JianWu。其

    贾佳亚团队联手剑桥清华等共推评测新范式 一秒侦破大模型“高分低能”
    贾佳亚团队联手剑桥清华等共推评测新范式 一秒侦破大模型“高分低能”

    颠覆过往大模型评测标准,最新、最全、最权威的测评数据集MR-Ben来了!这是继今年4月发布堪称GPT-4+DALL-E-3的王炸产品超强视觉语言模型Mini-Gemini后,港中文贾佳亚团队再次提出的极具代表性的作品。在MR-Ben的“监督”下,大模型不仅要像学生那样会答题,还要像老师那样会阅卷,真实的推理能力无所遁形。MR-Ben细致地评测了不少国内外一线的开源和闭源模型,如GPT4-Turbo、Cluade3.5-Sonnet、Mistral-Large、Zhipu-GLM4、

    ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存
    ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com本文共同第一作者简介:张逸骅:密歇根州立大学计算机系博士三年级学生,师从SijiaLiu教授,主要研究方向是大模型的安全、隐私和效率问题。李平治:本科毕业于中国科学技术大学,将于2024

    哈工大提出创新迭代推理框架 DPE-MNER :充分发挥多模态表示潜力
    哈工大提出创新迭代推理框架 DPE-MNER :充分发挥多模态表示潜力

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com该文章的作者团队来自于哈工大社会计算与信息检索研究中心,作者团队构成:郑子豪、张梓涵、王泽鑫、付瑞吉、刘铭、王仲远、秦兵。多模态表示多模态命名实体识别,作为构建多模态知识图谱的一项基础而

    CVPR 2024 | 擅长处理复杂场景和语言表达,清华&博世提出全新实例分割网络架构MagNet
    CVPR 2024 | 擅长处理复杂场景和语言表达,清华&博世提出全新实例分割网络架构MagNet

    AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com。指代分割(ReferringImageSegmentation,RIS)是一项极具挑战性的多模态任务,要求算法能够同时理解精细的人类语言和视觉图像信息,并将图像中句子所指代的物体进行像

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。