当前位置: 首页 > news >正文

AI-知识库搭建(二)GPT-Embedding模型使用

上一篇:AI-知识库搭建(一)腾讯云向量数据库使用-CSDN博客

一、Embedding模型

Embedding模型是一种将高维度的离散数据(如文本、图像、音频等)映射到低维度的连续向量空间的技术。这种技术广泛应用于自然语言处理(NLP)、推荐系统、搜索引擎、问答系统等领域,能够显著提高数据处理的效率和准确性。

二、模型text-embedding-ada-002

openai官方: https://platform.openai.com/ (需要注册,充值)

"Text-Embedding-Ada-002" 是OpenAIAP|中的一个预训练文本嵌入模型,它属于"Ada" 系列的-个变种。Ada系列的模型专注于文本分类和语言理解任务,它在理解语义和推断方面有较好的性能。
这个模型可以用于各种自然语言处理任务,例如文本分类、情感分析、语义理解等。相较于一般的
通用语言模型,"Text-Embedding-Ada-002"可能更适合于需要较高语义理解和推断能力的任务。

三、引用依赖


Chatgpt-Java | Unfbx | Chatgpt-Java

        <dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version>1.1.5</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.2</version></dependency>

四、application.properties配置

#GPT代理地址IP/域名
proxy.hostname=${PROXY_HOSTNAME:xxxxxxx.com}
proxy.hostport=${PROXY_HOSTPORT:123456}
#GPT密钥
openai.sessonkey=${OPENAI_SESSONKEY:sk-123456}
#GPT语言模型
openai.model=${OPENAI_MODEL:text-embedding-ada-002}

五、初始化客户端

import com.unfbx.chatgpt.OpenAiClient;
import okhttp3.OkHttpClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;@Component
public class InitOpenAiClient {@Value("${proxy.hostname:}")private String proxyHostname;@Value("${proxy.hostport:}")private Integer proxyHostport;@Value("${openai.sessonkey:}")private String  openaiSessionKey;@Beanpublic OpenAiClient openAiClient(){Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHostname, proxyHostport));//代理ip,端口OkHttpClient okHttpClient = new OkHttpClient.Builder()//自定义代理.proxy(proxy).connectTimeout(30, TimeUnit.SECONDS)//自定义超时时间.writeTimeout(30, TimeUnit.SECONDS)//自定义超时时间.readTimeout(30, TimeUnit.SECONDS)//自定义超时时间.build();OpenAiClient client = OpenAiClient.builder()//支持多key传入,请求时候随机选择.apiKey(Arrays.asList(openaiSessionKey)).okHttpClient(okHttpClient).build();return client;}}

六、封装接口类

import cn.hutool.core.collection.CollectionUtil;
import com.unfbx.chatgpt.OpenAiClient;
import com.unfbx.chatgpt.entity.embeddings.Embedding;
import com.unfbx.chatgpt.entity.embeddings.EmbeddingResponse;
import com.unfbx.chatgpt.entity.embeddings.Item;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;/*** 获取Ai模型能力* 接口文档 https://chatgpt-java.unfbx.com/* 源码、demo https://github.com/Grt1228/chatgpt-java* @Date 2024/3/6 13:49*/
@Component
@Slf4j
public class AiManager {@ResourceOpenAiClient openAiClient;@Value("${openai.model:}")private String openAiModel;/*** 该接口获取可能不会非常快,有一定的时延性* 获取文本的embedding(向量)* @param input* @return 返回数组,排列顺序对应传入的数组参数*/public List<Item> getEmbedding(List<String> input) {try {Embedding embedding = Embedding.builder().input(input).model(openAiModel).build();EmbeddingResponse embeddings = openAiClient.embeddings(embedding);if (CollectionUtil.isEmpty(embeddings.getData())) {return new LinkedList<>();}List<Item> data = embeddings.getData();return data;} catch (Exception ex) {log.error("调用AI模型报错",ex);throw new RuntimeException(ex.getMessage());}}
}

GPT的引用,在这里我们只使用到了它的embeddings接口,对我们的原始数据做向量化处理。处理后的向量就可以直接存入向量数据库,为最后的问题答案匹配准备。

http://www.lryc.cn/news/370740.html

相关文章:

  • qt网络事件之QSocketNotifier
  • 如何统计EXCEL中的数据透视表的信息?
  • 日本结构型产品及衍生品业务变迁报告
  • 解决Mac无法上网/网络异常的方法,重置网络
  • [12] 使用 CUDA 进行图像处理
  • MyBatisPlus代码生成器(交互式)快速指南
  • 深度学习模型训练之日志记录
  • 深入理解Python中的装饰器
  • 基于springboot的人力资源管理系统源码数据库
  • 如何舒适的使用VScode
  • 【微信小程序】开发环境配置
  • 启动盘镜像制作神器(下载即用)
  • PHP框架详解 - Symfony框架
  • 鸿蒙开发:【线程模型】
  • 初级网络工程师之从入门到入狱(三)
  • 【数据结构】排序(直接插入、折半插入、希尔排序、快排、冒泡、选择、堆排序、归并排序、基数排序)
  • MongoDB ObjectId 详解
  • 大数据-11-案例演习-淘宝双11数据分析与预测 (期末问题)
  • Kubernetes集群监控,kube-prometheus安装教程,一键部署
  • 【Gradio】快速入门
  • 深度学习Day-19:DenseNet算法实战与解析
  • 基于openssl实现AES ECB加解密
  • Git:从配置到合并冲突
  • leetcode hot100 之 最长公共子序列
  • 短剧APP开发,新的“财富”
  • Uniapp与第三方应用数据通讯
  • AI大模型战场:通用大模型与垂直大模型的角逐
  • linux的一些知识点分享-------关于操作维护的一些知识点
  • Python使用tkinter库设置背景图片、label显示位置和label设置显示图片
  • OpenStack是什么?