使用 jina-embeddings-v3 和 Elasticsearch 进行多语言搜索

在本教程中,我们将使用 jina-embeddings-v3 text embedding 模型,通过 Elastic Cloud APIs 构建一个多语言语义搜索系统。

首先,你需要一个 Jina AI API key。访问 https://jina.ai/#apiform 并按照说明获取一个免费的 API key,包含 1000 万 tokens。

对于能够在本地运行 AI models 并在 Elasticsearch 外生成 embedding vectors 的高级用户,可以按照 Hugging Face 上模型页面的说明下载并运行 jina-embeddings-v3:https://huggingface.co/jinaai/jina-embeddings-v3

为 jina-embeddings-v3 创建推理 endpoint

如果你在本地运行该 model,可以跳过本节,直接进入标题为 Index multilingual documents 的部分。

首先,打开你的 Elastic Cloud 部署控制台。本教程将使用控制台命令演示如何使用 Jina AI 设置 search。

使用以下命令注册模型,并在 "api_key" 字段中填写你的 Jina AI API key:

复制代码
PUT _inference/text_embedding/jina_embeddings
{
  "service": "jinaai",
  "service_settings": {
    "api_key": "<your-jina-api-key>",
    "model_id": "jina-embeddings-v3",
  }
}

要验证你现在是否可以访问 Jina AI API 并生成 embeddings,请使用以下命令:

复制代码
POST _inference/text_embedding/jina_embeddings
{
  "input": ["Lo-fi playlists help me concentrate while I study."]
  "input_type": "ingest",
}

你应该会收到一个包含 "text_embedding" 字段的结果,如下所示:

复制代码
{
"text_embedding": [
    {
      "embedding": [
        0.05003565,
        -0.01658948,
        0.02177808,
        0.03379484
	   ...,
	   0.0059285
      ]
    }
  ]
}

创建索引

为模型注册 mapping 定义。本教程将其命名为 "jina-multilingual-demo"。

你需要为 embeddings 选择一个 vector size。jina-embeddings-v3 支持五种维度:128、256、512、768 和 1024。维度越大,向量越大,准确率越高,但占用更多存储空间、更多内存,并增加搜索时间。

在注册请求的 "dims" 字段中填写你的选择。为了简化,本教程演示中使用最大维度:1024。

复制代码
PUT jina-multilingual-demo
{
  "mappings": {
    "properties": {
      "": {
       "id":       { "type": "keyword" },
       "lang":     { "type": "keyword" },
       "title":    { "type": "text" },
       "content":  { "type": "text" }
       "embedding": {
        "type": "dense_vector",
        "dims": 1024,
        "index": true,
        "similarity": "cosine"
      }
    }
  }
}

添加 ingest pipeline

Ingest pipelines 会在数据插入 Elasticsearch 之前自动处理数据。我们将创建一个名为 "jina_embed_pipeline" 的 pipeline。

使用以下命令:

复制代码
PUT _ingest/pipeline/jina_embed_pipeline
{
  "description": "Embed document content with jina-embeddings-v3",
  "processors": [
    {
      "inference": {
        "model_id": "jina_embeddings",
        "input_output": {
          "input_field": "content",
          "output_field": "embedding"
        }
      }
    }
  ]
}

索引多语言文档

现在你可以向 Elastic 部署添加一些 documents。下面三个文档分别为 English、French 和 Spanish,互为翻译。每条 POST 命令添加一个 document。

复制代码
POST multilingual-demo/_doc?pipeline=jina_embed_pipeline
{
  "id": "1",
  "lang": "en",
  "title": "Emerging music styles",
  "content": "Lo-fi and ambient genres are gaining traction among independent artists."
}

POST multilingual-demo/_doc?pipeline=jina_embed_pipeline
{
  "id": "2",
  "lang": "es",
  "title": "Nuevos estilos musicales",
  "content": "Los géneros lo-fi y ambiental están ganando popularidad entre los artistas independientes."
}

POST multilingual-demo/_doc?pipeline=jina_embed_pipeline
{
  "id": "3",
  "lang": "fr",
  "title": "Tendances musicales émergentes",
  "content": "Les styles lo-fi et ambiants attirent de plus en plus de musiciens indépendants."
}

查询索引

为了演示 jina-embeddings-v3 的跨语言语义,我们将使用 German 查询该索引。查询文本的 English 翻译为:"Which new music genres are currently popular?"

首先,我们需要获取 query vector。jina-embeddings-v3 实现了 asymmetric retrieval,因此 query embeddings 和已索引文档的 embeddings 生成方式不同。确保 "input_type" 字段设置为 "search",以获取 query embeddings。

复制代码
POST _inference/text_embedding/jina_embeddings
{
  "input": ["Welche neuen Musikrichtungen sind gerade beliebt?"],
  "input_type": "search"
}

该命令将返回一个 query vector。将得到的 vector 填入下面命令的 "query_vector" 字段中。该命令将使用 Elasticsearch 内置的 "knn" approximate nearest neighbor 算法执行搜索。

复制代码
POST multilingual-demo/_search
{
  "knn": {
    "field": "embedding",
    "query_vector": [0.103949,-0.01732728,...,0.0043687],
    "k": 5,
    "num_candidates": 100
  },
  "_source": ["id","lang","title","content"]
}

响应将是一个列表,显示与该查询最匹配的 document(在我们的测试中是 French 文档),以及该 document 与查询的 cosine similarity score。

有关 AI 生成的 dense vector 索引搜索选项的完整文档,请参见 Elasticsearch API 的相关文档页面

原文:https://www.elastic.co/search-labs/tutorials/jina-tutorial/multilingual-search-jina-embeddings-v3-elasticsearch

相关推荐
小雨下雨的雨11 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
睡不醒男孩03082312 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
我没胡说八道14 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟14 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love14 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇14 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明14 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc14 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技14 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本14 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规