本人项目地址大全:Victor94-king/NLP__ManVictor: 优快云 of ManVictor
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
引言
随着大型语言模型(LLM)技术的飞速发展,模型支持的token数量不断增加,从最初的4k、8k扩展到现在的16k、32k,使得我们能够处理更长的文本内容。然而,这一进步也带来了新的挑战:
- 机器资源不足:尽管模型能够处理更长的文本,但显卡资源可能成为限制因素,导致无法一次性处理全部样本。
- 理解能力不足:即使资源充足,许多开源模型在理解和总结长文本方面仍存在不足,一次性输入过多token可能导致模型抓不住重点或产生幻觉。
最近在帮人做长文本的QA,一个思路做问题router之后进行判断问题是全局还是局部。如果是全局的话对长文本进行summary再回答。所以这里需要对长本文进行总结,在这里看到langchain有几条处理方式
处理方式
下面都会以代码+解析的形式出现,然后我这边用的Xinference启动的服务,可以参考下。
1. Stuff
这是一种直接的处理长文本的方法,将所有内容一次性输入给LLM。
-
优点:只需调用一次LLM,上下文完整,便于模型理解全貌。
-
缺点:对GPU资源和模型理解能力要求高,且存在max_token限制,对于更长的文本仍存在限制。
代码:
from langchain.document_loaders import Docx2txtLoader # 新增这个导入 from langchain_openai import ChatOpenAI from langchain.prompts import PromptTemplate from langchain.chains.llm import LLMChain from langchain.chains.combine_documents.stuff import StuffDocumentsChain import time start_time = time.time() # 记录开始时间 # 导入 docx 文档 loader = Docx2txtLoader(&#