1. 什么是LangChain中的上下文结构化
在LangChain框架中,上下文结构化(Context Structuring)是一个关键概念,它解决了如何将检索到的文档信息有效地组织并传递给大语言模型(LLM)的问题。简单来说,就是把从向量数据库或其他来源检索到的Document对象,按照特定格式进行规范化处理,而不是简单地将所有内容拼接成一长串无结构的文本。
核心思想:不仅要给模型提供正确的信息,还要以正确的格式提供这些信息。
这种结构化处理之所以重要,是因为大语言模型对输入信息的组织方式非常敏感。杂乱无章的文本输入会导致模型难以准确理解内容之间的关系和边界,进而影响回答质量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. LangChain上下文结构化的核心组件
2.1 Document对象的结构
在LangChain中,每个检索结果都被封装为一个Document对象,包含两个主要部分:
python复制class Document:
page_content: str # 文档的主要内容文本
metadata: dict # 相关的元数据,如来源、标题、页码等
这种设计本身就体现了结构化的思想 - 将内容与描述内容的元数据分离但关联存储。
2.2 格式化过程详解
上下文结构化的完整流程通常包括以下步骤:
- 检索阶段:从向量数据库或其他来源获取一组相关Document对象
- 单文档格式化:使用
document_prompt模板对每个Document进行格式化 - 多文档合并:使用
document_separator将格式化后的文档连接起来 - 上下文注入:将合并后的内容作为
context变量注入主prompt
python复制# 示例:手工实现结构化上下文
formatted_docs = []
for i, doc in enumerate(retrieved_docs):
formatted = f"【参考资料{i+1}】内容:{doc.page_content}\n元数据:{doc.metadata}"
formatted_docs.append(formatted)
context = "\n\n".join(form
