[处理长文本提取的终极指南:克服语言模型上下文窗口限制]

# 处理长文本提取的终极指南:克服语言模型上下文窗口限制

在处理诸如PDF等文件时,你常常会遇到超过语言模型上下文窗口长度的文本。为了能够有效处理这些长文本,我们可以使用几种不同的策略:

1. **更换LLM**:选择支持更大上下文窗口的不同语言模型。
2. **暴力分块**:将文档拆分成小块,然后从每个块中提取内容。
3. **RAG(Retrieval-Augmented Generation)**:将文档分块、为这些块建立索引,并仅从看起来“相关”的部分提取内容。

这些策略各有其优缺点,选择哪种策略取决于你所设计的应用程序!本文将重点介绍如何实现第二和第三种策略。

## 设置

首先,我们需要一些示例数据!我们将从维基百科上下载一篇关于汽车的文章,并将其加载为LangChain文档。

```python
import re
import requests
from langchain_community.document_loaders import BSHTMLLoader

# 下载内容
response = requests.get("https://en.wikipedia.org/wiki/Car")
# 写入文件
with open("car.html", "w", encoding="utf-8") as f:
    f.write(response.text)
# 使用HTML解析器加载
loader = BSHTMLLoader("car.html")
document = loader.load()[0]
# 清理文本,替换连续的换行符
document.page_content = re.sub("\n\n+", "\n", document.page_content)

print(len(document.page_content))

定义提取信息的结构

接下来,我们将使用Pydantic来定义我们希望提取的信息结构。在这个例子中,我们将提取"关键发展"的列表,包括年份和描述。

from typing import List
from langchain_core.pydantic_v1 import BaseModel, Field

class KeyDevelopment(BaseModel):
    """关于汽车历史发展的信息。"""
    year: int = Field(..</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值