暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch 稀疏向量嵌入:概述与实现

新智锦绣 2025-04-24
252

点击蓝字关注我们


Elasticsearch 提供了语义搜索功能,允许用户通过自然语言查询并检索相关信息。为了实现这一功能,目标文档和查询首先需要通过嵌入过程转换为向量表示,这一过程由运行在 Elasticsearch 内部或外部的机器学习(ML)模型处理。


稀疏向量与密集向量的区别


密集向量


密集向量是固定维度的向量,每个元素都是一个数值(默认为浮点数)。大多数元素都是非零值,表示文本的某些特征,但这些特征的含义通常不易被人理解。

    [0.13586345314979553, -0.6291824579238892, 0.32779985666275024, 0.36690405011177063, ...]


    稀疏向量


    稀疏向量主要由零值组成,只有少数非零值。它们通常以键值对的形式存储,每个键(特征)通常对应一个有意义的术语或概念。

      {"你好":1.2,"ES":0.3,…}


      稀疏向量的优势


      零样本学习


      稀疏向量(如 ELSER 生成的)可以很好地泛化到新领域,而无需大量微调。与密集向量模型不同,稀疏向量依赖于基于术语的表示,使其在零样本检索中更有效。


      资源效率


      稀疏向量比密集向量更节省资源。由于它们主要包含零值,并且只存储非零值作为键值对,因此需要更少的内存和存储空间。


      在 Elasticsearch 中使用稀疏向量


      从 Elasticsearch 8.17 开始,您可以使用 Hugging Face 的稀疏向量模型。以下是实现步骤:


      1. 找到稀疏向量模型


      在 Hugging Face 上浏览适合您用例的稀疏嵌入模型,确保模型使用支持的标记化方法。


      2. 将模型上传到 Elasticsearch


      使用 Eland 的 CLI 工具将模型导入 Elasticsearch。

        eland_import_hub_model --url "your.elasticsearch.host--es-api-key "your_api_key" --hub-model-id naver/splade-v3-distilbert --task-type text_expansion --start


        3. 定义索引映射


        创建一个包含 sparse_vector 字段的索引。

          PUT sparse-test
          {
            "mappings": {
              "properties": {
                "content_embedding": {
                  "type": "sparse_vector"
                },
                "content": {
                  "type": "text"
                }
              }
            }
          }


          4. 创建摄取管道


          使用推理处理器创建摄取管道,将文本信息嵌入到稀疏向量中。

            PUT _ingest/pipeline/sparse-test-pipeline
            {
              "processors": [
                {
                  "inference": {
                    "model_id""naver__splade-v3-distilbert",
                    "input_output": [
                      {
                        "input_field""content",
                        "output_field""content_embedding"
                      }
                    ]
                  }
                }
              ]
            }


            5. 使用管道摄取数据


            将文本数据摄取到索引中,内容将自动嵌入为稀疏向量表示。

              POST sparse-test/_doc/1?pipeline=sparse-test-pipeline
              {
                "content""Elasticsearch provides a semantic search feature that allows users to query in natural language and retrieve relevant information."
              }


              结论


              稀疏向量为 Elasticsearch 提供了强大且高效的搜索能力。与密集向量相比,稀疏向量在零样本性能和资源效率方面具有显著优势。从 Elasticsearch 8.17 开始,用户可以根据具体需求选择密集或稀疏向量模型,探索语义搜索的新可能性。

              通过稀疏向量,Elasticsearch 的语义搜索功能将更加强大和灵活,帮助用户更高效地处理复杂查询。




              关于公司

              感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。


              欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!

              Elastic 微信群

              EDB 微信群


              发现“分享”“赞”了吗,戳我看看吧


              文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论