Jina AI全新Inference服务,LangChain开发体验从未如此丝滑

news2024/11/20 7:12:30

由于 Token 的限制,在开发 LangChain 问答机器人应用时,我们经常需要将文档切割,接着使用 Embedding 引擎 分别将分割后的 Document 变成 Embeddings,即向量表示。

同时输入的问题,也需要用到 Embedding 引擎 变成向量,再根据向量相似度找到最相近的 Embedding,将它们拼接成答案返回。

由此可见,一个合适又好用的 Embedding 引擎在 LangChain 应用开发过程中的重要性。

Inference 就是由 Jina AI 推出的 云端 API 解决方案,旨在为企业和开发者提供 经济实惠 的 AI 模型能力,如 BILP 模型,CLIP 模型,可用于处理常见的 AI 任务。

当你需要用到 CLIP 模型生成文本、图像的 Embedding 时,就不需要自己费时费力去训练模型了,Inference 直接提供了 API,可以非常方便地嵌入 LangChain 的工作流程里,速度更快,效果更好!

LangChain 官方推荐的 Embedding 引擎

LangChain 推文

LangChain 官方文档

除了生成 Embedding 外,Inference 还为常见任务提供了一系列 AI 模型的 API,对于 视觉推理、视觉问答、向量表示计算、图像描述生成 等常见任务,你只需选择任务和模型,就能将 API 集成到服务里。目前支持 BILP 模型、CLIP 模型及其各种变体。

Inference 有哪些优势?

1. 简单易上手

Inference 提供了直观易用的网站页面,新手也能轻松上手。

cloud.jina.ai

2. 高性能&低延迟

AI 模型的托管和维护交给 Jina AI 来承担,企业和开发者只需要调用 Inference 高性能&低延迟 的 API,大幅节省了工程资源和时间成本。

3. 灵活&可拓展

Inference 为 LangChain 应用提供了很好的兼容性,为了提供更灵活更全面的服务,Inference 精选了 BLIP 模型,以及来自 OpenAI、OpenCLIP 和 HuggingFace 的 CLIP 模型及其变体,这些变体由不同的模型架构,或者训练数据集训练而来。

为了帮助你更好地了解 CLIP 模型的性能,为你的应用程序选择最佳模型。我们提供了一个 Benchmark:

🔗 https://clip-as-service.jina.ai/user-guides/benchmark/

4. 更具优势的成本

Inference 按需付费,也就是说企业和开发者只需为他们生成 Embedding 的需求付费,不用再支付额外的基础设施和维护成本。基于 Inference,企业能够以较低的成本,为用户提供高质量的 AI 服务。

针对 BILP2 模型,我们对市场上其他产品进行了比较。结果显示,Inference 在处理每个图像描述时的速度比其他竞品快了 4 倍。同时,Inference 的价格只有市场一般价格的 1/50。

所以 Inference 是一种性价比极高的选择。

🔗 Inference 产品链接:https://cloud.jina.ai/user/inference

上手实践:从 PDF 文档中提取内容

接下来,我们将创建一个可以处理 PDF 文件中文本的应用。

  • 使用 Inference 生成 Embedding。

  • 在用户提出问题时,使用这些 Embedding 来提取最相关的段落。

第 1 步:注册 Jina AI Cloud

注册 Jina AI Cloud 账号,🔗 网址:cloud.jina.ai

第 2 步:生成新的 Token

需要在 Setting 页面的 Access token 创建一个 Token。

第 3 步:创建 Inference API

我们目前提供了 CLIP 模型、BILP 模型,以及他们的多种变体模型,你可以挑选模型和任务,创建一个 Inference API。

想要了解模型及其变体的技术细节?选择模型后,单击 Details 查看。

单击右上方的 Create ,开始创建 API。

接着,输入你的 API 名称,例如 “my-first-inference-api”。

现在,根据你对查询吞吐量和编码性能的要求,选择一个模型变体,例如 ViT-B-32::openai。最后,单击 Create

第 4 步:安装包

首先,你需要为 LangChain 和 Inference 安装需要的包。使用以下命令来安装:

pip install "langchain>=0.0.124" jina==3.14.1 chromadb unstructured

Chroma 是一个内存型向量数据库,不需要在系统上或远程运行向量数据库。

第 5 步:导入库

from langchain.embeddings import JinaEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import UnstructuredPDFLoader

第 6 步:读取 PDF 内容:

loader = UnstructuredPDFLoader('path/to/file/knowledge.pdf')
data = loader.load()

text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=0)
chunks = text_splitter.split_text(data[0].page_content)

使用 LangChain 的 CharacterTextSplitter,可以把我们从 PDF 中获取的大文本拆分为更小的块,然后使用 JinaEmbeddings 生成 embedding。

第 7 步:Embedding

使用 JinaEmbeddings 给文档生成 Embedding:

embeddings = JinaEmbeddings(
    jina_auth_token='<your-auth-token-from-step-2>', model_name='ViT-B-32::openai'
)
docsearch = Chroma.from_texts(
    chunks, embeddings, metadatas=[{'source': f'{i}'} for i in range(len(chunks))]
)

