基于AIGC构建本地知识库问答 - 文本切割粒度考量

粗粒度的文本被检索出来之后给大模型参考,大模型总会被文本中的无关信息干扰; 而细粒度的文本,检索出来的信息可能不全,缺少上下文信息,导致大模型没法给出正确答案。那么在工程中如何平衡切割文本的长短呢?

一、背景

使用AIGC构建本地知识库的其中一个步骤就是切割文本(chunk),其中一个核心的参数便是控制文本切割的粒度,这直接关系到Q&A环节的回答质量。

粗粒度的文本被检索出来之后给大模型参考,大模型总会被文本中的无关信息干扰; 而细粒度的文本,检索出来的信息可能不全,缺少上下文信息,导致大模型没法给出正确答案。那么在工程中如何平衡切割文本的长短呢?

二、基本准则

首先,以你使用的Text模型的最大上下文Token为上限,比如使用GPT-4K模型,那么文本切分粒度天然限制就不能超过4K,大模型根本就无法接受超过最大Token限制的文本内容,这是上限!那么最小是多少?为了保证检索出来的信息是完整的,确保有足够的上下文,从以往的经验来看,不能少过50-100 Token吧,不然大模型也没办法给出准确的答案。

那么再100-大模型Token上限的这个范围,如何具体确定你的切割粒度?那这个又跟你的Q&A期望相关了。如果你是做检索类型的任务,期待查询的返回是500字以内的反馈,那么400-600的Token切割数量是合适的。如果是你是做总结类型的任务,那么切片要大一点比较好,比如500,1000Token数量,这样才能归纳总结的全面准确一点。

三、其它考量

  • 考虑上下文:确保即使在细粒度的文本中,也要保存足够的上下文信息。例如,如果你选择句子为单位,那么可能考虑将前后的句子也加入,形成一个段落,以便为大模型提供上下文。

  • 采用动态窗口:在检索时,可以采用动态的窗口大小,即根据检索到的关键信息动态调整文本切割的范围。这样可以确保即使在细粒度中也能提供足够的上下文。

结合多粒度策略:在检索或其他任务中,可以考虑同时使用多个文本粒度。例如,首先使用粗粒度获取大致的范围,然后在该范围内使用细粒度进一步检索。

四、总结

基于基本准则和其它考量因素,较好的办法是"调试",通过调整切割文本粒度,验证问题得出答案的准确性,匹配适合你提供的知识域的切割粒度,即不同的知识域应该给予相匹配的文本切割粒度。

相关推荐
敲代码不忘补水1 小时前
生成式GPT商品推荐:精准满足用户需求
开发语言·python·gpt·产品运营·产品经理
技术仔QAQ2 小时前
【tokenization分词】WordPiece, Byte-Pair Encoding(BPE), Byte-level BPE(BBPE)的原理和代码
人工智能·python·gpt·语言模型·自然语言处理·开源·nlp
OneFlow深度学习框架4 小时前
LLM长上下文RAG能力实测:GPT o1 vs Gemini
gpt·语言模型·大模型·openai·gemini·o1
Baihai_IDP6 小时前
「混合专家模型」可视化指南:A Visual Guide to MoE
人工智能·llm·aigc
春末的南方城市7 小时前
开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
人工智能·计算机视觉·aigc·音视频
KuaFuAI7 小时前
微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
人工智能·github·aigc·ai编程·codeflying·github spark·自然语言开发软件
扫地的小何尚14 小时前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
程序员X小鹿1 天前
免费,手机可用!一款AI数字人生成工具,200+数字人形象任选,3分钟定制专属数字人!(附教程)
aigc
智匠MindCraft Al1 天前
GPT o1 模型使用及API调用
人工智能·gpt·ai·语言模型·chatgpt
一者仁心1 天前
【AI技术】GPT-SoVits训练日志
人工智能·gpt