ChatGPT | LangChain的文本切割方法对比

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

ChatGPT面向对话格式的文本理解很好,但如果要把网络上的文章让ChatGPT直接分析则会有格式的问题。文本清洗是个大课题,讲起来需要很多篇幅,优化起来前路漫漫。

本文基于稍微加工后的文本内容,使用LangChain的CharacterTextSplitter 和 RecursiveCharacterTextSplitter两个文本切割方法做效果对比,因为文本切割的效果直接影响知识库方向ChatGPT反馈的效果

先说结论,CTS比RTCS稍好,利用明确的段落分隔符可以避免一些初级问题发生,一些高级的问题两者都会发生。

以下文本内容来自大爆发:最后一波上半年能开标的50多个项目,预算超50亿元,标黄的内容是测试关键数据。

直接贴出运行结果,红框是出错的地方都是来自RTCS(RecursiveCharacterTextSplitter):

 CTS 返回结果是使用CharacterTextSplitter做text_splitter,它是基于符号做段落切割,本文选择####作为段落的分割符。

RTCS 返回结果是使用RecursiveCharacterTextSplitter,它是基于固定大小做段落切分。

再次总结结论,CTS比RTCS稍好,可以避免一些初级问题发生。


接下来贴出源代码,分为两部分:input.py和output.py。

以下是Input.py的源码,是很关键很关键很关键的地方,用embedding和切割存数据到向量数据库:

import os
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter# 1 定义embedding
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxxx"
os.environ["OPENAI_API_BASE"] = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", deployment="lk-text-embedding-ada-002", chunk_size=1)# 2 定义文件 
loader = TextLoader(".\\单文件\\项目信息.txt", "utf-8")
pages = loader.load_and_split()# 3 重要!!!初始化加载器
# 按符号切分段落
text_splitter_CTS = CharacterTextSplitter(separator = "####",chunk_size = 500, #chunk_size = 1000,chunk_overlap = 0
)
split_docs_CTS = text_splitter_CTS.split_documents(pages)
print(f'CharacterTextSplitter documents:{len(split_docs_CTS)}')
#print(split_docs_CTS)
#写入向量数据库
print(f'写入CTS向量数据库')
vectordb = Chroma.from_documents(split_docs_CTS, embedding=embeddings, persist_directory="./CTS/")
vectordb.persist()# 按固定尺寸切分段落
text_splitter_RCTS = RecursiveCharacterTextSplitter(chunk_size = 500, #chunk_size = 1000,chunk_overlap = 200
)
split_docs_RCTS = text_splitter_RCTS.split_documents(pages)
print(f'RecursiveCharacterTextSplitter documents:{len(split_docs_RCTS)}')
#print(split_docs_RCTS)
#写入向量数据库
print(f'写入RCTS向量数据库')
vectordb = Chroma.from_documents(split_docs_RCTS, embedding=embeddings, persist_directory="./RTCS/")
vectordb.persist()

以下是Output.py的源码,调用ChatGPT基于向量数据库搜索出来的文字片段组织文字来回答:

import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain import OpenAI,VectorDBQA
from langchain.chains import RetrievalQA
from typing import Dict, Anyos.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxxxxxxxxxx"
os.environ["OPENAI_API_BASE"] = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"dict: Dict[str, Any] = {"deployment_id": "lk-gpt-35-turbo"
}
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", deployment="lk-text-embedding-ada-002", chunk_size=1)
openAiLLm = OpenAI(temperature=0.9, model_name="gpt-35-turbo", model_kwargs=dict, max_tokens=100)db_CTS = Chroma(persist_directory="./CTS/", embedding_function=embeddings)
db_RTCS = Chroma(persist_directory="./RTCS/", embedding_function=embeddings)print('----------------')question_list=["介绍一下重庆市新型数字交通物联网大数据服务平台的金额、截止时间","介绍一下广州城市职业学院项目的金额、截止时间","介绍一下吴中区智慧教育项目的预算、截止时间","介绍一下之江实验室项目的预算、截止时间"]for i in range(0,len(question_list)):question_text=question_list[i]qa_CTS = RetrievalQA.from_chain_type(llm=openAiLLm, chain_type="stuff", retriever=db_CTS.as_retriever(), return_source_documents=False)# 进行问答result = qa_CTS({"query": question_text}) print("CTS 返回结果:" + str(result))#.split('\n')[0])print('------')qa_RTCS = RetrievalQA.from_chain_type(llm=openAiLLm, chain_type="stuff", retriever=db_RTCS.as_retriever(), return_source_documents=False)# 进行问答result = qa_RTCS({"query": question_text}) print("RTCS 返回结果:" + str(result))#.split('\n')[0])print('***********************************************')

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT确实有一种即时学习的能力

以下是ChatGPT即时纠正自己错误的一段对话,大家发现了什么没有,欢迎评论。 再次回答时,它立即更正了自己之前的错误; 提问中的个别错别字并没有影响到它对问题的理解; 再次回答时并没有重复第一次回答中的大部分内容&a…

ChatGPT办公应用:制作PPT大纲

正文共 617字,阅读大约需要 4 分钟 解决方案专家必备技巧,您将在4分钟后获得以下超能力: 制作PPT大纲 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Yuke PPT技能是一…

chatgpt赋能python:Python抢单软件:如何优化SEO?

Python抢单软件:如何优化SEO? 导言 随着互联网技术的飞速发展,越来越多的人开始关注SEO(Search Engine Optimization)技术。而对于Python编程工程师来说,了解SEO技术也是非常重要的。那么,如何…

腾讯回应与Meta VR头显合作传闻;美国考虑限制中国用户使用美国云计算服务;ChatGPT暂停联网测试|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