这里你需要输入你第二步得到的 jina_auth_token,同时 model_name 也需要输入你在第 3 步中,创建 Inference API 时选择的模型名字。

第 8 步:查找相似段落

对于给定的查询,在文档中找到最相似的段落:

query = 'the highest mountain in the Alaskan Range'
answers = docsearch.similarity_search(query)
print([answer.page_content for answer in answers])

输出如下所示:

[
    'Clark at its southwest end to the White River in Canadas Yukon Territory in the southeast. The highest mountain in North America, Denali, is in the',
    'The Alaska Range is a relatively narrow, 600-mile-long (950km) mountain range in the southcentral region of the U.S. state of Alaska, from Lake',
    'Alaska Range. It is part of the American Cordillera. The Alaska range is one of the higher ranges in the world after the Himalayas and the Andes.'
]

结论

结合 Inference 的 API 和 LangChain 的模块化工作流程,让开发者和企业可以更容易地创造可扩展、且经济高效的应用程序。

赶快登录 cloud.jina.ai,探索 Inference 和 LangChain 集成的强大和便利。

将 LangChain 应用推向生产环境

在 LangChain 技术圈,Jina AI 还有一个开源项目广受欢迎:LangChain-serve,它为开发者们提供了一个简单易用的解决方案,可以 在几秒钟内将你的 LangChain 应用部署到云端,同时保持本地开发的简单性和便利性。

🌟 https://github.com/jina-ai/langchain-serve

使用 LangChain-serve 的好处

  • 简易部署:基于 Langchain-serve,你可以把本地的 Chain 和 Agent ,转换成 RESTful、gRPC 或 WebSocket API,从而轻松实现部署。

  • 可扩展性:部署之外,你还能够享受独立扩展、Serverless 和自动扩展 API 的好处,你可以根据自己的需求,用云端的资源来扩展你的应用,不需要担心基础架构的管理和维护。

  • 简单开发:只需要修改很少的代码行,不会牺牲本地开发的简便性。

  • 轻松展示:你还可以使用 Streamlit 演示来更好地调试和展示你的应用。

🌟 https://github.com/jina-ai/langchain-serve

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

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

相关文章

linux调试知识:手把手教你SSH怎么链接

在机器装机后&#xff0c;如果没有显示&#xff0c;有没有串口&#xff0c;通常很难区操作调试&#xff0c;本文总结一篇通过搭建SSH链接去为调试做服务&#xff1a; 首先第一步&#xff1a;安装必要的软件&#xff0c;CRT或者XSHELL。 下面将举实际案例&#xff0c;手把手搭…

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts

Axure rp9 引入Echarts图表 |手动引入图表 Apache Echarts 1.拖入一个矩形lable&#xff0c;调整合适大小,并命名为test 2.给test新建交互载入时&#xff0c;打开链接&#xff0c;并将下方code贴入 如果想在无网的情况下运行&#xff0c;需要在axure软件的安装目录DefaultSet…

深度学习笔记之递归网络(三)递归神经网络

深度学习笔记之递归网络——递归神经网络 引言回顾&#xff1a;潜变量自回归模型递归神经网络思想困惑度 引言 上一节介绍了基于统计算法的语言模型。本节将介绍基于神经网络的序列模型——递归神经网络。 回顾&#xff1a;潜变量自回归模型 关于潜变量自回归模型&#xff0…

记一次 Visual Studio 2022 卡死分析

一&#xff1a;背景 1. 讲故事 最近不知道咋了&#xff0c;各种程序有问题都寻上我了&#xff0c;你说 .NET 程序有问题找我能理解&#xff0c;Windows 崩溃找我&#xff0c;我也可以试试看&#xff0c;毕竟对 Windows 内核也知道一丢丢&#xff0c;那 Visual Studio 有问题找…

揭秘市场热销的4款问卷调查工具

当谈到进行在线问卷调查时&#xff0c;选择正确的工具可以使调查过程完全不同。市场上有这么多可供选择的产品&#xff0c;要找到一款符合我们需求的工具不是一件容易的事儿。在本文中&#xff0c;小编将和大家一起讨论4款市面上好用的问卷调查工具盘点&#xff0c;并比较它们的…

基于C语言设计一个叫号系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 这道题的重点在于怎么处理患者的治疗过程。大二上学期的理论课上&#xff0c;我们在第一节的研讨课上对于这道题的实现进行了探讨。本题的患者排队与数据结构中的队列结构完全符合&#xff0c;当患者挂号后&#xff0c;检查该…

语音工牌:从线下沟通过程入手,实现运营商上门安装流程监管

近年来&#xff0c;随着网络的飞速发展&#xff0c;宽带越来越成为人们生活中必不可少的一部分&#xff0c;相应的&#xff0c;宽带上门安装、迁机及检修服务也成为运营商业务场景里重要的一环。 随着业务需求的增加和上门服务工程师队伍的壮大&#xff0c;以及消费者对服务质…

印度也开始自研 CPU ,5nm工艺、功耗是i9好几倍

