微信扫码
添加专属顾问
我要投稿
智能主体分块技术革新文档处理,让AI检索更精准高效,释放非结构化文本的潜力。 核心内容: 1. 智能主体分块的定义及其相比传统分块技术的优势 2. 大型语言模型与向量存储在智能分块中的关键作用 3. 基于Python的完整实现方案,整合Hugging Face等工具
人工智能应用面临的挑战之一是处理海量文本数据。传统分块技术常常会遗漏上下文关联,这降低了基于检索的 AI 模型的效用。而智能主体分块(Agentic Chunking) 作为一种更智能的文档分割方法,能够提升检索、总结和处理效率,可有效解决这一问题。
本文主要有以下内容:
通过阅读本文,你将了解智能主体分块如何通过将非结构化文本转化为可检索的知识,从而释放 AI 应用的潜力。
传统分块技术会使用任意分隔符(如换行符)、固定令牌数量限制或句子数量来自动分割文本。这往往会导致上下文丢失,关键概念要么被遗漏,要么分散在多个片段中。
智能主体分块则采用了更智能的方法:
这种方法确保每个分块都包含一个完整、独立的概念,从而提升了 AI 驱动的检索和总结效果。
智能主体分块不采用僵化的令牌数量限制,而是动态分割文本:
利用大型语言模型(如 DeepSeek)对每个分块进行优化:
下面将逐步介绍 Python 实现方案。该系统可实现以下功能:
from pdfminer.high_level import extract_textdef extract_text_from_pdf(pdf_path: str) -> str:"""从pdf中抽取文本"""try:return extract_text(pdf_path)except Exception as e:print(f"提取错误 {pdf_path}: {e}")return ""
import redef clean_text(text: str) -> str:"""移除不需要的字符"""text = re.sub(r'[^A-Za-z0-9\s.,;:()\-]', '', text)return re.sub(r'\s+', ' ', text).strip()
class AgenticChunker:def __init__(self, llm):self.llm = llmdef chunk_document(self, text: str, target_chars=2000, overlap_chars=200):"""将文本分割成重叠的块,并为每个块提供摘要。"""segments = text.split("\n\n")full_text = " ".join(segments)chunks, start = [], 0while start < len(full_text):end = start + target_charschunk = full_text[start:end]chunks.append(chunk)start = max(0, start + target_chars - overlap_chars)return [{"text": chunk, "summary": self._get_summary(chunk)} for chunk in chunks]def _get_summary(self, text: str):"""利用llm生成摘要"""return self.llm.generate_summary(text)
from langchain_openai import ChatOpenAIllm = ChatOpenAI(model_name='deepseek', temperature=0.2)def generate_summary(text):"""摘要"""prompt = f"请用一句话概括这段文本:\n\n{text}"return llm.predict(prompt)
from transformers import AutoTokenizer, AutoModelimport torchtokenizer = AutoTokenizer.from_pretrained("dwzhu/e5-base-4k")model = AutoModel.from_pretrained("dwzhu/e5-base-4k")def get_embedding(text: str):inputs = tokenizer(text, return_tensors='pt', truncation=True, max_length=512)with torch.no_grad():outputs = model(**inputs)return outputs.last_hidden_state.mean(dim=1).squeeze().numpy().tolist()
from pinecone import Pineconepinecone_api_key = "您的PINECONE API密钥"pc = Pinecone(api_key=pinecone_api_key)index = pc.Index("agentic-chunks")def upsert_to_pinecone(chunk_id, text, summary, embedding):vector = {"id": chunk_id,"values": embedding,"metadata": {"text": text, "summary": summary}}index.upsert(vectors=[vector])
目前,这项技术已被应用于多种高级 AI 应用中,例如:
智能主体分块将非结构化文本转化为可利用的知识。与简单的基于令牌的分割方法相比,这种方法具有以下优势:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-30
Cursor 2.0的一些有趣的新特性
2025-10-30
Anthropic 发布最新研究:LLM 展现初步自省迹象
2025-10-30
让Agent系统更聪明之前,先让它能被信任
2025-10-30
Rag不行?谷歌DeepMind同款,文档阅读新助手:ReadAgent
2025-10-29
4大阶段,10个步骤,助你高效构建企业级智能体(Agent)
2025-10-29
DocReward:让智能体“写得更专业”的文档奖励模型
2025-10-29
沃尔沃RAG实战:企业级知识库,早就该放弃小分块策略
2025-10-29
大模型的Funcation Calling是什么?
2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-10-02
2025-09-08
2025-09-17
2025-08-19
2025-09-29
2025-08-20
2025-10-29
2025-10-29
2025-10-28
2025-10-28
2025-10-27
2025-10-26
2025-10-25
2025-10-23