所有文章 > 如何集成API > AI+搜索:在Elastic的推理API中嵌入大语言模型Cohere API
AI+搜索:在Elastic的推理API中嵌入大语言模型Cohere API

AI+搜索:在Elastic的推理API中嵌入大语言模型Cohere API

随着 Elasticsearch 8.13 的发布,开发人员现在可以在 Elastic 的推理 API 中访问 Cohere 的 Embed v3 模型。 这使企业能够轻松地为其数据创建嵌入,在 Elastic 中对这些嵌入进行索引,并在其文档中执行矢量和混合搜索。

开发人员只需调用一次 API,就可以使用 Elastic 的摄取管道将 Cohere 嵌入添加到索引中进行矢量搜索,而且还可以利用 Cohere 的本地嵌入压缩功能,将存储成本降低 75%。

什么是矢量搜索?

矢量搜索(vector-search)是一种信息检索方法,其中的文档和查询表示为矢量而不是纯文本。 在矢量搜索中,机器学习模型生成源输入的矢量表示,它们可以是文本、图像或其他内容。 使用内容的数学表示形式可为搜索方案提供共同的基础。 如果所有内容都是矢量,则查询可以在矢量空间中查找匹配项,即使关联的原始内容使用的媒体或语言与查询不同。

什么是Cohere?

Cohere 是一个大模型平台,它提供了一个 API,使用户可以访问 NLP 和大型语言模型技术。Cohere 提供了对经济实惠、易于部署的大型语言模型的访问。

Cohere成立于2019年,总部位于加拿大多伦多。

利用 Elastic 的推理 API 简化矢量搜索

Elastic 的推理 API 可让开发人员在 Elastic 环境中轻松访问人工智能模型并对其执行推理。 该 API 无需自托管模型或通过外部 API 进行单独的推理调用,从而简化了在 Elastic 中创建和查询矢量索引的过程。 值得注意的是,无需手动遍历现有词法搜索索引中的每个文档来添加向量嵌入,只需调用一次 API,即可创建推理摄取管道并重新为数据建立索引。

Cohere 的整个 Embed v3 模型系列–包括我们最先进的英语嵌入模型(embed-english-v3.0)和多语言嵌入模型(embed-multilingual-v3.0)–现在可通过 Elastic 的推理 API 在 Elastic Cloud 和 Elastic 自管理环境中使用。

我们还很高兴地宣布,推理 API 原生支持浮点和 int8(或字节)嵌入。 Int8 压缩允许用户利用 Elastic 对字节矢量的支持,将嵌入的大小减少 4倍,而对搜索质量的影响却很小。 由于矢量数据库的成本在一定程度上与存储矢量的大小相关,因此开发人员可以在不影响准确性的情况下降低存储成本。 Cohere 的嵌入模型在使用 int8(字节)压缩时,其性能可与 OpenAI 的嵌入模型相媲美,而存储成本仅为后者的一小部分。 下图显示了各种嵌入模型的 MTEB 精度与约 2.5 亿嵌入数据集的存储成本的比较。

我们很高兴 Elastic 行业领先的平台能让开发人员更轻松地访问我们的嵌入式产品。

如何将 Cohere 与弹性推理 API 结合使用

使用推理应用程序接口(Inference API)实现 Cohere 的嵌入只需调用几个应用程序接口。

首先,创建一个推理模型,指定一个 Cohere 的嵌入模型。 在本例中,我们将使用 Cohere 的基准英语模型 “embed-english-v3.0″,并使用 int8 压缩。 要在 Elastic 中使用 int8 压缩,我们将指定`embedding_type`为`byte`。

PUT _inference/text_embedding/cohere_embeddings 
{
    "service": "cohere",
    "service_settings": {
        "api_key": "<cohere_api_key>", 
        "model_id": "embed-english-v3.0", 
        "embedding_type": "byte"
    }
}

接下来,为包含嵌入内容的新索引创建索引映射。 在此,您将指定由您选择的向量和压缩技术决定的某些参数。

PUT cohere-embeddings
{
  "mappings": {
    "properties": {
      "content_embedding": { 
        "type": "dense_vector", 
        "dims": 1024, 
        "element_type": "byte"
      },
      "content": { 
        "type": "text" 
      }
    }
  }
}

接下来,创建一个带有推理处理器的摄取管道,以便在将内容摄取到索引时自动计算嵌入。

PUT _ingest/pipeline/cohere_embeddings
{
  "processors": [
    {
      "inference": {
        "model_id": "cohere_embeddings", 
        "input_output": { 
          "input_field": "content",
          "output_field": "content_embedding"
        }
      }
    }
  ]
}

要完成新索引的设置,请使用您刚刚创建的摄取管道重新索引现有来源的数据。 新索引将包含管道中指定的输入字段中所有文本数据的嵌入,供您在语义搜索中使用。

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "test-data",
    "size": 50 
  },
  "dest": {
    "index": "cohere-embeddings",
    "pipeline": "cohere_embeddings"
  }
}

现在您的索引已经创建,您可以使用 KNN 向量搜索和 Cohere 的嵌入来轻松查询。

GET cohere-embeddings/_search
{
  "knn": {
    "field": "content_embedding",
    "query_vector_builder": {
      "text_embedding": {
        "model_id": "cohere_embeddings",
        "model_text": "Elasticsearch and Cohere"
      }
    },
    "k": 10,
    "num_candidates": 100
  },
  "_source": [
    "id",
    "content"
  ]
}

就是这样! 利用 Cohere 嵌入在您的 Elastic 索引中进行语义搜索。 要开始使用,请为 Cohere 创建一个试用 API 密钥,并尝试使用 Elastic 的推理 API 和 Cohere 的嵌入。

如何发现更多AI搜索API

幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台提供了多种维度发现API的功能:通过关键词搜索API、从API Hub分类浏览API、从开放平台分类浏览企业间接寻找API等。

此外,幂简集成开发者社区会编写API入门指南、多语言API对接指南、API测评等维度的文章,让开发者选择符合自己需求的API。

本文翻译源自:https://cohere.com/blog/elastic-inference-api

#你可能也喜欢这些API文章!