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

作者:Hemant MalikJoan 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

相关推荐
刘什么洋啊Zz2 小时前
MacOS下使用Ollama本地构建DeepSeek并使用本地Dify构建AI应用
人工智能·macos·ai·ollama·deepseek
奔跑草-3 小时前
【拥抱AI】GPT Researcher 源码试跑成功的心得与总结
人工智能·gpt·ai搜索·deep research·深度检索
禁默4 小时前
【第四届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2025】网络安全,人工智能,数字经济的研究
人工智能·安全·web安全·数字经济·学术论文
AnnyYoung5 小时前
华为云deepseek大模型平台:deepseek满血版
人工智能·ai·华为云
INDEMIND6 小时前
INDEMIND:AI视觉赋能服务机器人,“零”碰撞避障技术实现全天候安全
人工智能·视觉导航·服务机器人·商用机器人
慕容木木6 小时前
【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体的替代品,可本地部署+知识库,注册即可有750w的token使用
人工智能·火山引擎·deepseek·deepseek r1
南 阳6 小时前
百度搜索全面接入DeepSeek-R1满血版:AI与搜索的全新融合
人工智能·chatgpt
企鹅侠客6 小时前
开源免费文档翻译工具 可支持pdf、word、excel、ppt
人工智能·pdf·word·excel·自动翻译
狮歌~资深攻城狮7 小时前
HBase性能优化秘籍:让数据处理飞起来
大数据·hbase
冰淇淋百宝箱7 小时前
AI 安全时代:SDL与大模型结合的“王炸组合”——技术落地与实战指南
人工智能·安全