前两天的新闻估计大家都看了&#xff0c;国内又一个科技巨头公司终止「造芯」。 OPPO 子公司哲库从成立到解散用了4年时间&#xff0c;这期间做出的马里亚纳X影像芯片也小有名气。 显然其目标不只是影像这一点&#xff0c;今年年初就有消息称 OPPO 自研 Soc 已经快到流片&…

Go语言中sync.Cond、atomic原子性和sync.Once的用法

目录 【sync.Cond】 【atomic原子性】 【sync.Once】 使用sync.Once实现单例模式 在 上一篇文章 中分析了Go语言sync 包中 sync.Mutex、sync.RWMutex和sync.WaitGroup的用法&#xff0c;这篇文章继续来讨论下sync包中关于 sync.Cond 、atomic原子性 和 sync.Once 的用法。…

23 KVM管理虚拟机-使用VNC密码登录虚拟机

文章目录 23 KVM管理虚拟机-使用VNC密码登录虚拟机23.1 概述23.2 前提条件23.3 操作步骤 23 KVM管理虚拟机-使用VNC密码登录虚拟机 本章介绍使用VNC密码登录虚拟机的方法。 23.1 概述 当虚拟机操作系统安装部署完成之后&#xff0c;用户可以通过VNC协议远程登录虚拟机&#…

【数据分享】2014-2023年全国监测站点的逐月空气质量数据(15个指标\shp\excel格式)

空气质量的好坏反映了空气的污染程度&#xff0c;在各项涉及城市环境的研究中&#xff0c;空气质量都是一个十分重要的指标。空气质量是依据空气中污染物浓度的高低来判断的。 我们发现学者王晓磊在自己的主页里面分享了2014年5月以来的全国范围的到站点的逐时空气质量数据&am…

2023年5月18日,ChatGPT还是能接收到验证码完成注册

前言 从昨天开始&#xff0c;有不少网友加我微信&#xff0c;问的基本都是同一个问题&#xff0c;应该注册ChatGPT账号的时候&#xff0c;应该都收到了如下的报错内容&#xff0c;主要是ChatGPT开始检测滥用问题了。 问题 一&#xff1a;The carrier associated with this p…

nodejs简易的token更新模型

1. 什么是JWT JWT全称为(JSON WEB TOKEN)&#xff0c;是目前流行做登录认证的工具之一&#xff0c;它是一个非常轻巧的规范 2.库安装 npm install jsonwebtoken github地址: jsonwebtoken 3.更新策略1 假设一个token的有效时间为T&#xff1b; 当超过T小时没有请求过接口则失…

docker 安装mongo数据库

1.pull镜像 docker pull mongo:4 2.创建目录 mkdir -p /mongodb/datadb chmod 777 /mongodb/datadb 3.运行 准备好目录之后&#xff0c; 就可以开始运行 Docker 镜像了&#xff1a; docker run -d --name mongodb -v /mongodb/datadb:/data/db -p 27017:27017 -e MONGO_INITDB…

【Axure教程】轮盘滑动控制元件移动

轮盘控制元件移动是一种通过轮盘来控制元件位置或参数的方式。轮盘通常是一个圆形或半圆形的旋转控制器&#xff0c;用户可以通过旋转轮盘来实现元件的移动。轮盘滑动控制元件移动广泛应用于各种设备和系统中&#xff0c;例如移动端操作内的游戏&#xff0c;通过旋转轮盘&#…

神经网络:Zero2Hero 3 - Gradient calculation

Zero2Hero 4 - Gradient 创建一个Value类&#xff0c;属性包含变量的值和梯度信息&#xff0c;并支持梯度计算。举例说明梯度反向计算过程。基于Value类构建MLP模型、并实现参数的更新。 import numpy as np import matplotlib.pyplot as plt %matplotlib inlineValue类 支持…

麻了呀,现在的00后都这么卷了吗?

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

元宇宙应用领域-工业

元宇宙是指虚拟空间的总称&#xff0c;在这个虚拟空间中&#xff0c;用户可以像在现实世界一样&#xff0c;通过虚拟现实技术进行交互和体验。元宇宙应用领域非常广泛&#xff0c;如工业、游戏、娱乐、教育、医疗、房地产等。 工业领域中&#xff0c;元宇宙可用于在设计阶段帮…

【ThinkPHP6系列学习-1】下载并部署ThinkPHP6

目录 一、下载ThinkPHP6 二、目录结构 三、部署&#xff0c;配置虚拟域名 一、下载ThinkPHP6 在指定目录&#xff08;www目录&#xff09;下打开cmd&#xff0c;使用composer下载thinkphp6&#xff0c;命令后面的thinkphp6就是下载的目录名&#xff0c;可以随意修改。 comp…

流媒体传输协议相关小结——NALU、RTP、RTSP、RTMP、SDP等

前言&#xff1a; 本文是博主在学习流媒体时进行的小结&#xff0c;涉及内容较多。 由于流媒体协议说复杂也复杂&#xff0c;说简单也简单&#xff0c;复杂在需要考虑到每一位比特&#xff0c;简单在现成的轮子很多&#xff0c;只是会用往往已经足够。因此此文面向那些希望对流…