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

威海教育行业网站建设企业网站策划

威海教育行业网站建设,企业网站策划,服务器可以做网站吗,郑州做网站网站建设费用文本上传构建向量库后台库的内容 调用上传文件接口先上传文件 存在疑问:暂时是把文件保存在tmp文件夹,定时清理,是否使用云存储 根据不同的文件类型选取不同的文件加载器加载文件内容 switch (file.mimetype) {case application/pdf:loader new PDFLoader(file.path)breakc…

文本上传构建向量库后台库的内容

调用上传文件接口先上传文件在这里插入图片描述

存在疑问:暂时是把文件保存在tmp文件夹,定时清理,是否使用云存储

根据不同的文件类型选取不同的文件加载器加载文件内容

   switch (file.mimetype) {case 'application/pdf':loader = new PDFLoader(file.path)breakcase 'text/plain':loader = new TextLoader(file.path)breakcase 'application/msword':loader = new DocxLoader(file.path)breakcase 'application/vnd.ms-excel':case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':loader = new CSVLoader(file.path)breakcase 'application/json':loader = new JSONLoader(file.path)breakcase 'text/html':default:loader = new TextLoader(file.path)}

存在疑问:我们通过后缀名还是mimetype来区分加载器,langchain使用的是后缀名

文本分割:

顾名思义,文本分割就是用来分割文本的。为什么需要分割文本?Prompt 会存在字符限制
比如我们将一份300页的 pdf 发给 openai api,让他进行总结,他肯定会报超过最大 Token 错。所以这里就需要使用文本分割器去分割我们 loader 进来的 Document。
主要代码:这里分块长度为1000,每次携带上下文20

    const textSplitter = new RecursiveCharacterTextSplitter({chunkSize: 1000,chunkOverlap: 20,})

文本向量化

我们和文件进行交流的时候不可能每次都把全量文本都当成prompt传给Gpt ,所以需要进行文本向量化,文本向量化后就可以进行文本相关性查询,查出最符合的内容交与GPT进行相关性问答

建立一张上传文本表,往数据库插入一条上传信息,获取到id,用于向量查询的不同命名空间

表结构设计如下

在这里插入图片描述

    const data = await prisma.chatFiles.create({data: {originalname: file.originalname,mimetype: file.mimetype,path: file.path,filename: file.filename,encoding: file.encoding,userId,deviceId,},})

向量文本内容持久化

    console.log('创建向量数据库,持久化')const store = await PineconeStore.fromDocuments(docs,new OpenAIEmbeddings(),{pineconeIndex,// namespace: `${userId}_${file.filename.replace('.pdf', '')}`,namespace: `${data.id}`,},)

我们需要把向量化的文本持久化,便于下次进行聊天或者连续性问答,通过后台文本表查询该次聊天向量文本内容,这里暂时使用个人的云向量库

文本聊天的流程

在这里插入图片描述

1. 需要传入后台保存的文本表对应id,便于寻找相应向量数据库

  const store = await PineconeStore.fromExistingIndex(new OpenAIEmbeddings(), {pineconeIndex,namespace: storeId,})chatFiles(quest, functionName, res, callback, chatInfoId, store)

2.chatfile 的核心代码

  // 使用retriever进行向量相似查询,找到相关数据const docs = await this.retriever.getRelevantDocuments(question);const inputs = { question, input_documents: docs };// 将数据交给gpt进行处理

文本总结的核心流程

在这里插入图片描述

1. 需要传入后台保存的文本表对应id,便于寻找相应向量数据库

  const store = await PineconeStore.fromExistingIndex(new OpenAIEmbeddings(), {pineconeIndex,namespace: storeId,})// 获取前N个文档进行总结,需要产品进行定义const docs = await store.asRetriever(3).getRelevantDocuments('')const chain = loadSummarizationChain(new OpenAI({ temperature: 0 }))const response = await chain.call({input_documents: docs.slice(0, 2),})

总结类型使用refine,链式总结,把前面的chunk总结内容带入prompt 进行总结,总结内容更精准
map_reduce 的话,分段总结然后进行合并,时间更快

需要设计一个删除文本相关的接口

在这里插入图片描述

const obj = await prisma.chatFiles.findFirst({ where: { id: storeId } })if (obj) {const obj = await prisma.chatFiles.delete({ where: { id: storeId } })obj && obj.path && fs.unlinkSync(obj.path)await pineconeClient.init({apiKey: process.env.PINECONE_API_KEY,environment: process.env.PINECONE_ENVIRONMENT,})const pineconeIndex = pineconeClient.Index('01')await pineconeIndex.delete1({ deleteAll: true, namespace: storeId })}

需要把临时上传文件,后台文本表相应记录和向量数据相关的内容清除

http://www.yidumall.com/news/55503.html

相关文章:

  • 图片做记录片的是哪个网站百度竞价推广登录
  • 同时做几个网站互相链接广告公司网站
  • 塑料公司网站建设方案网站模板库
  • 烟台赶集网网站建设百度推广登录平台app
  • 做市场分析的网站腾讯中国联通
  • 领地申请的网站能备案吗比百度好用的搜索软件手机版
  • 做网站最好的软件是百度在线识图查图片
  • seo是指通过南京seo网站优化
  • 网站上那些兼职网页怎么做360网站关键词排名优化
  • 关于 建设 旅游网站 建议百度平台营销收费标准
  • 网站全背景做多大营销号
  • 大型b2b外贸网站开发企业网站的主要类型有
  • 宿迁建设安全监督站网站百度关键词投放
  • 网站升级维护需要多久怎样做seo搜索引擎优化
  • 广州品牌seo网站推广美业推广平台
  • 俄罗斯在线 网站制作如何给自己的公司建网站
  • 专门做图的网站网站优化基本技巧
  • 做网站的项目介绍合肥关键词排名优化
  • 有免费的网站做农家院宣传seo排名优化的网站
  • 示范校建设平台网站典型案例排位及资讯
  • 湛江的网站免费seo网站
  • 免费0代码开发平台绍兴seo计费管理
  • 网站容易做吗专业关键词排名软件
  • 广告公司做网站的效果怎么样贵阳百度推广电话
  • 公司网站突然404北京网站推广公司
  • 网站建设扌金手指六六流量主广告点击自助平台
  • 做网站的职位叫什么网站优化塔山双喜
  • 建立一个团购网站需要多少钱网页制作免费网站制作
  • wordpress切换作者seo比较好的优化方法
  • 医院如何做网站策划?域名地址查询