首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI 大模型企业应用实战(12)-langchain文档转换实战

AI 大模型企业应用实战(12)-langchain文档转换实战

作者头像
JavaEdge
发布2025-06-01 09:26:31
发布2025-06-01 09:26:31
4600
举报
文章被收录于专栏:JavaEdgeJavaEdge

1 文档切割器和按字符分割

1.1 原理
  1. 将文档分成小的、有意义的块(句子).
  2. 将小的块组合成为一个更大的块,直到达到一定的大小.
  3. 一旦达到一定的大小,接着开始创建与下一个块重叠的部分.
1.2 示例
第一个文档分割
代码语言:javascript
复制
from langchain.text_splitter import RecursiveCharacterTextSplitter

#加载要切割的文档
with open("test.txt") as f:
    zuizhonghuanxiang = f.read()

#初始化切割器
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=50,#切分的文本块大小,一般通过长度函数计算
    chunk_overlap=20,#切分的文本块重叠大小,一般通过长度函数计算
    length_function=len,#长度函数,也可以传递tokenize函数
    add_start_index=True,#是否添加起始索引
)

text = text_splitter.create_documents([zuizhonghuanxiang])
text[0]
text[1]
按字符切割
代码语言:javascript
复制
from langchain.text_splitter import CharacterTextSplitter

#加载要切分的文档
with open("test.txt") as f:
    zuizhonghuanxiang = f.read()

#初始化切分器
text_splitter = CharacterTextSplitter(
    separator="。",#切割的标志字符,默认是\n\n
    chunk_size=50,#切分的文本块大小,一般通过长度函数计算
    chunk_overlap=20,#切分的文本块重叠大小,一般通过长度函数计算
    length_function=len,#长度函数,也可以传递tokenize函数
    add_start_index=True,#是否添加起始索引
    is_separator_regex=False,#是否是正则表达式
)
text = text_splitter.create_documents([zuizhonghuanxiang])
print(text[0])

2 代码文档分割器

代码语言:javascript
复制
from langchain.text_splitter import (
    RecursiveCharacterTextSplitter,
    Language,
)

#支持解析的编程语言
#[e.value for e in Language]

#要切割的代码文档
PYTHON_CODE = """
def hello_world():
    print("Hello, World!")
#调用函数
hello_world()
"""
py_spliter = RecursiveCharacterTextSplitter.from_language(
    language=Language.PYTHON,
    chunk_size=50,
    chunk_overlap=10,
)
python_docs = py_spliter.create_documents([PYTHON_CODE])
python_docs

3 按token分割文档

代码语言:javascript
复制
from langchain.text_splitter import CharacterTextSplitter

#要切割的文档
with open("test.txt") as f:
    zuizhonghuanxiang = f.read()

#初始化切分器
text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=4000,#切分的文本块大小,一般通过长度函数计算
    chunk_overlap=30,#切分的文本块重叠大小,一般通过长度函数计算
)

text = text_splitter.create_documents([zuizhonghuanxiang])
print(text[0])

4 文档总结、精炼、翻译

先装包:

代码语言:javascript
复制
! pip install doctran==0.0.14

先加载文档:

代码语言:javascript
复制
with open("letter.txt") as f:
    content = f.read()
代码语言:javascript
复制
from dotenv import load_dotenv
import os
load_dotenv("openai.env")
OPENAI_API_KEY = os.environ.get("OPEN_API_KEY")
OPENAI_API_BASE = os.environ.get("OPENAI_API_BASE")
OPENAI_MODEL = "gpt-3.5-turbo-16k"
OPENAI_TOKEN_LIMIT = 8000

from doctran import Doctran
doctrans = Doctran(
    openai_api_key=OPENAI_API_KEY,
    openai_model=OPENAI_MODEL,
    openai_token_limit=OPENAI_TOKEN_LIMIT,
)
documents = doctrans.parse(content=content)
4.1 总结
代码语言:javascript
复制
summary = documents.summarize(token_limit=100).execute()
print(summary.transformed_content)
4.2 翻译
代码语言:javascript
复制
translation = documents.translate(language="chinese").execute()
print(translation.transformed_content)
4.3 精炼

删除除了某个主题或关键词之外的内容,仅保留与主题相关的内容

代码语言:javascript
复制
refined = documents.refine(topics=["marketing","Development"]).execute()
print(refined.transformed_content)

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。 各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。 负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM应用开发 目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网 本文由博客一文多发平台 OpenWrite 发布!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档切割器和按字符分割
    • 1.1 原理
    • 1.2 示例
      • 第一个文档分割
      • 按字符切割
  • 2 代码文档分割器
  • 3 按token分割文档
  • 4 文档总结、精炼、翻译
    • 4.1 总结
    • 4.2 翻译
    • 4.3 精炼
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档