news 2026/3/23 5:22:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 23:48:20

绿色安全框颜色可改吗?AI卫士前端定制化教程

绿色安全框颜色可改吗&#xff1f;AI卫士前端定制化教程 1. 背景与需求分析 在隐私保护日益重要的今天&#xff0c;AI人脸隐私卫士凭借其高精度、低延迟和本地离线处理能力&#xff0c;成为个人与企业用户处理敏感图像的首选工具。该系统基于 Google 的 MediaPipe Face Detec…

作者头像 李华
网站建设 2026/3/17 13:15:03

跨境电商必备:用HY-MT1.5-1.8B搭建实时翻译系统

跨境电商必备&#xff1a;用HY-MT1.5-1.8B搭建实时翻译系统 1. 引言&#xff1a;跨境电商中的语言壁垒与技术破局 在全球化贸易持续深化的背景下&#xff0c;跨境电商平台每天需处理来自不同国家和地区的海量多语言内容——商品描述、用户评论、客服对话、营销文案等。传统依…

作者头像 李华
网站建设 2026/3/14 11:26:52

AI人脸隐私卫士自动打码准确率测试:1000张图实测报告

AI人脸隐私卫士自动打码准确率测试&#xff1a;1000张图实测报告 1. 背景与测试目标 随着社交媒体和数字影像的普及&#xff0c;个人隐私保护问题日益突出。在分享照片时&#xff0c;未经处理的人脸信息可能带来身份泄露、数据滥用等风险。尽管手动打码是一种解决方案&#x…

作者头像 李华
网站建设 2026/3/13 3:21:50

图解说明AUTOSAR中NM报文唤醒时序与状态迁移过程

AUTOSAR中NM报文唤醒的时序逻辑与状态迁移全解析在现代汽车电子系统中&#xff0c;随着ECU数量激增和通信负载加重&#xff0c;如何实现高效、可靠的低功耗管理成为设计核心。而网络管理&#xff08;Network Management, NM&#xff09;正是解决这一问题的关键机制之一。其中&a…

作者头像 李华
网站建设 2026/3/14 10:06:08

AI自动打码批量处理教程:高效完成海量图片脱敏

AI自动打码批量处理教程&#xff1a;高效完成海量图片脱敏 1. 引言 1.1 学习目标 在数据隐私日益重要的今天&#xff0c;如何快速、安全地对大量含有人脸的图像进行脱敏处理&#xff0c;成为企业和个人用户共同关注的问题。本文将带你深入掌握一款基于 MediaPipe 的本地化 A…

作者头像 李华
网站建设 2026/3/14 0:20:13

5分钟部署IQuest-Coder-V1-40B,零基础搭建代码生成助手

5分钟部署IQuest-Coder-V1-40B&#xff0c;零基础搭建代码生成助手 1. 引言&#xff1a;为什么你需要一个专属的代码生成助手&#xff1f; 在当前软件工程快速迭代的背景下&#xff0c;开发者面临的核心挑战不再是“如何写代码”&#xff0c;而是“如何高效、准确地生成高质量…

作者头像 李华