《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制
[精华]第40篇:长文本处理技巧:克服大模型的上下文长度限制
摘要
在大语言模型应用中处理超出其上下文窗口长度的长文本是一项挑战。本文面向初学者介绍长文本处理的常见难题,以及一系列有效策略和技巧,包括如何对文档进行合理分块(固定大小 vs 语义分块、重叠分块等)、利用层次化摘要(Map-Reduce)等框架克服上下文长度限制,并讨论这些方法在问答系统、大型报告分析、书籍理解、长文生成等长文档应用中的最佳实践。文章通过实例代码演示了OpenAI GPT-4和LangChain在长文本处理中的用法,并探讨更长上下文的模型(如Anthropic Claude的100K上下文)在学术研究中的应用案例。最后,我们展望了支持长上下文的大模型架构创新,以及将注意力机制优化(如线性注意力)的前景,并将机器的长文本理解能力与人类认知进行对比。
环境配置
本文中的示例代码在 Python 3.x 环境下测试。请确保安装以下依赖库:
pip install openai langchain faiss-cpu tiktoken anthropic
以上包含 OpenAI 官方接口、LangChain库、FAISS向量存储以及Anthropic API所需的库等。
核心概念与知识点
1. 长文本处理挑战
即使是最先进的大语言模型,在处理长文档时也面临多重挑战:
-
上下文窗口限制:每个模型都有最大输入长度(通常以 tokens 计)。例如GPT-3.5通常支持约4K tokens,GPT-4可达8K或32K,Anthropic Claude甚至扩展到100K tokens。这相当于Claude可以一次性阅读75-100页的文本 (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business)。然而,一旦文本长度超过模型的上下文窗口,必须采取截断或分段处理,否则模型无法一次处理完整内容。即使在窗口内,**“长文档效应”**也会出现:模型往往对非常长的输入给出相对简短的总结,无法线性增长细节 (Summarizing Long Documents | OpenAI Cookbook)。这意味着将20k长度的文档直接丢给模型,得到的总结并不会比10k文档丰富一倍 (Summarizing Long Documents | OpenAI Cookbook)。
-
注意力机制复杂度:Transformer架构的自注意力计算复杂度和内存占用都是输入长度的二次方O(n^2)。也就是说,输入文本越长,计算量和显存开销急剧增大,处理超长序列会非常缓慢且昂贵。此外,模型对长文本的注意力分配不均问题也已被观察到:模型对开头和结尾部分的信息较为敏感,而对中间内容常常“迷失”。研究表明,大模型在输入开头(首因效应)和结尾(近因效应)部分提取信息的表现最好,当关键信息位于中段时性能显著下降。即使增大上下文长度,若没有引导,模型对中间内容的利用效率仍然不高。
-
信息提取难点:长文档往往包含大量细节和次要内容,信噪比低。模型需要在海量文本中抓取与任务相关的要点或回答特定问题,这增加了难度。如果直接将整篇长文档送入模型,可能因为信息稀疏导致模型生成含糊或不完整的回答。此外,长文本逻辑结构复杂,模型可能难以全局统筹上下文中的不同部分,导致理解不连贯。
-
不同模型对比:不同的大模型对长文本的处理能力差异明显。例如,传统GPT-3模型上下文4K tokens,而Claude 2提供了100K的窗口。在上下文长度竞赛中,近年主流模型已从8K扩展到64K,甚至出现了128K乃至百万级上下文的模型,LLaMA有实验版本声称上下文长度可达千万级 (目前常见LLM的上下文长度 - 蝈蝈俊 - 博客园)。然而,更长的上下文并不自动等于更好的效果:研究发现,将同一任务在GPT-3.5(4K)和GPT-3.5-16K上测试,只要文本长度在两者窗口内,其表现几乎重合。因此长上下文模型如果不配套相应的提取与注意力优化策略,未必能有效利用额外的输入长度。这也说明,仅靠无限增大窗口并非万能,如何高效利用长上下文才是关键 (目前常见LLM的上下文长度 - 蝈蝈俊 - 博客园)。
上述挑战促使我们探索各种技巧来克服上下文长度限制,既包括将长文本合理拆分处理,也包括改进模型交互方式以充分利用已有的上下文容量。
2. 文档分块策略
将长文档拆分成较小的片段(Chunk) 是处理长文本的基础策略,可以缓解上下文长度限制并提高后续处理的有效性。常见的分块策略包括:
-
固定大小分块:按照预定的固定长度(如按字符数或token数)将文本切分成均等的小块。这种方法实现简单、计算量易于控制,但可能会在不合适的位置截断文本,例如将一个句子或段落拦腰切断,破坏语义连续性。固定长度分块往往需要我们仔细选择块大小,使每块内容对人类来说在脱离上下文时也是有意义的 (4种最常用的LLM应用文本分块策略-CSDN博客)。经验上,如果一个文本片段单独看在人类看来是可理解的,那么对于模型也大致如此 (4种最常用的LLM应用文本分块策略-CSDN博客)。因此固定大小要尽量与语义边界对齐,并避免过大或过小——过小会割裂上下文,过大会超出窗口且增加检索噪音 (4种最常用的LLM应用文本分块策略-CSDN博客)。
-
语义分块:根据文本的自然结构和语义边界来分段,例如按段落、句子甚至主题切分。相比生硬地按长度截断,语义分块能保证每个块内部是语义完整的,不会拆散句子或相关段落 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。常用的方法是递归式分割(如LangChain提供的
RecursiveCharacterTextSplitter
):先按段落切分,若段落仍过长再按句子切分,句子过长再按单词,依次细分 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。这种逐层细分的方法尽可能保留了文本原有的结构和意义,使得最终得到的文本单元在语义上保持连贯 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。语义分块的优点是减少了跨块依赖,但实现上可能需要结合分句、分段的算法或模型(如通过标点、换行符等)。 -
重叠分块:在顺序分块时,让相邻块之间有一定重叠区域。例如按500字划分,每块和下一块可能共享最后50字的重叠。这种方式确保重要的信息不会因为边界效应被完全割裂,在块与块衔接处的信息可以重复出现以提供上下文 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。重叠能提升后续总结或问答的连贯性,但也会增加总token数量,需要在冗余和信息完整之间权衡。通常重叠大小由经验决定,可以根据块长度的一定比例(比如10-15%)来设定。
-
层次分块与递归总结:针对层次结构明显的长文档(如报告包含章节、小节),可先按较高层次单元分块,然后对子块再细分处理。这和固定/语义分块并不冲突,而是一种多层级的分块策略。例如先将一本书按章节分块,再将每章内部按段落进一步分块处理。层次分块通常结合递归摘要策略使用:先分别总结每个小块内容,再汇总小块摘要形成更高层的摘要。我们在下节将更详细介绍这种 Map-Reduce 式的层次总结方法。
需要注意的是,没有“一招鲜吃遍天”的分块策略,每种方法都有其适用场景和权衡 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。实际应用中最好根据文本类型和任务需求进行实验调优 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)。例如法律合同可能按章节条款分块较好,小说则按情节段落分块效果更佳。在资源允许的情况下,也可以比较不同块大小和重叠设置对结果的影响,以确定最佳方案。
图:长文本处理的一般流程。首先将长文档划分为合理的小块,随后由大语言模型分别处理各个分块(如回答问题或生成摘要),最后将各分块的输出合并得到最终结果。该流程可扩展应用于超出模型上下文限制的长文本任务。
3. 长文本理解框架
完成分块后,我们需要设计合适的框架,引导大模型对长文本块进行处理和理解。以下是几种常见且有效的长文本理解策略:
- Map-Reduce 总结:这是一种层次化的摘要框架,名字借鉴了Map-Reduce编程模型 (Summarization with LangChain. Stuff — Map_reduce — Refine | by Abonia Sojasingarayar | Medium)。具体做法是先将长文本拆分为多个子块(Map阶段),让模型逐块生成摘要或要点;然后再让模型将所有部分摘要汇总、整合成最终摘要(Reduce阶段)。这种方法能够 逐步缩小信息:先从每段提炼出局部概要,再综合得到全局概要 (Summarization with LangChain. Stuff — Map_reduce — Refine | by Abonia Sojasingarayar | Medium)。由于每次处理的文本量减少,模型可以在详尽阅读所有内容的同时控制每次输入不超窗。Map-Reduce 提要尤其适合长度远超上下文窗口的大型文档摘要场景。需要注意在Reduce阶段可以设计提示,要求模型结合各部分摘要输出,不要简单重复。在实践中,OpenAI研究者发现对非常长文档,分块摘要再组合可以产生更符合长度比例的总结 (Summarizing Long Documents | OpenAI Cookbook)。例如将20k字文档分成若干块分别总结,再串联部分总结让模型二次汇总,可获得比一次性总结更丰富的细节 (Summarizing Long Documents | OpenAI Cookbook)。
图:层次化的Map-Reduce摘要流程示意图 (Summarization with LangChain. Stuff — Map_reduce — Refine | by Abonia Sojasingarayar | Medium)。长文档被拆分为多个语义块,每块先单独总结(Map阶段),再将所有块的摘要汇总为最终摘要(Reduce阶段)。这种方法可以扩展模型能够处理的文本长度,并更好地控制摘要的细节程度。
-
引导式阅读:通过精心设计提示,分步骤引导模型逐步“阅读”长文档,而不是直接让其输出最后答案。这类似于人类阅读时的主动思考过程。例如,我们可以让模型按段落依次阅读,在每段之后提问:“这一段的主题是什么?与前文有什么联系?接下来你期待看到什么?” 模型给出段落要点后,再让其阅读下一段并更新理解。这样的 逐段提问-回答 能迫使模型关注每一部分,并建立跨段落的联系,最终在阅读完毕时结合各段要点产出整体结论。另一种引导方法是 设定中间任务,如先让模型列出长文档中的人物关系、事件时间线或章节结构,再基于这些中间信息回答最终问题。这种方法相当于给模型增加了中间记忆和关注点,避免一上来就处理全部信息。一些研究也表明,在长上下文问答任务中,通过在提示中加入示例问答或“scratchpad”(演算过程)可以提升模型从长文档中提取信息的准确率 (Anthropic Shares Techniques to Optimize Claude’s 100K Context Window for Better Recall)。总的来说,引导式阅读利用了分步连贯推理的思想,让模型在长文本处理中模仿人类层层理解的过程。
-
关键信息筛选:当长文档中只有部分内容与查询或任务相关时,先进行 信息过滤 可以大幅提高效率。常见做法是结合信息检索或较小模型进行预筛选。例如,将长文本预先拆成很多细小段落,为每段生成向量嵌入,将这些嵌入建立索引以供语义搜索。当有查询(例如用户问题)时,计算查询与各段的相似度,从中筛选出最相关的几个段落送入大模型处理,而非全文 (4种最常用的LLM应用文本分块策略-CSDN博客)。这种Retrieval-Augmented Generation (RAG) 思想能将上下文显著压缩到模型可处理范围,同时减少无关内容的干扰。另一种筛选手段是先让模型对全文进行一次遍历,标记出“可能重要”的句子或段落(这一步可以提示模型用简单格式输出例如序号列表),然后再让模型根据这些标记的关键点进行总结或回答。这类似于让模型执行一次提要或关键词提取,再聚焦重要信息完成任务。需要注意筛选步骤本身可能会漏掉少量关键信息,因此在高准确率要求的场景,可以增加重叠或多样化检索查询以覆盖更多内容。
综上,这些框架都旨在将 长文本处理转化为一系列可控的小步骤,让模型逐步完成对长文档的理解和生成任务。在实践中,往往将上述策略组合使用,例如先检索相关段落,再对检索结果用引导式提示逐段分析,最后Map-Reduce汇总答案。在保证模型每次处理内容不超长的同时,这些框架尽量保留了长文档的重要信息和结构。
4. 长文档应用最佳实践
长文本处理技巧在许多实际应用中大显身手。下面总结几类常见长文档应用场景及相应的最佳实践:
-
问答系统:面向长文档的问答(如基于企业知识库的客服)通常采用“检索+生成”模式。最佳实践是预先将知识库文档分块建立向量索引,当用户提问时检索出相关文块,再让大模型在这些片段上作答。这既避免了将整个知识库放入提示的不可行性,又提高了回答准确度。如果上下文窗口较大(如使用Claude 100K),也可在提示中直接附上长文档的相关章节,但依然要注意提示结尾重复明确问题以引导模型聚焦作答。对交互式问答代理,还应维护对话历史摘要,避免历史累积超长。
-
大型报告分析:对于金融、科研等领域的长报告,可以使用层次摘要获取不同粒度的信息。例如先让模型将报告每一章节分别总结,再让模型阅读所有章节摘要,生成整个报告的概要。用户若关心细节,可进一步追问某章节细节,此时再调取该章节全文让模型回答。这样既能快速获得报告全貌,又可 drill-down 查看细节。同时,分析类任务可结合图表数据,必要时将报告中的表格数据提取出来,用编程方式计算指标,供模型参考回答。此外,可让模型对报告内容进行批判性分析(优缺点、风险点),这需要引导提示模型扮演审稿人角色,从不同角度出发而不仅是复述。
-
书籍理解:针对书籍或小说这类超长内容,建议按照书的结构分块处理。比如章节概要->整书概要,人物列表和性格分析,情节发展梳理等都可以分别由模型完成,再综合。这类似学生读书笔记的过程。模型可以先列出书中主要人物和关系,再按顺序总结每章剧情,最后根据所有章节摘要归纳主题和思想。对于故事类文本,模型在逐章处理时可加入一些引导式问题避免遗漏细节,如每章结束后问“这一章的冲突是什么,主角成长了吗”。这样逐步让模型“看完”整本书后,再问它全书的中心思想或结局含义,能得到更连贯准确的回应。如果直接让模型读完整本书再总结,往往会因为信息过载而漏掉许多中间情节甚至出现遗忘错误。
-
长文生成:让模型一次性输出超长文本(如章节小说、长篇报告)同样面临上下文限制和结构控制问题。最佳实践是采取逐步生成、分段组装的思路。比如在写小说时,先和模型协作制定详细的大纲(章节梗概),然后逐章续写内容,每章开头附上剧情进展提示确保衔接。生成每章节时都限定在模型上下文长度内,并可以在提示中提供前文摘要以维持一致性。对于技术报告生成,甚至可以逐小节生成,由人或工具检查衔接后再合并。另一个技巧是在人为把长篇任务划分为多个子任务(如文章的各节论点分别生成),最后再由模型或人把这些部分连接润色。总之,要避免单次提示要求模型输出过长文本,而应分段检查,让模型“多产出多反馈”,保证长文本生成的质量和连贯。未来随着模型上下文变长,我们或许能一次生成更长内容,但良好的结构规划依然是必要的。
以上实践表明,在具体应用中我们需要综合运用各种长文本处理技巧。初学者应根据任务特点选取合适的方法:先结构化地分解长文档,再合理引导模型逐步完成任务。当处理特别重要或敏感的长文档时,也要保持审慎,必要时结合人工复核模型输出,以避免长文本带来的累积误差。
案例与实例
下面通过具体实例演示如何使用现有工具和API来实现上述长文本处理策略,包括:利用OpenAI的GPT-4模型对长文本进行递归摘要,使用LangChain框架和向量数据库实现法律长文件的问答,以及Anthropic Claude大窗口模型在学术研究场景下的应用。示例代码力求完整可运行,并配有详细注释说明,便于初学者上手实践。
案例1:OpenAI GPT-4 文档分块摘要实践
首先,我们展示如何使用OpenAI的GPT模型对长文档进行分块总结。假设我们有一段超过模型上下文长度的文本,这里为了演示简便,我们使用一小段《爱丽丝梦游仙境》的英文片段,并将其人为分成两块。实际应用中,这段代码可以处理任意长度的文本,只需根据模型上下文限制调整MAX_TOKENS_PER_CHUNK
等参数,将长文本拆解为合适的小段送入模型。
import openaiopenai.api_key = "YOUR_OPENAI_API_KEY" # 请在此填写您的OpenAI API密钥# 一段长文本(示例:爱丽丝梦游仙境片段)
text = """Alice was beginning to get very tired of sitting by her sister on the bank,
and of having nothing to do: once or twice she had peeped into the book her sister
was reading, but it had no pictures or conversations in it, "and what is the use of
a book," thought Alice, "without pictures or conversation?"So she was considering in her own mind, as well as she could, for the hot day made
her feel very sleepy and stupid, whether the pleasure of making a daisy-chain would
be worth the trouble of getting up and picking the daisies, when suddenly a White
Rabbit with pink eyes ran close by her."""
print("全文长度(字符数):", len(text))# 将长文本按段落拆成两块(实际可根据token长度动态拆分)
chunks = text.split("\n\n")
print("分块数量:", len(chunks))
for i, chunk in enumerate(chunks, 1):print(f"Chunk {i} 长度(字符数): {len(chunk)}")# 定义一个帮助函数,用GPT模型总结给定的文本块
def summarize_chunk(chunk_text, model="gpt-4"):prompt = f"请总结以下内容:{chunk_text}"response = openai.ChatCompletion.create(model=model,messages=[{"role": "user", "content": prompt}],temperature=0)summary = response["choices"][0]["message"]["content"]return summary.strip()# 逐块生成摘要
summaries = []
for i, chunk in enumerate(chunks, 1):summary = summarize_chunk(chunk)print(f"Chunk {i} 的摘要: {summary}\n")summaries.append(summary)# 最后将所有部分摘要再交给模型综合总结(Reduce 阶段)
combined_summary = summarize_chunk(" ".join(summaries))
print("最终综合摘要:", combined_summary)
上面的代码首先将文本按自然段简单分成了两个块(实际应用中应使用前述更智能的分块策略确保不损失语义)。然后定义了summarize_chunk
函数调用OpenAI的聊天模型接口,对每个文本块生成摘要。在Map阶段,我们获取了每个chunk的摘要,最后在Reduce阶段,将所有摘要拼接再请求模型生成综合性的最终摘要。temperature=0
确保摘要结果稳定可控。
示例输出:
全文长度(字符数): 433
分块数量: 2
Chunk 1 长度(字符数): 233
Chunk 2 长度(字符数): 199 Chunk 1 的摘要: 爱丽丝和姐姐坐在河岸边,感到非常无聊。她偷看姐姐的书,发现书里没有图画和对话,便觉得这样的书没有意思。Chunk 2 的摘要: 爱丽丝觉得天气炎热昏昏欲睡,思考编雏菊花环是否值得费劲。突然,一只长着粉红眼睛的白兔跑过她身边。最终综合摘要: 爱丽丝百无聊赖地和姐姐坐在河边,看无趣的书打发时间。正当她又热又困地考虑编花环是否值得时,一只长着粉红眼睛的白兔突然从她身边跑过。
可以看到,模型先分别总结了每个段落的内容,最后我们又得到一个连贯的综合摘要。这个过程体现了Map-Reduce摘要框架:在不超过模型上下文的前提下,我们逐步总结长文本,最终结果既涵盖了各部分要点,又避免了直接总结整篇长文可能遗漏细节的问题。实际应用中,可以根据需要增加分块数量以提升摘要细节粒度(在OpenAI Cookbook的实验中,通过增加分块获得了更长更详细的总结 (Summarizing Long Documents | OpenAI Cookbook) (Summarizing Long Documents | OpenAI Cookbook))。
💡 提示:使用OpenAI API时请留意令牌消耗和费用。对于非常长的文本,逐块总结可能会产生多次API调用,从而增加费用。可以根据任务需要选择GPT-3.5等较便宜的模型,或在保证效果前提下尽量减少分块次数。此外,OpenAI的
tiktoken
库可用于精确计算token长度以帮助拆分文本。
案例2:LangChain 处理法律文件问答应用
本案例演示如何利用 LangChain 框架对一份法律文档进行问答。假设我们有一份简单的合同(为方便演示,这里我们人为构造一小段“合同文本”),我们想询问其中的特定条款。LangChain可以帮助我们完成从分块、向量检索到调用大模型作答的流水线。我们将展示如何使用LangChain的文本分割器、向量存储和RetrievalQA链来实现这一目标。
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA# 合同样本文本(包含多个章节条款)
contract_text = """合同第1条:甲方应于2025年6月1日前向乙方交付100台设备。乙方应于交付后支付货款¥100000。 合同第2条:如甲方未按期交货,每逾期一周,需按货款的10%向乙方支付违约金。 合同第3条:设备验收标准需符合双方签署的技术协议,如不符合,乙方有权拒收。"""# 1. 文本分块:按固定长度或章条分割
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
docs = text_splitter.create_documents([contract_text])
print(f"分块后共 {len(docs)} 段文本。")# 2. 创建向量嵌入并建立FAISS向量索引
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
vector_db = FAISS.from_documents(docs, embeddings)# 3. 使用RetrievalQA链进行问答
qa_chain = RetrievalQA.from_chain_type(llm=ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0),chain_type="stuff",retriever=vector_db.as_retriever()
)# 用户问题:询问合同的特定条款内容
query = "如果甲方没有按时在2025年6月1日前交货,会有什么后果?"
result = qa_chain.run(query)
print("问题:", query)
print("回答:", result)
代码说明:
-
文本分块:我们使用LangChain的
CharacterTextSplitter
将合同文本按照每100字符一段进行分割(由于我们的样本很短,其实分了3段,每段对应合同的一个条款)。在真实场景中,可以根据合同的结构(例如按“第X条”)自定义分块,这里简单演示按长度分割。 -
向量检索:我们创建OpenAI的文本嵌入(ada-002模型)用于将每段文本转化为向量表示,然后使用FAISS构建向量索引库。这样就可以对分段后的合同进行向量语义检索。
-
问答链:我们使用LangChain提供的
RetrievalQA
链,将OpenAI的ChatGPT模型(gpt-3.5-turbo)与我们构建的向量检索器结合。RetrievalQA
会先用查询在向量库中检索相关文本段,将其与问题一起传给LLM模型得到答案。我们将温度设为0以确保回答稳定。
当我们询问“如果甲方逾期交货会有什么后果?”,RetrievalQA会在合同向量库中找到包含“逾期一周……违约金10%”的第二条款段落,然后将该段落提供给GPT模型,生成准确的回答。
示例输出:
分块后共 3 段文本。
问题: 如果甲方没有按时在2025年6月1日前交货,会有什么后果?
回答: 根据合同第2条,如果甲方未按期在2025年6月1日前交货,每延迟一周需向乙方支付相当于货款10%的违约金。
可以看到,模型准确地从合同中提取了逾期交货的后果——每周10%的违约金。这正是通过向量检索将相关条款提供给模型实现的。如果没有向量检索,直接把整个合同给模型,也可能得到正确答案,但当合同非常长时(几十上百条款),直接提问往往会因为上下文超长或信息稀释而失败。 (4种最常用的LLM应用文本分块策略-CSDN博客)提到,良好的分块和检索策略能确保检索结果准确捕捉查询要点。这一示例把RAG(检索增强生成)的流程清晰展现出来:首先分块嵌入以减少上下文长度,然后对用户问题进行语义匹配,最后在匹配内容的基础上由大模型生成答案。
🔧 实践建议:在法律、法规这类长文档问答场景,分块时通常以自然段或条款为单位(如本例按“合同第X条”)。在建立向量索引前,可以对每块文本做轻度清洗(去除多余空白等)。检索时如果返回多个相关块,也可以让模型综合多个片段作答。LangChain的RetrievalQA链支持返回中间步骤结果,方便调试检索是否找对内容。对于极长的法律文件,可考虑使用更高维或专用法律语料的嵌入模型来提高匹配准确率。
案例3:Anthropic Claude 100K 窗口在学术研究中的应用
随着Anthropic的Claude模型将上下文窗口扩展到100K tokens,我们有了让模型一次 ingest 非常长文本的可能。本案例我们讨论Claude在学术研究场景的潜在用法。假设研究人员有一篇冗长的学术论文或一组相关文献,Claude的长上下文能力可以用于以下操作:
-
整篇文献综述:研究人员可以将一整篇论文(比如长达70页的论文,约2-3万词)直接提交给Claude,并要求它总结论文的研究方法、主要发现和结论,甚至可以让它用更通俗的语言解释论文内容。由于100K tokens足以涵盖全文,Claude能够“阅读全文”后给出综合性的总结或评论。而传统模型可能只能逐段输入后再人工拼合总结。Claude大窗在这方面极大地方便了长文档的阅读理解,每秒钟即可消化普通人需要数小时才能读完的内容 (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business)。
-
跨文档比较分析:在学术研究中,经常需要比较多篇论文的异同。Claude 100K的窗口甚至可以一次放入多达数十篇相关论文的要点,然后询问模型“请比较这几篇论文的研究方法异同,并找出其中矛盾的结论”。Claude可以跨越100页的上下文,串联分析不同文档 (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business)。例如,在AI领域的文献调研中,研究者可以让Claude阅读多篇关于某算法的论文,并要求它输出一份综合报告,指出这些论文在哪些观点上是一致的,在哪些地方存在分歧。这样的能力对于人类来说需要长时间通读和做笔记,而Claude可以大幅加速这一过程。
-
复杂问答和推理:Claude的大窗口还支持针对长文档提出复杂的问题。例如,将一份包含大量实验数据和附录的技术报告交给Claude,然后直接问:“根据报告中的数据,作者的结论X是否充分证明?还有哪些因素未被考虑?”Claude可以在长达100K的上下文中搜索相关段落,提取数据,进行一定的推理和批判性分析 (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business)。这类似于让模型充当一个快速阅读并评论的研究助理。当然,这要求提示设计清晰,比如在提示中明确指出“请基于提供的全文,不要引入外部知识”。
值得一提的是,Anthropic官方也在探索如何优化提示来提升Claude对超长文档的记忆和准确率。例如一项案例研究中,他们发现:在提示中引入文档其它部分的问答示例,以及先让模型提取相关引用句再回答,能显著提高Claude从长文档中提取中段信息的能力 (Anthropic Shares Techniques to Optimize Claude’s 100K Context Window for Better Recall) (Anthropic Shares Techniques to Optimize Claude’s 100K Context Window for Better Recall)。这与我们前面提到的引导式阅读和信息筛选不谋而合。在实际使用Claude 100K时,虽然可以一次性放入海量文本,依然建议精心设计提问方式和示例,以确保模型聚焦于真正相关的信息并减少遗漏。
由于Claude的API目前需要开发者申请且可能有访问限制,这里不给出直接运行代码。倘若有权限,调用Claude的流程和OpenAI类似:安装官方anthropic
SDK后,可使用诸如 anthropic.Client().completions.create()
的方法指定模型(如claude-1.3-100k
)和大段提示即可。比如:
from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPTclient = Anthropic(api_key="YOUR_ANTHROPIC_API_KEY")
prompt = HUMAN_PROMPT + "阅读以下所有论文文本,然后回答问题:...\n\n" + full_text + AI_PROMPT
response = client.completions.create(model="claude-1.3-100k", max_tokens_to_sample=1000, prompt=prompt)
print(response.completion)
上述伪代码展示了Claude API调用的大致形式,其中HUMAN_PROMPT
和AI_PROMPT
是Anthropic约定的人机提示前缀,full_text
可以包含超长的文档内容,max_tokens_to_sample
控制Claude输出长度。Claude能在秒级时间内消化如此庞大的输入,这为学术界带来了前所未有的便利:个人研究者可以更快掌握海量资料的要点,中小型团队无需庞大人力就能完成文献调研的初步工作。不过也要注意,目前模型对于长上下文的利用仍然存在局限,并非投入100页材料就能得到可靠输出。用户应当对Claude的回答保持审慎,重要结论仍需自行验证。
总结与扩展思考
处理长文本是大语言模型落地应用中绕不过的坎,但幸运的是我们已经积累了丰富的技巧来应对上下文长度限制。从合理的文本分块到巧妙的提示设计,再到新模型的超长上下文支持,长文本处理能力正在不断提升。总结全文,并结合未来展望,有以下几点思考:
-
长上下文处理与模型架构创新:目前的长文本处理更多是在应用层面的技巧,但从模型架构角度也有许多有趣的探索。例如,谷歌的Transformer-XL通过引入循环机制实现了跨段记忆,Facebook的Longformer、BigBird等采用稀疏注意力模式使得自注意力复杂度从O(n^2)降低为近似线性,可以直接处理更长序列。最近的研究中,一些模型甚至支持 数百万级别上下文 (目前常见LLM的上下文长度 - 蝈蝈俊 - 博客园),这是通过让模型学习将文本保存在外部内存或压缩表示中实现的。可以预见,未来的大模型将融合同步长上下文和推理的新架构,使得模型具备“记忆”长篇幅资料并进行推理的能力,而不完全依赖切分后逐段处理。
-
注意力机制优化(线性注意力前景):Transformer的自注意力是性能瓶颈,很多研究正致力于让注意力计算更高效。线性注意力是重要方向之一,即将自注意力的复杂度从二次降低为线性。比如Performer模型引入随机特征映射的方法,实现了近似线性时间的注意力计算,在长度扩展上几乎不损失效果 (Post-Transformer Architectures: Innovations - Substack)。如果线性注意力等技术成熟应用,我们将能训练和运行在更长序列上的模型,而不需要剪裁输入或借助外部工具。值得关注的还有FlashAttention等优化,它通过更好的内存访存模式加速注意力计算,间接缓解长文本处理的速度问题。总之,更长更快是注意力机制未来的发展目标,这将直接拓宽模型原生可处理上下文的长度边界。
-
长文本理解与人类认知对比:有趣的是,许多长文本处理策略(分块、摘要、逐步阅读)与人类阅读长文档时的策略不谋而合。人类在阅读一本书时也会章节归纳、大脑提炼要点,遇到复杂内容会停下来理清思路或做笔记。可以说,目前我们教给模型的这些技巧,某种程度上是在模拟人类的阅读理解过程。不过,人类拥有常识和背景知识,可以在阅读时自动填补省略的信息,而模型如果切分不当可能会遗漏重要上下文。同时,人类有动态注意力,会根据阅读目的灵活调整关注点,而模型需要通过提示工程来实现这一点。未来的大模型或许会内置某种“注意力指引”机制,自动对长文本先做初步扫描、建立索引,然后自主决定哪些部分需要深入阅读,就像人浏览文章时先看目录再择章细读一样。这样的能力将真正逼近人类处理长篇幅信息的思维模式。
总而言之,克服上下文长度限制是一项系统工程,需要模型架构、算法策略和应用实践的多管齐下。对初学者而言,大可不必被动等待新模型的出现,从现在开始掌握并运用本文介绍的长文本处理技巧,就能在许多场景下变“不可能”为“可能”:让数百页的报告在几分钟内尽收眼底,让繁杂冗长的资料变得条理清晰。展望未来,我们有理由期待大语言模型在长文本处理上取得突破性的进步,借助更聪明的注意力和记忆机制,它们将更接近人类那样去“阅读”世界、理解世界。这将为知识获取和信息分析打开全新的大门,也为我们每个人赋能,让我们能够更有效地驾驭汪洋般的知识长河。
参考文献:
- OpenAI Cookbook - Summarizing Long Documents (Summarizing Long Documents | OpenAI Cookbook) (Summarizing Long Documents | OpenAI Cookbook)
- LangChain 官方文档 - Summarization (Summarization with LangChain. Stuff — Map_reduce — Refine | by Abonia Sojasingarayar | Medium)
- CSDN博客 - LLM应用中的文本切分策略 (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客) (LLM–RAG中的文本切分策略及长上下文窗口是否会取代RAG?_rag 文档自动分段-CSDN博客)
- CSDN博客 - 常用的LLM文本分块策略 (4种最常用的LLM应用文本分块策略-CSDN博客)
- Stanford ARXIV - Lost in the Middle: How LMs Use Long Contexts
- Anthropic 官博 - Introducing 100K Context Windows (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business) (How Claude’s 100K Contexts Enable Deeper Analysis and Insights for Business)
- Maginative 报道 - Claude 100K Context Prompt Techniques (Anthropic Shares Techniques to Optimize Claude’s 100K Context Window for Better Recall)
- Substack 专栏 - Post-Transformer Architectures (Post-Transformer Architectures: Innovations - Substack)
- 蝈蝈俊 - 目前常见LLM的上下文长度 (目前常见LLM的上下文长度 - 蝈蝈俊 - 博客园) (目前常见LLM的上下文长度 - 蝈蝈俊 - 博客园)
相关文章:
《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制
[精华]第40篇:长文本处理技巧:克服大模型的上下文长度限制 摘要 在大语言模型应用中处理超出其上下文窗口长度的长文本是一项挑战。本文面向初学者介绍长文本处理的常见难题,以及一系列有效策略和技巧,包括如何对文档进行合理分…...
开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)
一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…...
千问3(Qwen3)模型开源以及初体验
体验地址:百炼控制台 1 千问3模型:全球最强开源大模型震撼发布 2025年4月29日,阿里巴巴正式开源了新一代通义千问模型Qwen3(简称千问3),这一里程碑式的事件标志着中国开源大模型首次登顶全球性能榜首。千问…...
对 FormCalc 语言支持较好的 PDF 编辑软件综述
FormCalc是一种专为PDF表单计算设计的脚本语言,主要应用于Adobe生态及SAP相关工具。以下是对FormCalc支持较好的主流软件及其特点: 1. Adobe LiveCycle Designer 作为FormCalc的原生开发环境,LiveCycle Designer提供最佳支持: …...
20250429-李彦宏口中的MCP:AI时代的“万能接口“
目录 一、什么是MCP? 二、为什么需要MCP? 三、MCP的工作原理 3.1 核心架构 3.2 工作流程 四、MCP的应用场景 4.1 开发者工具集成 4.2 智能助手增强 4.3 企业应用集成 4.4 典型案例 五、MCP的技术特点 5.1 标准化接口 5.2 可扩展性设计 5.…...
汽车启动原理是什么?
好的!同学们,今天我们来讨论汽车的启动原理,重点分析其中的动力来源和摩擦力作用。我会结合物理概念,用尽量直观的方式讲解。 1. 汽车为什么会动?——动力的来源 汽车发动机(内燃机或电动机)工…...
LeetCode[347]前K个高频元素
思路: 使用小顶堆,最小的元素都出去了,省的就是大,高频的元素了,所以要维护一个小顶堆,使用map存元素高频变化,map存堆里,然后输出堆的东西就行了 代码: class Solution…...
《软件测试52讲》学习笔记:如何设计一个“好的“测试用例?
引言 在软件测试领域,设计高质量的测试用例是保证软件质量的关键。本文基于茹炳晟老师在《软件测试52讲》中关于测试用例设计的讲解,结合个人学习心得,系统总结如何设计一个"好的"测试用例。 一、什么是"好的"测试用例…...
【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析
ISP芯片及其功能概述 ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的…...
QtCreator Kits构建套件报错(红色、黄色感叹号)
鼠标移动上去,查看具体报错提示。 一.VS2022Qt5.14.2(MSVC2017) 环境VS2022Qt5.14.2(MSVC2017) 错误:Compilers produce code for different ABIs:x86-windows-msvc2005-pe-64bit,x86-windows-msvc2005-pe-32bit 错误࿱…...
天能资管(SkyAi):全球布局,领航资管新纪元
在全球化浪潮汹涌澎湃的今天,资管行业的竞争已不再是单一市场或区域的较量,而是跨越国界、融合全球资源的全面竞争。天能资管(SkyAi),作为卡塔尔投资局(Qatar Investment Authority,QIA)旗下的尖端科技品牌,正以其独特的全球视野和深远的战略眼光,积极布局资管赛道,力求在全球资…...
基于PHP的宠物用品商城
有需要请加文章底部Q哦 可远程调试 基于PHP的宠物用品商城 一 介绍 宠物用品商城系统基于原生PHP开发,数据库mysql,前端bootstrap,jquery.js等。系统角色分为用户和管理员。(附带参考文档) 技术栈:phpmysqlbootstrapphpstudyvsc…...
桂链:使用Fabric的测试网络
桂链是基于Hyperledger Fabric开源区块链框架扩展开发的区块链存证平台,是桂云网络(OSG)公司旗下企业供应链、流程审批等场景数字存证软件产品,与桂花流程引擎(Osmanthus)并列为桂云网络旗下的标准与可定制…...
k8s术语master,node,namepace,LABLE
1.Master Kubernetes中的master指的是集群控制节点,每个kubernetes集群里都需要有一个Master节点来负责整个集群的管理和控制,基本上kubernetes的所有控制命令都发给它,它来负责具体的执行过程。Master节点通常会占据一个独立的服务器(高可用建议3台服务器)。 Master节点…...
香港科技大学广州|智能制造学域硕、博研究生招生可持续能源与环境学域博士招生宣讲会—四川大学专场!
香港科技大学广州|智能制造学域硕、博研究生招生&可持续能源与环境学域博士招生宣讲会—四川大学专场!!! 两个学域代表教授亲临现场,面对面答疑解惑助攻申请!可带简历现场咨询和面试! &am…...
【Vue】 实现TodoList案例(待办事项)
目录 组件化编码流程(通用) 1.实现静态组件:抽取组件,使用组件实现静态页面效果 2.展示动态数据: 1. 常规 HTML 属性 3.交互——从绑定事件监听开始 什么时候要用 event: 什么时候不需要用 event&am…...
Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy
目录 1,安装前须知 2,安装过程 2.1,设置语言环境 2.2,设置源 2.3,安装ROS 2软件包 2.4,环境设置 2.5,测试 2.6,不想每次执行source 检验是否成功(另…...
【Unity】使用LitJson保存和读取数据的例子
LitJson 是一个轻量级的 JSON 解析和生成库,广泛应用于 .NET 环境中。 优点:轻量级,易用,性能优秀,支持LINQ和自定义对象的序列化和反序列化。 public class LitJsonTest : MonoBehaviour { // Start is called before…...
飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)
飞蛾扑火算法优化Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型) 目录 飞蛾扑火算法优化Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 …...
物联网平台厂商有哪些?2025物联网平台推荐?国内有哪些比较好的物联网平台?
评选维度: 技术实力:涵盖设备接入规模、数据处理效率、AI/边缘计算融合能力、协议兼容性及平台架构先进。 应用场景:包括垂直领域解决方案的成熟度、定制化能力、跨行业复用性及实际落地案例规模。 安全可靠:涉及数据传输加密、…...
瑞幸咖啡披露2025年Q1财报:门店净增1757家,营业利润率达8.3%
4月29日,瑞幸咖啡(OTC:LKNCY)公布2025年第一季度财报。数据显示,2025年第一季度总净收入88.65亿元人民币,同比增长41.2%,GMV达103.54亿元人民币。截止一季度末,门店总数达24097家。依…...
selenium IDE脚本如何转换为可运行的selenium webdriver java程序
上一篇博客(用selenium4 webdriver java 搭建并完成第一个自动化测试脚本-CSDN博客)介绍了如何创建一个selenium webdriver 的java工程。 之前博客(带你用selenium IDE的录制第一个自动化测试脚本也介绍了如何使用selenum ide …...
GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,作者:机器学习之心
GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断 目录 GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,运行环境M…...
LeetCode热题100--53.最大子数组和--中等
1. 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…...
【计算机视觉】深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南
深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南 技术架构与设计哲学核心设计理念系统架构概览 核心功能与预构建解决方案1. 人脸检测2. 手势识别3. 姿势估计4. 物体检测与跟踪 实战部署指南环境配置基础环境准备获取源码 构建第一个示例(手部追…...
血管造影正常≠心脏没事!无创技术破解心肌缺血漏诊困局
提到冠心病检查,很多人会纠结:到底哪项检查能更全面地反映病情、精准得出结论? 从准确性来说,冠脉 CT 与冠脉造影是临床常用手段。二者虽然能够清晰显示血管大冠脉是否存在狭窄或斑块,但二者本质上有相同的 “局限性”…...
ClickHouse副本集群
每个节点安装clickhouse服务安装 zookeeper每个节点修改 /etc/clickhouse-server/config.xml 863行左右 <remote_servers><default><shard><replica><host>18.1.13.30</host><port>9000</port></replica><replica&g…...
Go 语言中的 `os.Truncate` 函数详解
os.Truncate 是 Go 标准库中用于修改文件大小的函数。下面我将全面解析这个函数的功能、用法和注意事项。 函数签名 func Truncate(name string, size int64) error核心功能 os.Truncate 用于: 将指定文件截断或扩展到指定大小处理符号链接时会操作链接指向的实…...
java 加入本地lib jar处理方案
在 Java 项目中,如果想将本地的 .jar 文件加入到 Maven 构建流程中,有以下几种常见方式可以选择: ✅ 推荐方式:将本地 JAR 安装到本地 Maven 仓库 这是最佳实践。通过 mvn install:install-file 命令把JAR 包安装到本地仓库&…...
【Git】之【Get】TortoiseGit不显示状态图标
参考:Windows中解决TortoiseGit 不显示状态图标的问题 实测可行。 打开注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers路径 确保TortoiseGit文件夹在前几个,可以重命名将其他无关…...
[Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装
目录 1.再谈网络转发 2.路由 举个例子 3.分片和组装 IP 层 [Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器 1.再谈网络转发 我们在上一篇文章中知道了路由器的功能有: 转发DHCP | 组建局域网NAT 组建局域网功能表现&…...
Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读
《Sce2DriveX: A Generalized MLLM Framework for Scene-to-Drive Learning》2025年2月发表,来自中科院软件所和中科院大学的论文。 端到端自动驾驶直接将原始传感器输入映射到低级车辆控制,是Embodied AI的重要组成部分。尽管在将多模态大语言模型&…...
论文笔记-多智能体任务分配:动态智能空间中的拍卖与抢占机制
《IET Cyber-Systems and Robotics》出版中国电信研究院 Wei Li、Zhenhua Liu 团队与山东大学 Jianhang Shang 和 Guoliang Liu 团队的研究成果,文章题为“Multiagent Task Allocation for Dynamic Intelligent Space: Auction and Preemption With Ontology Knowle…...
数据库day-08
一、实验名称和性质 删除修改数据 验证 设计 二、实验目的 1.掌握数据操作-- 删除、修改; 三、实验的软硬件环境要求 硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: Windows 10&#x…...
.NET 平台详解
什么是 .NET? .NET 是一个由微软开发的跨平台、开源的开发者平台,用于构建多种类型的应用程序。它提供了一致的编程模型和丰富的类库,支持多种编程语言(如 C#、F#、Visual Basic)。 .NET 的核心组成 运行时环境 CLR …...
高效 Transformer 的综述
20年9月来自谷歌研究的论文“Efficient Transformers: A Survey”。 文章主要针对一类X-former模型,例如Reformer, Linformer, Performer, Longformer为例,这些对原版Transformer做了改进,提高了其计算和内存的效率。 self-attention是Tran…...
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
1.日志记录注解(LogRecord) Repeatable(LogRecords.class) Target({ElementType.METHOD, ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Inherited Documented public interface LogRecord {String success();String fail() default "&q…...
HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(二、元服务与应用APP签名打包步骤详解)
在HarmonyOS应用开发过程中,发布应用到应用市场是一个重要的环节。没经历过的童鞋,首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请,混在一起分不清。其实搞清楚后也就那会事,各个文件都有它存在的作…...
java的多线程
文章目录 创建线程什么是线程?什么是多线程?如何在程序中创建出多条线程?方式一:继承Thread类方式二:实现Runnable接口方式三:实现Callable接口 三种创建方式的对比 线程的常用方法Thread提供的常用方法Thr…...
CSS--图片链接水平居中展示的方法
原文网址:CSS--图片链接居中展示的方法-CSDN博客 简介 本文介绍CSS图片链接水平居中展示的方法。 图片链接 问题复现 源码 <html xml:lang"cn" lang"cn"><head><meta http-equiv"Content-Type" content"te…...
【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
深度解析YOLOv5:下一代实时目标检测框架实战指南 技术演进与架构设计YOLO系列发展脉络YOLOv5核心架构1. 骨干网络(Backbone)2. 特征融合(Neck)3. 检测头(Head) 环境配置与快速开始硬件要求建议详…...
CentOS NFS共享目录
最近遇到一个问题,一台CentOS7应用服务器上的服务需要访问另外一台CentOS7应用服务器上的文件,然后传输文件给第三方。想到windows系统之间有文件共享的功能,Linux系统之间是否也有类似的文件共享功能呢? NFS NFS代表Network Fil…...
「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具
引言:从Proteus到国产平台的范式革新 在高校嵌入式实验教学中,仿真工具的选择直接影响学生的工程能力培养与创新思维发展。长期以来,Proteus作为经典工具占据主导地位,但其设计理念已难以满足现代复杂系统教学与国产化技术需求。…...
[随笔] 升级uniapp旧项目的vue、pinia、vite、dcloudio依赖包等
汇总 # 升级uniapp项目dcloudio整体依赖,建议执行多次 # 会顺带自动更新/升级vue的版本 npx dcloudio/uvmlatest alpha# 检查 pinia 的最新版本 npm view pinia version# 更新项目 pinia 到最新版本 npm update pinia# 更新项目 pinia 到特定的版本 # 首先…...
C++学习:六个月从基础到就业——异常处理:机制与最佳实践
C学习:六个月从基础到就业——异常处理:机制与最佳实践 本文是我C学习之旅系列的第三十八篇技术文章,也是第二阶段"C进阶特性"的最后一篇,主要介绍C中的异常处理机制及其最佳实践。查看完整系列目录了解更多内容。 引言…...
【MongoDB篇】MongoDB的数据库操作!
目录 引言第一节:数据库的“诞生”——如何创建数据库?🤔第二节:数据库的“查阅”——看看我的数据库们!🕵️♀️第三节:数据库的“切换”——我在哪个房间干活?➡️🚪…...
react-新建项目复用node_modules
每次新建定制时,前端都需要npm i来安装依赖,耗时长 失败多。 可以把这个bat文件放到新建分支的前端目录下,修改后双击bat文件运行,如果不需要添加修改依赖,无需运行npm i node_modules.bat里面的内容如下:…...
unity Orbbec Femto Bolt接入unity流程记录 AzureKinectExamples 插件 使用记录
奥比中光的深度相机Orbbec Femto Bolt是Microsoft的Azure Kinect DK的升级版,根据官网的文档配置环境遇到了一些问题,记录一下。 注意: 官网文档链接:Femto Bolt文档 1、首先连接相机到电脑USB3.0,接通电源…...
信息科技伦理与道德3-4:面临挑战
1 人机结合 1.1 人机结合的挑战 如何处理好人与机器的决策的关系?智能决策的不透明、不可解释性…出了问题该谁负责? 案例1:设想救护车调度系统造成混乱 某城市使用一个机器学习平台来进行城市里医院的救护车调度工作。起初,这个…...
对比测评:为什么AI编程工具需要 Rules 能力?
通义灵码 Project Rules 在开始体验通义灵码 Project Rules 之前,我们先来简单了解一下什么是通义灵码 Project Rules? 大家都知道,在使用 AI 代码助手的时候,有时候生成的代码不是自己想要的,或者说生成的代码采纳后…...