langchain 四种文档预制链详解
在 LangChain 中,文档预制链(Document Preprocessing Chains) 是专门用于处理文档数据的链,它们能够将文档转换为适合语言模型处理的格式,或从文档中提取关键信息。以下是 LangChain 中四种常见的文档预制链的详细解析。
1.TextSplitterChain
TextSplitterChain 用于将长文档分割成较小的片段,以便更好地处理和分析。
1.1 功能
- 将长文档分割成固定大小的块。
- 支持按字符、句子或段落分割。
1.2 使用场景
- 处理超出语言模型输入长度限制的文档。
- 将文档分割后用于检索或分析。
1.3 示例代码
python复制代码from langchain.text_splitter import CharacterTextSplitter
from langchain.chains import TextSplitterChain
# 初始化文本分割器
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
# 初始化 TextSplitterChain
splitter_chain = TextSplitterChain(text_splitter=text_splitter)
# 分割文档
document = "This is a long document that needs to be split into smaller chunks..."
chunks = splitter_chain.run(document)
print(chunks)
2.DocumentLoaderChain
DocumentLoaderChain 用于从不同来源(如文件、数据库、API)加载文档。
2.1 功能
- 支持多种文档格式(如 PDF、Word、Markdown)。
- 从本地文件或远程资源加载文档。
2.2 使用场景
- 从文件系统或网络中加载文档数据。
- 将文档加载后用于后续处理。
2.3 示例代码
python复制代码from langchain.document_loaders import PyPDFLoader
from langchain.chains import DocumentLoaderChain
# 初始化文档加载器
loader = PyPDFLoader("example.pdf")
# 初始化 DocumentLoaderChain
loader_chain = DocumentLoaderChain(loader=loader)
# 加载文档
documents = loader_chain.run()
print(documents)
3.EmbeddingChain
EmbeddingChain 用于将文档转换为向量表示,以便进行相似度计算或检索。
3.1 功能
- 使用嵌入模型(如 OpenAI Embeddings)将文本转换为向量。
- 支持批量处理文档。
3.2 使用场景
- 将文档向量化后存储到向量数据库中。
- 用于语义搜索或文档聚类。
3.3 示例代码
python复制代码from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import EmbeddingChain
# 初始化嵌入模型
embeddings = OpenAIEmbeddings(api_key="your_openai_api_key")
# 初始化 EmbeddingChain
embedding_chain = EmbeddingChain(embeddings=embeddings)
# 将文档转换为向量
document = "This is a sample document."
vector = embedding_chain.run(document)
print(vector)
4.SummarizationChain
SummarizationChain 用于从文档中提取摘要,生成简洁的总结。
4.1 功能
- 使用语言模型生成文档摘要。
- 支持自定义摘要长度和风格。
4.2 使用场景
- 从长文档中提取关键信息。
- 生成文档的简短概述。
4.3 示例代码
python复制代码from langchain.chains import SummarizationChain
from langchain import OpenAI
# 初始化语言模型
llm = OpenAI(api_key="your_openai_api_key")
# 初始化 SummarizationChain
summarization_chain = SummarizationChain(llm=llm)
# 生成摘要
document = "This is a long document with a lot of details..."
summary = summarization_chain.run(document)
print(summary)
5. 总结
LangChain 中的四种文档预制链(TextSplitterChain、DocumentLoaderChain、EmbeddingChain、SummarizationChain)分别用于处理文档的不同阶段:
- TextSplitterChain:将长文档分割成较小的片段。
- DocumentLoaderChain:从不同来源加载文档。
- EmbeddingChain:将文档转换为向量表示。
- SummarizationChain:从文档中提取摘要。
通过灵活组合这些链,可以构建出功能强大的文档处理流程,适用于各种场景,如文档分析、语义搜索、知识库构建等。