比ChatGPT更恐怖的AI应用,来了...

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 这两周AI界真的太刺激了!一个接一个令人惊艳的应用发布,比如今天要介绍的这个----AutoGPT。 AutoGPT是做什么的呢?简单的说,你告诉它一个任务&#xff0…

Midjourney学习系列之三——宝藏网站与博主分享

在学习了Midjourney保姆级教程(点击Midjourney学习系列之一 —— 保姆级入门教程_输出啊靓仔的博客-CSDN博客阅读)和进阶学习内容(点击Midjourney学习系列之二 —— Midjourney进阶之路_输出啊靓仔的博客-CSDN博客)之后&#xff0…

ChatGPT专业应用:生成直播关注话术

正文共 1120 字,阅读大约需要 7 分钟 直播运营等必备技巧,您将在7分钟后获得以下超能力: 生成直播关注话术 Beezy评级 :A级 *经过寻找和一段时间的学习,一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim …

只会玩ChatGPT?惊艳我们的又不只是它一个对话系统

1. 引言 终于回归到本尊开始上手了。这次是介绍了几个和ChatGPT一样强大或者基于GPT系列的新鲜对话系统,各有优劣和长处吧。大家感兴趣的话可以自己搜索一下,这里仅做简要介绍。 2. ChatGPT ChatGPT是最近最火的,也是我深入上手一星期的产…

让ChatGPT发挥出最强威力的7大技巧!

大家好,我是小z(也是阿粥) 今天给大家分享一本如何更好的使用GPT的干货书籍——《与 AI 对话:ChatGTP 提示工程揭秘》。 当然,依照惯例,文末有几本作为粉丝福利~ 机器有机器的作用,人有人的独特…

chatgpt赋能python:Python如何创建集合——你必须知道的所有知识

Python 如何创建集合——你必须知道的所有知识 作为一位有10年 Python 编程经验的工程师,我可以告诉你,Python 集合是编程中非常重要的一部分。如果你不知道如何创建集合,那么你可能会错过很多东西。所以,让我们深入探讨 Python …

chatgpt赋能python:Python合并集合:学习如何在Python中合并多个集合

Python合并集合:学习如何在Python中合并多个集合 在Python编程语言中,集合是一组互不相同的元素。在处理数据时,我们通常需要将多个集合合并为一个。Python提供了几种方法来合并集合,本文将介绍这些方法以及如何使用它们。 什么…

chatgpt赋能python:Python中的集合:什么是集合及如何创建集合

Python中的集合: 什么是集合及如何创建集合 当你需要存储一组无序且互不相同的数据时,Python的集合(set)是一种非常有用的数据类型,它是可变、无序、且不包含重复元素的数据类型。本文将简要介绍Python中的集合,包括其…

我和ChatGPT聊了聊个人知识管理 | ChatGPT实践

话说,昨天我终于申请了一个ChatGPT的账号,完之后,就玩儿嗨了嘛,问东问西地,简直停不下来。 不过除了闲聊之外,还是想借助ChatGPT的帮忙完成一些具体的任务,于是我就和它聊了聊个人知识管理。 文…

Midjourney案例-4步完成海报设计

Midjourney 大家都很熟悉了,大大提高了UED团队出稿制作效率。画面创意也为设计师的思维拓宽了新的边界。此外,Midjourney的多领域专业知识也成为设计师跨越不同领域的有力工具。今天就给大家分享一个 Midjourney 商业化UI应用——ChatGPT分享会海报&…

全网热议的chatgpt是什么?如何参与chatgtp小组件的制作?

ChatGPT是什么? ChatGPT,美国OpenAI 研发的聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动&#xff…

PHP编写聊天演示DEMO接口Chat GPT获取API Keys

登录https://beta。openai。com/account/api-keys 点击create获取apiKey <?php header( "Content-Type: application/json" ); $context json_decode( $_POST[context] ?: "[]" ) ?: []; $prompt ""; if( empty( $context ) ) {$please…

ChatGPT在人才招聘中的优势与应用

随着人工智能技术的迅猛发展&#xff0c;ChatGPT作为一种创新的自然语言处理模型&#xff0c;正在在人才招聘领域展现出其独特的优势和广泛的应用。ChatGPT不仅能够提供智能化的候选人筛选和匹配&#xff0c;还可以提供个性化的交互体验和数据分析&#xff0c;帮助企业更加高效…

ChatGPT 当我面试官的一天

你想过ChatGPT作为面试官会是什么样吗&#xff1f; 各种题库刷了又刷&#xff0c;但是无法进行面试实战&#xff1b;这下终于可以通过ChatGPT来模拟面试了&#xff0c;简直不要太爽了~ 这里只是基础问题&#xff0c;你可以给他输入你的工作经验&#xff0c;所学技能来让他给你…

【资源分享】ChatGPT、GPT-4和AIGC资料收集,50+个pdf,持续更新!!

点击上方“Python与机器智能”&#xff0c;选择“星标”公众号 第一时间获取价值内容 种种迹象和最近的Chatgpt将掀起全球第四次工业革命的浪潮&#xff0c;为什么&#xff1f;首先&#xff0c;ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人…

竞品分析、精益数字化分享、ChatGPT相关报告、经营分析手册、MySQL经典50题、数据指标拆解和精细化分析…| 本周精华...

▲点击上方卡片关注我&#xff0c;回复“8”&#xff0c;加入数据分析领地&#xff0c;一起学习数据分析&#xff0c;持续更新数据分析学习路径相关资料~&#xff08;精彩数据观点、学习资料、数据课程分享、读书会、分享会等你一起来乘风破浪~&#xff09;回复“小飞象”&…