<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Quynh Nguyen - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Quynh Nguyen - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/cn/search-labs/author/quynh-nguyen</link>
    </image>
    <link>https://www.elastic.co/cn/search-labs/author/quynh-nguyen</link>
    <atom:link href="https://www.elastic.co/cn/search-labs/rss/author/quynh-nguyen.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[cn]]></language>
    <lastBuildDate>Mon, 19 Oct 2026 19:40:30 GMT</lastBuildDate>
  <item>
    <title><![CDATA[利用混合搜索重排提高多语言嵌入模型的相关性]]></title>
    <description><![CDATA[了解如何在 Elasticsearch 中使用 Cohere 的 reranker 和混合搜索提高 E5 多语言嵌入模型搜索结果的相关性。]]></description>
    <content:encoded><![CDATA[<h2>引言</h2><p>在<a href="https://www.elastic.co/search-labs/blog/multilingual-embedding-model-deployment-elasticsearch">本系列的最后一部分</a>，我们介绍了如何部署 Elastic 预训练的 E5 模型（以及 Hugging Face 提供的其他多语言文本嵌入模型），并深入探讨了如何使用 Elasticsearch 和 Kibana 从文本数据中生成密集向量嵌入。在本博客中，我们将研究这些嵌入的结果，并强调利用多语言模型的显著优势。</p><p>现在我们已经有了索引<code>coco_multilingual</code> ，执行搜索时将会得到多种语言的文档，其中的 "en "字段可供我们参考：</p># GET coco_multilingual/_search
    {
       "_index": "coco_multilingual",
       "_id": "WAiXQJYBgf6odR9bLohZ",
       "_score": 1,
       "_source": {
         "description": "Ein Parkmeßgerät auf einer Straße mit Autos",
         "en": "A row of parked cars sitting next to parking meters.",
         "language": "de",
         "vector_description": {...}
       }
     },
     . . .<h2>用英语进行搜索</h2><p>让我们尝试用英语进行搜索，看看效果如何：</p>GET coco_multi/_search
{
"size": 10,
"_source": [
  "description", "language", "en"
],
"knn": {
  "field": "vector_description.predicted_value",
  "k": 10,
  "num_candidates": 100,
  "query_vector_builder": {
    "text_embedding": {
      "model_id": ".multilingual-e5-small_linux-x86_64_search",
      "model_text": "query: kitty"
    }
  }
}
}{
       "_index": "coco_multi",
       "_id": "JQiXQJYBgf6odR9b6Yz0",
       "_score": 0.9334303,
       "_source": {
         "description": "Eine Katze, die in einem kleinen, gepackten Koffer sitzt.",
         "en": "A brown and white cat is in a suitcase.",
         "language": "de"
       }
     },
      {
       "_index": "coco_multi",
       "_id": "3AiXQJYBgf6odR9bFod6",
       "_score": 0.9281012,
       "_source": {
         "description": "Una bambina che tiene un gattino vicino a una recinzione blu.",
         "en": "A little girl holding a kitten next to a blue fence.",
         "language": "it"
       }
     },
     . . .<p>在这里，尽管查询看起来非常简单，但我们要搜索的是 "kitty "一词在所有语言的所有文档中的数字嵌入。由于我们执行的是矢量搜索，因此可以从语义上搜索所有可能与 "kitty "相关的词：猫"、"小猫"、"猫科动物"、"gatto"（意大利语）、"mèo"（越南语）、고양이（韩语）、猫（汉语）等。因此，即使我的查询是以英语进行的，我们也可以搜索到所有其他语言的内容。例如，搜索 kitty l<code>ying on something</code> ，也会出现意大利语、荷兰语或越南语的文档。谈效率</p><h2>搜索其他语言的内容</h2>GET coco_multi/_search
{  
 "size": 100,
 "_source": [
   "description", "language", "en"
 ],
 "knn": {
   "field": "vector_description.predicted_value",
   "k": 50,
   "num_candidates": 1000,
   "query_vector_builder": {
     "text_embedding": {
       "model_id": ".multilingual-e5-small_linux-x86_64_search",
       "model_text": "query: kitty lying on something"
     }
   }
 }
}{
 "description": "A black kitten lays on her side beside remote controls.",
 "en": "A black kitten lays on her side beside remote controls.",
 "language": "en"
},
{
 "description": "un gattino sdraiato su un letto accanto ad alcuni telefoni ",
 "en": "A black kitten lays on her side beside remote controls.",
 "language": "it"
},
{
 "description": "eine Katze legt sich auf ein ausgestopftes Tier",
 "en": "a cat lays down on a stuffed animal",
 "language": "de"
},
{
 "description": "Một chú mèo con màu đen nằm nghiêng bên cạnh điều khiển từ xa.",
 "en": "A black kitten lays on her side beside remote controls.",
 "language": "vi"
}
. . .<p>同样，用韩语（"고양이"）搜索关键词 "猫 "也会得到有意义的结果。令人惊叹的是，在这份索引中，我们甚至没有任何韩文文件！</p>GET coco_multi/_search
{
 "size": 100,
 "_source": [
   "description", "language", "en"
 ],
 "knn": {
   "field": "vector_description.predicted_value",
   "k": 50,
   "num_candidates": 1000,
   "query_vector_builder": {
     "text_embedding": {
       "model_id": ".multilingual-e5-small_linux-x86_64_search",
       "model_text": "query: 고양이"
     }
   }
 }
} {
       {
         "description": "eine Katze legt sich auf ein ausgestopftes Tier",
         "en": "a cat lays down on a stuffed animal",
         "language": "de"
       }
     },
     {
       {
         "description": "Một con chó và con mèo đang ngủ với nhau trên một chiếc ghế dài màu cam.",
         "en": "A dog and cat lying  together on an orange couch. ",
         "language": "vi"
       }
     },<p>这是因为嵌入模型在共享语义空间中表示意义，即使查询语言与索引标题不同，也能检索到相关图像。</p><h2>利用混合搜索和重新排序增加相关搜索结果</h2><p>我们很高兴相关结果如期出现。但是，在现实世界中，比如在电子商务或 RAG 应用程序中，需要缩小到前 5-10 个最适用的结果，我们可以使用 rerank 模型来优先处理最相关的结果。</p><p>在这里，用越南语查询 "猫是什么颜色的？"会得到很多结果，但前 1 或前 2 个结果可能不是最相关的。</p>GET coco_multi/_search
{
 "size": 20,
 "_source": [
   "description",
   "language",
   "en"
 ],
 "knn": {
   "field": "vector_description.predicted_value",
   "k": 20,
   "num_candidates": 1000,
   "query_vector_builder": {
     "text_embedding": {
       "model_id": ".multilingual-e5-small_linux-x86_64_search",
       "model_text": "query: con mèo màu gì?"
     }
   }
 }
}<p>结果都提到了猫或某种颜色：</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt979f5944b1708042/6a17ef76420229ff6829f6aa/33e1e887dbbdd1066cfedc7375f5e3b46538529e-859x847.png" alt="" /><p>因此，让我们来改进这一点！让我们结合<a href="https://cohere.com/blog/rerank-3pt5">Cohere</a>的多语言 rerank 模型来改进与我们的问题相对应的推理。</p>PUT _inference/rerank/cohere_rerank
{
 "service": "cohere",
 "service_settings": {
   "api_key": "your_api_key",
   "model_id": "rerank-v3.5"
 },
 "task_settings": {
   "top_n": 10,
   "return_documents": true
 }
}


GET coco_multi/_search
{
"size": 10,
"_source": [
  "description",
  "language",
  "en"
],
"retriever": {
  "text_similarity_reranker": {
    "retriever": {
      "rrf": {
        "retrievers": [
          {
            "knn": {
              "field": "vector_description.predicted_value",
              "k": 50,
              "num_candidates": 100,
              "query_vector_builder": {
                "text_embedding": {
                  "model_id": ".multilingual-e5-small_linux-x86_64_search",
                  "model_text": "query: con mèo màu gì?" // English: What color is the cat?
                }
              }
            }
          }
        ],
        "rank_window_size": 100,
        "rank_constant": 0
      }
    },
    "field": "description",
    "inference_id": "cohere_rerank",
    "inference_text": "con mèo màu gì?"
  }
}
} {
       "_index": "coco_multi",
       "_id": "rQiYQJYBgf6odR9bBYyH",
       "_score": 1.5501487,
       "_source": {
         "description": "Hai cái điện thoại được đặt trên một cái chăn cạnh một con mèo con màu đen.",
         "en": "A black kitten lays on her side beside remote controls.",
         "language": "vi"
       }
     },
     {
       "_index": "coco_multi",
       "_id": "swiXQJYBgf6odR9b04uf",
       "_score": 1.5427427,
       "_source": {
         "description": "Một con mèo sọc nâu nhìn vào máy quay.", // Real translation: A brown striped cat looks at the camera 
         "en": "This cat is sitting on a porch near a tire.",
         "language": "vi"
       }
     },<p>现在，有了最重要的结果，我们的应用程序就可以肯定地回答，这只小猫的颜色是黑色或带条纹的棕色。更有趣的是，我们的矢量搜索实际上发现了原始数据集中英文标题的遗漏。尽管参考英译本忽略了这一细节，但它还是能找到那只棕色条纹的猫。这就是矢量搜索的威力。</p><h2>结论</h2><p>在这篇博客中，我们介绍了多语言嵌入模型的实用性，以及如何利用 Elasticsearch 来集成模型以生成嵌入，并通过混合搜索和重新分词器来有效提高相关性和准确性。您可以<a href="https://cloud.elastic.co/registration?onboarding_token=vectorsearch&amp;cta=cloud-registration&amp;tech=trial&amp;plcmt=article%20content&amp;pg=search-labs"> 创建一个 自己的 云集群</a> ，<a href="https://www.elastic.co/docs/explore-analyze/machine-learning/nlp/ml-nlp-e5"> 使用我们开箱即用的 E5 模型</a> 在您选择的语言和数据集上尝试 多语言语义搜索 。</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/multilingual-embedding-model-hybrid-search-reranking</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/multilingual-embedding-model-hybrid-search-reranking</guid>
    <category><![CDATA[向量数据库]]></category>
    <category><![CDATA[运维]]></category>
    <dc:creator><![CDATA[Quynh Nguyen]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf625e3f63fcd9f54/6a17ef7796142a61f8eb1bcd/d341b04acecc8eeec321f5404e1643447ecc8526-720x420.png" length="0" type="image/png"/>
    <pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[在 Elasticsearch 中部署多语言嵌入模型]]></title>
    <description><![CDATA[了解如何在 Elasticsearch 中为向量搜索和跨语言检索部署 e5 多语言嵌入模型。]]></description>
    <content:encoded><![CDATA[<h2>引言</h2><p>在用户遍布全球的世界里，跨语言信息检索（CLIR）至关重要。CLIR 可让您以<em>任何</em>语言查找信息，而不是将搜索局限于单一语言，从而增强用户体验并简化操作。想象一下，在全球市场上，电子商务客户可以用自己的语言搜索商品，正确的结果就会出现，而无需提前对数据进行本地化。或者，学术研究人员可以用自己的母语搜索论文，即使资料来源是另一种语言，也会有细微差别和复杂性。</p><p>多语言文本嵌入模型让我们能够做到这一点。嵌入是一种用数字向量表示文本含义的方法。设计这些向量的目的是让含义相似的文本在高维空间中彼此靠近。多语言文本嵌入模型专门用于将不同语言中具有相同含义的单词和短语映射到相似的向量空间中。</p><p>开源的多语言 E5 等模型是在海量文本数据的基础上进行训练的，通常使用对比学习等技术。在这种方法中，模型学会区分意义相似的文本对（正对）和意义不同的文本对（负对）。对模型进行训练，以调整其产生的向量，从而使正向配对之间的相似性最大化，反向配对之间的相似性最小化。对于多语言模型，这些训练数据包括不同语言的文本对，这些文本对互为翻译，从而使模型能够学习多种语言的共享表示空间。由此产生的嵌入结果可用于各种 NLP 任务，包括跨语言搜索，在跨语言搜索中，文本嵌入之间的相似性可用于查找相关文档，而不受查询语言的限制。</p><h2>多语言矢量搜索的优势</h2><ul><li><p><strong>细致入微</strong>：矢量搜索擅长捕捉语义，超越关键词匹配。这对于需要理解语境和语言微妙之处的任务至关重要。</p></li><li><p><strong>跨语言理解</strong>：即使查询和文档使用不同的词汇，也能跨语言进行有效的信息检索。</p></li><li><p><strong>相关性</strong>：通过关注查询和文档之间的概念相似性，提供更相关的结果。</p></li></ul><p>例如，一位学术研究人员正在研究"社交媒体对不同国家政治话语的影响" 。通过矢量搜索，他们可以输入"l'impatto dei social media sul discorso politico" (意大利文) 或"ảnh hưởng của mạng xã hội đối với diễn ngôn chính trị" (越南文) 等查询，并找到相关的英文论文、西班牙语或任何其他索引语言的相关论文。这是因为矢量搜索可以识别讨论社交媒体对政治影响这一<em>概念</em>的论文，而不仅仅是包含确切关键词的论文。这大大提高了他们研究的广度和深度。</p><h2>开始使用</h2><p>下面介绍如何使用 Elasticsearch（开箱即用的 E5 模型）设置 CLIR。我们将使用<a href="https://huggingface.co/datasets/romrawinjp/multilingual-coco">开源的多语言 COCO 数据集</a>（其中包含多种语言的图片说明）来帮助我们可视化两种类型的搜索：</p><ol><li><p>一个英语数据集上的其他语言查询和搜索词，以及</p></li><li><p>在包含多语言文档的数据集上进行多语言查询。</p></li></ol><p>然后，我们将利用混合搜索和重新排序的功能，进一步改进搜索结果。</p><h2>准备工作</h2><ul><li><p>Python 3.6+</p></li><li><p>Elasticsearch 8+</p></li><li><p>Elasticsearch Python 客户端： pip install elasticsearch</p></li></ul><h2>数据集</h2><p><a href="https://huggingface.co/datasets/romrawinjp/multilingual-coco">COCO 数据集是</a>一个大型字幕数据集。数据集中的每张图片都有多种不同语言的标题，每种语言都有几种翻译。为便于演示，我们将把每份译文作为单独的文件进行索引，并附上第一份可用的英文译文以供参考。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfc7e508e9a7dffe8/6a17f3e2b1e113249579f394/d4f0632529c71a22fbdecf21c9f4f0bb64b8e69c-1600x567.png" alt="" /><h3>步骤 1：下载多语种 COCO 数据集</h3><p>为了简化博客并方便阅读，我们在这里通过简单的 API 调用，将 restval 的前 100 行加载到本地 JSON 文件中。或者，您也可以使用 HuggingFace 的库数据集来加载整个数据集或数据集的子集。</p>import requests
import json
import os
### Download multilingual coco dataset into a json file (for easy viewing)
### Here we are retrieving first 100 rows for this example
### Alternatively, you can use `datasets` library from Hugging Face
url = "https://datasets-server.huggingface.co/rows?dataset=romrawinjp%2Fmultilingual-coco&amp;config=default&amp;split=restval&amp;offset=0&amp;length=100"
response = requests.get(url)


if response.status_code == 200:
   data = response.json()
   output_file = "multilingual_coco_sample.json" 
   ### Loading the downloaded content into a json file locally
   with open(output_file, "w", encoding="utf-8") as f:
       json.dump(data, f, indent=4, ensure_ascii=False)
   print(f"Data successfully downloaded and saved to {output_file}")
else:
   print(f"Failed to download data: {response.status_code}")
   print(response.text)<p>如果数据成功加载到 JSON 文件中，你应该会看到类似下面的内容：</p><p><code>Data successfully downloaded and saved to multilingual_coco_sample.json</code></p><h3>第 2 步：（启动 Elasticsearch）并在 Elasticsearch 中编制数据索引</h3><p>a) 启动本地 Elasticsearch 服务器。</p><p>b) 启动 Elasticsearch 客户端。</p>from elasticsearch import Elasticsearch
from getpass import getpass


# Initialize Elasticsearch client
es = Elasticsearch(getpass("Host: "), api_key=getpass("API Key: "))


index_name = "coco"


# Create the index if it doesn't exist
if not es.indices.exists(index=index_name):
   es.indices.create(index=index_name, body=mapping)<p>c) 指数数据</p># Load the JSON data
with open('./multilingual_coco_sample.json', 'r') as f:
   data = json.load(f)


rows = data["rows"]
# List of languages to process
languages = ["en", "es", "de", "it", "vi", "th"]


# For each image, we will process each individual caption as its own document
bulk_data = []
for data in rows:
   row = data["row"]
   image = row.get("image")
   image_url = image["src"]


   # Process each language
   for lang in languages:
       # Skip if language not present in this row
       if lang not in row:
           continue


       # Get all descriptions for this language
 # along with first available English caption for reference
       descriptions = row[lang]
       first_eng_caption = row["en"][0]


       # Prepare bulk indexing data
       for description in descriptions:
           if description == "":
               continue
           # Add index operation
           bulk_data.append(
               {"index": {"_index": index_name}}
           )
           # Add document
           bulk_data.append({
               "language": lang,
               "description": description,
               "en": first_eng_caption,
               "image_url": image_url,
           })


# Perform bulk indexing
if bulk_data:
   try:
       response = es.bulk(operations=bulk_data)
       if response["errors"]:
           print("Some documents failed to index")
       else:
           print(f"Successfully bulk indexed {len(bulk_data)} documents")
   except Exception as e:
       print(f"Error during bulk indexing: {str(e)}")


print("Indexing complete!")<p>数据编入索引后，您应该会看到类似下面的内容：</p><p><code>Successfully bulk indexed 4840 documents</code></p><p><code>Indexing complete!</code></p><h3>步骤 3：部署 E5 训练模型</h3><p>在 Kibana 中，导航到 "堆栈管理&gt; <strong>训练模型</strong>"页面，然后单击 "<strong>部署</strong>.multilingual-e5-small_linux-x86_64选择。这款 E5 机型是为 linux-x86_64 优化的小型多语言机型，开箱即可使用。单击 "部署 "将显示一个屏幕，您可以在此调整部署设置或 vCPU 配置。为简单起见，我们将使用默认选项，并选择自适应资源，它将根据使用情况自动调整部署规模。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfbc09867063a8e6f/6a17f3e3148009a295b4889d/95cd8f352425d1db2d04b00c3c88d1e71d1ef19a-1600x440.png" alt="" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt264a2016341e9b6f/6a17f3f0e8fbce18de3a1aa7/1599d99949dda8267acc58f400a403a3af5373ef-1600x655.png" alt="" /><p>如果您想使用其他文本嵌入模型，也可以选择使用。例如，要使用 BGE-M3，可以使用<a href="https://www.elastic.co/docs/reference/elasticsearch/clients/eland/machine-learning#ml-nlp-pytorch">Elastic 的 Eland Python 客户端</a>从 HuggingFace 导入模型。</p>export MODEL_ID="bge-m3"
export HUB_MODEL_ID="BAAI/bge-m3"
export CLOUD_ID={{CLOUD_ID}}
export ES_API_KEY={{API_KEY}}
docker run -it --rm docker.elastic.co/eland/eland \
eland_import_hub_model --cloud-id $CLOUD_ID --es-api-key $ES_API_KEY --hub-model-id $HUB_MODEL_ID --es-model-id $MODEL_ID --task-type text_embedding --start<p>然后，导航到 "训练有素的模型 "页面，使用所需的配置部署导入的模型。</p><h3>第 4 步：利用已部署的模型对原始数据进行矢量化或创建嵌入模型</h3><p>要创建嵌入模型，我们首先需要创建一个摄取管道，使我们能够获取文本并通过推理文本嵌入模型运行。您可以在 Kibana 的用户界面或通过 Elasticsearch 的应用程序接口进行此操作。</p><p><strong>要通过 Kibana 界面完成此操作</strong>，在部署训练模型后，单击<strong>测试 </strong>按钮。这将使您能够测试和预览生成的嵌入式内容。为<code>coco</code> 索引创建一个新的数据视图，将数据视图设置为新创建的 coco 数据视图，并将字段设置为<code>description</code> ，因为这是我们要生成嵌入的字段。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt24a2b9a9a5111bbc/6a17f3f13e9e452c7fba15d5/cfe189e13dc118d325e7fb90bdace0c912e29f51-1088x1600.png" alt="" /><p>效果很好！现在，我们可以继续创建摄取管道，并重新为原始文档建立索引，将它们通过管道，然后用嵌入创建一个新索引。单击 "<strong>创建管道</strong>"即可实现这一功能，它将引导您完成管道创建过程，并自动填充所需的处理器，帮助您创建嵌入。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte39c5ad52702103d/6a17f3f3e9ea87dd05a9c734/1e043c1c3279b66fbdf19c06b41e76e613043998-1600x1126.png" alt="" /><p>向导还可以自动填充所需的处理器，以便在摄取和处理数据时处理故障。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt63e002a79d177cf4/6a17f3f596142a3e91eb1c48/8804d31b4f869078e3b2245040bbb0ab1720a94a-1600x1084.png" alt="" /><p>现在让我们创建摄取管道。我将管道命名为<code>coco_e5</code> 。管道创建成功后，可以立即使用管道生成嵌入，方法是将原始索引数据重新索引到向导中的新索引。单击 "<strong>重新索引 </strong>"启动该过程。</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt39243d9ad1779fdf/6a17f3f696142a13eaeb1c4c/e34b1b18f5b24420d4581fe4d657c569926c2023-1600x1126.png" alt="" /><h2>对于更复杂的配置，我们可以使用 Elasticsearch API。</h2><p>对于某些模型，由于训练模型的方式不同，我们可能需要在生成嵌入之前在实际输入中预置或附加某些文本；否则，我们将看到性能下降。</p><p>例如，在使用 e5 时，模型希望输入文本跟随 "passage：{content of passage}".让我们利用摄取管道来实现这一目标：我们将创建一个新的摄取管道<strong>vectorize_descriptions</strong>。在此流程中，我们将创建一个新的临时<code>temp_desc</code> 字段，在 "passage：" 添加到<code>description</code> 文本中，通过模型运行<code>temp_desc</code> 以生成文本嵌入，然后删除<code>temp_desc</code> 。</p>PUT _ingest/pipeline/vectorize_descriptions
{
"description": "Pipeline to run the descriptions text_field through our inference text embedding model",
"processors": [
 {
   "set": {
     "field": "temp_desc",
     "value": "passage: {{description}}"
   }
 },
 {
   "inference": {     
"field_map": {
       "temp_desc": "text_field"
     },
     "model_id": ".multilingual-e5-small_linux-x86_64_search",
     "target_field": "vector_description"
   }
 },
 {
   "remove": {
     "field": "temp_desc"
   }
 }
]
}<p>此外，我们可能还想为生成的向量指定<a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/dense-vector#dense-vector-quantization">量化类型</a>。默认情况下，Elasticsearch 使用<code>int8_hnsw</code> ，但在这里，我需要<a href="https://www.elastic.co/search-labs/blog/better-binary-quantization-lucene-elasticsearch">更好的二进制量化</a>（或<code>bqq_hnsw</code> ），它将每个维度降低到一位精度。这样，内存占用减少了 96% （或 32 倍），但精度却提高了。我之所以选择这种量化类型，是因为我知道稍后会使用重新anker 来改善精度损失。</p><p>为此，我们将创建一个名为<strong>coco_multi 的</strong>新索引，并指定映射。这里的奥妙在于 vector_description 字段，我们在其中指定<strong>index_options</strong>的类型为<strong>bbq_hnsw</strong>。</p>PUT coco_multi
{
 "mappings": {
   "properties": {
     "description": {
       "type": "text"
     },
     "en": {
       "type": "text"
     },
     "image_url": {
       "type": "keyword"
     },
     "language": {
       "type": "keyword"
     },
     "vector_description.predicted_value": {
       "type": "dense_vector",
       "dims": 384,
       "index": "true",
       "similarity": "cosine",
       "index_options": {
         "type": "bbq_hnsw" 
       }
     }
   }
 }
}<p>现在，我们可以将原始文档重新索引到新的索引中，我们的摄取管道将对描述字段进行 "矢量化 "或创建嵌入。</p>POST _reindex?wait_for_completion=false
{
 "source": {
   "index": "coco"
 },
 "dest": {
   "index": "coco_multilingual",
   "pipeline": "vectorize_descriptions"
 }
}<p>就是这样！我们已经成功地利用 Elasticsearch 和 Kibana 部署了一个多语言模型，并逐步了解了如何通过 Kibana 用户界面或 Elasticsearch API 利用 Elastic 数据创建向量嵌入。在本系列的第二部分，我们将探讨使用多语言模型的结果和细微差别。同时，您可以<a href="https://cloud.elastic.co/registration?onboarding_token=vectorsearch&amp;cta=cloud-registration&amp;tech=trial&amp;plcmt=article%20content&amp;pg=search-labs"> 创建一个 自己的 云集群</a> ，在您选择的语言和数据集上<a href="https://www.elastic.co/docs/explore-analyze/machine-learning/nlp/ml-nlp-e5"> 使用我们开箱即用的 E5 模型</a> 尝试 多语言语义搜索 。</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/multilingual-embedding-model-deployment-elasticsearch</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/multilingual-embedding-model-deployment-elasticsearch</guid>
    <category><![CDATA[向量数据库]]></category>
    <category><![CDATA[运维]]></category>
    <dc:creator><![CDATA[Quynh Nguyen]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt59254226694f93a6/6a17f3f81480098988b488a1/8f2aa7bebb6b2f701e274ba7282273f9ab4abed6-720x432.png" length="0" type="image/png"/>
    <pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>