链载Ai

标题: 智能体分块(Agentic Chunking):借助 AI 实现更智能的文档处理 [打印本页]

作者: 链载Ai    时间: 2 小时前
标题: 智能体分块(Agentic Chunking):借助 AI 实现更智能的文档处理

人工智能应用面临的挑战之一是处理海量文本数据。传统分块技术常常会遗漏上下文关联,这降低了基于检索的 AI 模型的效用。而智能主体分块(Agentic Chunking)作为一种更智能的文档分割方法,能够提升检索、总结和处理效率,可有效解决这一问题。


本文主要有以下内容:



通过阅读本文,你将了解智能主体分块如何通过将非结构化文本转化为可检索的知识,从而释放 AI 应用的潜力。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">一、什么是智能主体分块?

传统分块技术会使用任意分隔符(如换行符)、固定令牌数量限制或句子数量来自动分割文本。这往往会导致上下文丢失,关键概念要么被遗漏,要么分散在多个片段中。

智能主体分块则采用了更智能的方法:

这种方法确保每个分块都包含一个完整、独立的概念,从而提升了 AI 驱动的检索和总结效果。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">二、智能主体分块的工作原理

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">1. 文本提取与清洗

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">2. 智能文本分割

智能主体分块不采用僵化的令牌数量限制,而是动态分割文本:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">3. 借助 LLM 生成摘要与标题

利用大型语言模型(如 DeepSeek)对每个分块进行优化:

4. 嵌入处理与 Pinecone 存储

三、智能主体分块的核心优势

  1. 更精准的 AI 检索
    :AI 不再检索随机的文本片段,而是获取连贯、带摘要的完整章节
  2. 更优质的总结效果
    :AI 生成的摘要能保留关键信息,降低 “幻觉”(生成虚假信息)的风险
  3. 更快的搜索与检索速度
    :Pinecone 向量存储支持基于语义含义的即时查询,而非仅依赖关键词
  4. 更贴近人类的 AI 响应
    :应用于聊天机器人和检索增强生成(RAG)时,响应会更具上下文关联性和针对性

四、代码实现:智能主体分块的实际应用

下面将逐步介绍 Python 实现方案。该系统可实现以下功能:

1. 从 PDF 中提取文本

frompdfminer.high_levelimportextract_text
defextract_text_from_pdf(pdf_path:str) ->str: """从pdf中抽取文本""" try: returnextract_text(pdf_path) exceptExceptionase: print(f"提取错误{pdf_path}:{e}") return""

2. 文本清洗与预处理

importre
defclean_text(text:str) ->str: """移除不需要的字符""" text = re.sub(r'[^A-Za-z0-9\s.,;)\-]','', text) returnre.sub(r'\s+',' ', text).strip()

3. 带重叠的智能分块

classAgenticChunker: def__init__(self, llm):    self.llm = llm
defchunk_document(self, text:str, target_chars=2000, overlap_chars=200): """将文本分割成重叠的块,并为每个块提供摘要。""" segments = text.split("\n\n") full_text =" ".join(segments) chunks, start = [],0
whilestart <len(full_text): end = start + target_chars chunk = full_text[start:end] chunks.append(chunk) start =max(0, start + target_chars - overlap_chars)
return[{"text": chunk,"summary": self._get_summary(chunk)}forchunkinchunks]
def_get_summary(self, text:str): """利用llm生成摘要""" returnself.llm.generate_summary(text)


4. 借助 deepseek生成摘要与标题

fromlangchain_openaiimportChatOpenAI
llm = ChatOpenAI(model_name='deepseek', temperature=0.2)
defgenerate_summary(text): """摘要""" prompt =f"请用一句话概括这段文本:\n\n{text}" returnllm.predict(prompt)


5. 将分块转换为向量嵌入(使用 Hugging Face)

fromtransformersimportAutoTokenizer, AutoModelimporttorch
tokenizer = AutoTokenizer.from_pretrained("dwzhu/e5-base-4k")model = AutoModel.from_pretrained("dwzhu/e5-base-4k")
defget_embedding(text:str): inputs = tokenizer(text, return_tensors='pt', truncation=True, max_length=512) withtorch.no_grad(): outputs = model(**inputs) returnoutputs.last_hidden_state.mean(dim=1).squeeze().numpy().tolist()


6. 存储到 Pinecone 中以备检索

frompineconeimportPinecone
pinecone_api_key ="您的PINECONE API密钥"pc = Pinecone(api_key=pinecone_api_key)index = pc.Index("agentic-chunks")
defupsert_to_pinecone(chunk_id, text, summary, embedding): vector = { "id": chunk_id, "values": embedding, "metadata": {"text": text,"summary": summary} } index.upsert(vectors=[vector])

五、智能主体分块的潜在应用场景

目前,这项技术已被应用于多种高级 AI 应用中,例如:

六、总结

智能主体分块将非结构化文本转化为可利用的知识。与简单的基于令牌的分割方法相比,这种方法具有以下优势:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5