当前位置: 首页 > 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接口,对我们的原始数据做向量化处理。处理后的向量就可以直接存入向量数据库,为最后的问题答案匹配准备。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CTE-6作文
  • centos7安装字体
  • 音视频开发19 FFmpeg 视频解码- 将 h264 转化成 yuv
  • 玄机靶场 第二章日志分析-mysql应急响应
  • Spring Boot 集成 zxing 生成条形码与二维码
  • 23.在游戏中按下Home键呼出辅助窗口
  • 【C++类和对象中篇】(构造函数和析构函数)
  • 【设计模式深度剖析】【4】【行为型】【策略模式】
  • 如何使用最简单、通俗地理解Python的函数呢?
  • iOS 之homebrew ruby cocoapods 安装
  • 解密Spring Boot:深入理解条件装配与条件注解
  • java+Vue +Spring boot技术开发的UWB高精度定位技术系统源码 uwb定位系统+基站定位
  • ABC351
  • 上心师傅的思路分享(三)--Nacos渗透
  • adb多设备多屏幕调试
  • 2017 年终总结 —— 在路上
  • Apache的80端口被占用以及访问时报错403
  • CAP 一致性协议及应用解析
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Create React App 使用
  • CSS 三角实现
  • CSS盒模型深入
  • express.js的介绍及使用
  • Hibernate最全面试题
  • javascript 总结(常用工具类的封装)
  • Java反射-动态类加载和重新加载
  • Joomla 2.x, 3.x useful code cheatsheet
  • Promise面试题2实现异步串行执行
  • React+TypeScript入门
  • RxJS: 简单入门
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • - 概述 - 《设计模式(极简c++版)》
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用Python写一份独特的元宵节祝福
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ###C语言程序设计-----C语言学习(6)#
  • #Z2294. 打印树的直径
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (Java)【深基9.例1】选举学生会
  • (javascript)再说document.body.scrollTop的使用问题
  • (ZT)薛涌:谈贫说富
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (学习日记)2024.01.19
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)拼包函数及网络封包的异常处理(含代码)
  • *1 计算机基础和操作系统基础及几大协议
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net framework profiles /.net framework 配置
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .pyc文件是什么?