Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持

news2025/2/24 22:07:07

作者:Hemant Malik 及 Joan Fontanals Martínez

探索如何使用 Elasticsearch Open Inference API 访问 Jina AI 模型。

我们在 Jina AI 的朋友们将 Jina AI 的嵌入模型和重新排名产品的原生集成添加到 Elasticsearch 开放推理 API 中。这包括对行业领先的多语言文本嵌入和多语言重新排名的支持 —— 针对检索、聚类和分类进行了优化。此次集成为开发者提供了一套基于 Elasticsearch 向量数据库和 Jina AI 的高性能、高性价比的AI信息检索和语义应用工具包。

Jina AI 的模型采用非对称搜索嵌入和高性能重排序模型来提高准确率,将顶级 AI 融入 Elasticsearch 应用程序中,无需额外的集成或开发成本。

这篇文章探讨了如何使用 Elasticsearch 开放推理 API 访问 Jina AI 模型。

关于 Jina AI 模型

Jina AI 成立于 2020 年,是一家领先的搜索基础公司,致力于创建嵌入、重新排名器和小型语言模型,帮助开发人员构建可靠、高质量的多模式搜索应用程序。

Jina Embeddings v3 是 Jina AI 推出的多语言嵌入模型,支持 8K 标记输入长度。 Jina CLIP v2 是一种多模式和多语言嵌入模型,支持 8K 标记的文本和图像输入。 Jina Reranker v2 是一个神经重排序模型,它支持多种语言并且经过后期训练,特别适用于代理用例。 ReaderLM-v2 是一个小型语言模型,它将来自各种来源的输入数据转换为适合与 LLM 交互的 Markdown 或结构化数据格式。

入门

我们将使用 Kibana Dev Console 来完成设置。或者,这里有一个 Jupyter 笔记本可以帮助你入门。

首先,你需要一个 Jina AI API 密钥。你可以在此处获取具有一百万个令牌使用限制的免费密钥。

Jina AI 提供了多种模型,但我们建议使用最新的嵌入模型 jina-embeddings-v3 及其重新排名模型 jina-reranker-v2-base-multilingual。

步骤 1:创建 Jina AI 推理 API 端点以生成嵌入

通过以 jinaai 形式提供服务,在 Elasticsearch 中创建文本嵌入推理端点。在服务设置中,将你的 Jina AI API 密钥用作 api_key 和 model_id 作为 jina-embeddings-v3。

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

让我们测试我们的 Jina AI 端点来验证配置。为此,让我们对示例文本进行推理:

POST _inference/text_embedding/jina_embeddings 
{
    "input": "Jina AI models are now supported natively in Elasticsearch."
}

步骤 2:创建 Jina AI 推理 API 端点以进行重新排名

类似地,创建一个名为 jina_rerank 的 rerank task_type 服务,供搜索期间使用。在服务设置中使用 jinaai 作为服务名称、使用你的 Jina AI API 密钥作为 api_key、使用 jina-reranker-v2-base-multilingual 作为 model_id。

API 的 task_settings 部分使用 top_n 设置设置 jina_rerank 返回的最大文档数,此处设置为 10。return_documents 设置通知 jina_rerank 它应该返回它所识别的搜索候选文档的完整副本。

PUT _inference/rerank/jina_rerank
{
    "service": "jinaai",
    "service_settings": {
        "api_key": "<api-key>",
        "model_id": "jina-reranker-v2-base-multilingual"
    },
    "task_settings": {
        "top_n": 10,
        "return_documents": true
    }
}

在 Kibana 开发控制台中,这些命令应该返回 200 响应代码,表明服务已正确配置。

步骤 3:生成嵌入(自动)

让我们创建一个索引,配置为使用 jina_embeddings 来生成嵌入。我们将创建一个名为 film_index 的索引,并使用 jina_embeddings 作为 inference_id 的值,自动生成和存储具有 semantic_text 类型的嵌入。

PUT film_index
{
  "mappings": {
    "properties": {
      "blurb": {
        "type": "semantic_text",
        "inference_id": "jina_embeddings"
      }
    }
  }
}

现在我们可以将文档批量插入索引。我们在本教程中使用下面的电影数据集,其中包含有关六部电影的信息。每个文档都是一个 JSON 字符串,其中有一个标有 blurb 的字段。

PUT film_index/_bulk?pretty
{ "index" : { "_index" : "film_index" } }
{"title": "Casablanca", "director": "Michael Curtiz", "year": 1942, "runtime_min": 102, "genre": ["Drama", "Romance"], "blurb": "A cynical expatriate cafe owner struggles to choose between love and virtue in wartime Morocco"}
{ "index" : { "_index" : "film_index" } }
{"title": "2001: A Space Odyssey", "director": "Stanley Kubrick", "year": 1968, "runtime_min": 149, "genre": ["Sci-Fi", "Adventure"], "blurb": "Humanity finds a mysterious monolith on the moon that triggers a journey to Jupiter"}
{ "index" : { "_index" : "film_index" } }
{"title": "Parasite", "director": "Bong Joon-ho", "year": 2019, "runtime_min": 132, "genre": ["Thriller", "Drama"], "blurb": "A poor family schemes to become employed by a wealthy household with devastating consequences"}
{ "index" : { "_index" : "film_index" } }
{"title": "The Godfather", "director": "Francis Ford Coppola", "year": 1972, "runtime_min": 175, "genre": ["Crime", "Drama"], "blurb": "Aging patriarch of an organized crime dynasty transfers control to his reluctant son"}
{ "index" : { "_index" : "film_index" } }
{"title": "Inception", "director": "Christopher Nolan", "year": 2010, "runtime_min": 148, "genre": ["Sci-Fi", "Action"], "blurb": "A thief who enters people's dreams attempts to plant an idea in a CEO's subconscious"}
{ "index" : { "_index" : "film_index" } }
{"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "runtime_min": 99, "genre": ["Comedy", "Drama"], "blurb": "A legendary concierge teams up with a lobby boy to clear his name in a priceless painting theft"}

随着文档被索引,请击鼓…… Elasticsearch 开放推理 API 将调用 jina_embeddings 服务来为简介文本生成嵌入。这种无缝的开发人员体验归功于 Elasticsearch 开放推理 API 中的 semantic_text 类型和 Jina AI 集成。

步骤 4:语义重新排序

现在你可以使用语义嵌入向量搜索 film_index。下面的 API 调用将

  • 使用 jina_embeddings 服务为查询字符串 “An inspiring love story” 创建嵌入。
  • 将结果嵌入与 film_index 中存储的嵌入进行比较。
  • 返回 blurb 字段与查询最匹配的存储文档。
GET film_index/_search 
{
  "query": {
    "semantic": {
      "field": "blurb",
      "query": "An inspiring love story"
    }
  }
}

现在,让我们使用 jina_rerank。它将执行与上面相同的查询匹配过程,然后选取 50 个最佳匹配(由 rank_window_size 字段指定)并使用 jina_rerank 服务对结果进行更精确的排名,返回前 10 名(如之前在 jina-rerank 的配置中所指定)。

POST film_index/_search
{
  "retriever": {
    "text_similarity_reranker": {
      "retriever": {
        "standard": {
          "query": {
            "semantic": {
              "field": "blurb",
              "query": "An inspiring love story"
            }
          }
        }
      },
      "field": "blurb",
      "rank_window_size": 50,
      "inference_id": "jina_rerank",
      "inference_text": "An inspiring love story"
    }
  }
}

带有 Elasticsearch 和 Jina AI 的 RAG

当开发人员将 Elasticsearch 用于他们的 RAG 用例时,在推理 API 中本地使用 Jina AI 的搜索基础的能力可以实现对 Jina AI 的搜索基础的低成本和无缝访问。开发人员现在就可以在 Elastic Cloud Serverless 中使用此集成,并且它将很快在 Elasticsearch 8.18 版本中推出。感谢 Jina AI 团队的贡献!

  • 尝试使用这个笔记本,其中包含使用推理 API 和 Jina AI 模型的端到端示例。
  • 要了解有关 Jina AI 模型的更多信息,请访问 jina.ai 和博客。

Elasticsearch 与行业领先的 Gen AI 工具和提供商进行了原生集成。查看我们的网络研讨会,了解如何超越 RAG 基础知识,或构建可用于生产的应用程序Elastic Vector Database

为了为你的用例构建最佳搜索解决方案,请开始免费云试用完全托管的 Elastic Cloud 项目,或立即使用 “curl -fsSL https://elastic.co/start-local sh|” 在几分钟内在你的本地机器上试用 Elastic。

Elasticsearch 与行业领先的 Gen AI 工具和提供商进行了原生集成。查看我们的网络研讨会,了解如何超越 RAG 基础知识,或构建可用于生产的应用程序 Elastic Vector Database。

为了为你的用例构建最佳搜索解决方案,请立即开始免费云试用或在你的本地机器上试用 Elastic。

原文:Elasticsearch Open Inference API adds support for Jina AI Embeddings and Rerank Model - Elasticsearch Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作&#xff0c;更方便&#xff0c;画布与游戏窗口的比例一般默认相同 如图所示&#xff0c;图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式&#xff1a;屏幕空间--覆盖&#xff0c;指画布覆盖在游戏物体渲…

进程概念、PCB及进程查看

文章目录 一.进程的概念进程控制块&#xff08;PCB&#xff09; 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序&#xff0c;而程序是存放在磁盘的&#xff0c;cpu要想执行程序的指…

php session数据存储位置选择

PHP session 数据的存储位置可以通过配置文件或者代码来进行设置。默认情况下&#xff0c;session 数据是存储在服务器的文件系统中的。你可以将 session 数据存储在其他地方&#xff0c;例如数据库、缓存等。 基础概念 PHP session默认情况下将数据存储在服务器端的临时文件中…

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

数据结构之二叉树的定义及实现

1. 树的概念 主要的定义&#xff1a; 节点的度&#xff1a;一个节点含有的子树的个数称为该节点的度&#xff1b;如上图&#xff1a;A的为6 叶节点或终端节点&#xff1a;度为0的节点称为叶节点&#xff1b;如上图&#xff1a;B&#xff0c;C&#xff0c;H&#xff0c;I等节点…

Rust语言基础知识详解【一】

1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境&#xff0c;以下为安装的两种方式&#xff1a; 1. x86_64-pc-windows-msvc&#xff08;官方推荐&#xff09; 先安装 Microsoft C Build Tools&#xff0c;勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…

SQLMesh 系列教程9- 宏变量及内置宏变量

SQLMesh 的宏变量是一个强大的工具&#xff0c;能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量&#xff0c;可以实现动态时间范围、多环境配置、参数化查询等功能&#xff0c;从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…

【Deepseek】Linux 本地部署 Deepseek

前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程&#xff0c;因此即使是小白也可以轻松完成体验&#xff0c;话不多说立马着手去干。 [注]&#xff1a;笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…

git,bash - 从一个远端git库只下载一个文件的方法

文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库&#xf…

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识&#xff0c;华夏&#xff0c;芊熠这三种车牌识别相机解密我都试过了&#xff0c;可以正常解密成功&#xff0c;其它品牌我暂时没有测试。超级简单&#xff0c;免费的&#xff0c;白嫖无敌&#xff01; 流程&#xff1a; ①&#xff1a;先导出配置文件&#xff0c;例如我以…

网络安全与措施

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 # 网络安全问题概述 1) 数据安全 访问&#xff08;授权访问&#xff09;&#xff1b;存储&#xff08;容灾、备份或异地备份等&#xff09; 2) 应用程序 不能…

前后端分离系统架构:基于Spring Boot的最佳实践

前后端分离系统架构图描绘了一个基于Springboot的前端后台分离的系统架构。它强调了前端&#xff08;客户端&#xff09;与远程&#xff08;服务器&#xff09;的解耦&#xff0c;通过API接口进行交互&#xff0c;分别独立开发和部署。 前后端分离系统架构图 从上到下&#xff…

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中&#xff0c;员工与外部协作伙伴&#xff08;如钉钉用户&#xff09;的文件传输面临以下挑战&#xff1a; 安全性风险&#xff1a;内外网直连可能导致病毒传播、数据泄露。 操作繁琐&#xff1a;传统方式需频繁切换网络环境&…

抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报

抖音试水AI分身&#xff0c;字节旗下AI智能体平台扣子已与抖音打通&#xff0c;相关功能内测中 2月19日消息&#xff0c;钛媒体App独家获悉&#xff0c;字节旗下AI智能体开发平台扣子&#xff08;Coze&#xff09;已与抖音打通&#xff0c;抖音创作者可在扣子智能体平台打造AI分…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

安装PHPStudy 并搭建DVWA靶场

目录 一、PHPStudy 简介 二、DVWA 简介 三、安装 PHPStudy 四&#xff1a;安装 DVWA 一、PHPStudy 简介 phpstudy傻瓜式的一键启动&#xff0c;支持WAMP、WNMP、LAMP、LNMP&#xff0c;一键切换环境&#xff08;nginxapahce&#xff09;,一键切换PHP版本&#xff08;5.1-7…

SQL写法技巧

目录 1.批量插入&#xff0c;查询&#xff0c;删除数据 缺点 实现方法 1.批量插入数据 2.批量查询数据 3.批量删除数据 4.批量修改数据 解释 2.树型表查询 方法一&#xff1a;递归(适用于多级的情况) 方法二&#xff1a;表的自连接 方法三&#xff1a;MySQL递归&am…

Ryu:轻量开源,开启 SDN 新程

1. Ryu 控制器概述 定位&#xff1a;轻量级、开源的SDN控制器&#xff0c;专为开发者和研究人员设计&#xff0c;基于Python实现。开发者&#xff1a;由日本NTT实验室主导开发&#xff0c;遵循Apache 2.0开源协议。核心理念&#xff1a;简化SDN应用开发&#xff0c;提供友好的…

【核心算法篇十四】《深度解密DeepSeek量子机器学习:VQE算法加速的黑科技与工程实践》

在经典计算机逼近物理极限的今天,量子计算正以指数级加速潜力颠覆传统计算范式。想象一下,一个需要超级计算机运算千年的化学分子模拟问题,用量子计算机可能只需几分钟——这就是DeepSeek团队在VQE(Variational Quantum Eigensolver)算法加速实践中创造的奇迹。根据,VQE作…