成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RAG文本切分LV3:輕松定制Markdown切分

人工智能
分塊通常旨在將具有共同上下文的文本放在一起。考慮到這一點,我們可能希望特別尊重文檔本身的結構。

基本概念和環境

分塊通常旨在將具有共同上下文的文本放在一起。考慮到這一點,我們可能希望特別尊重文檔本身的結構。例如,markdown 文件按標題組織。在特定標題組中創建塊是一種直觀的想法。為了解決這一挑戰,我們可以使用MarkdownHeaderTextSplitter。這將按指定的一組標題拆分 markdown 文件。

本文用到的安裝包如下:

pip install langchain-text-splitters

切分實現

我們可以指定要拆分的標題headers_to_split_on,切分之后內容按標題分組 :
markdown_document = "# Foo\n\n    ## Bar\n\nHi this is Jim\n\nHi this is Joe\n\n ### Boo \n\n Hi this is Lance \n\n ## Baz\n\n Hi this is Molly"


headers_to_split_on = [
    ("#", "Header 1"),
    ("##", "Header 2"),
    ("###", "Header 3"),
]


markdown_splitter = MarkdownHeaderTextSplitter(
  headers_to_split_on)
md_header_splits = markdown_splitter.split_text(
  markdown_document)
print(md_header_splits)

結果如下:

[Document(page_content='Hi this is Jim  \nHi this is Joe', metadata={'Header 1': 'Foo', 'Header 2': 'Bar'}),
 Document(page_content='Hi this is Lance', metadata={'Header 1': 'Foo', 'Header 2': 'Bar', 'Header 3': 'Boo'}),
 Document(page_content='Hi this is Molly', metadata={'Header 1': 'Foo', 'Header 2': 'Baz'})]

默認情況下,MarkdownHeaderTextSplitter從輸出塊的內容中剝離被分割的標頭。可以通過設置strip_headers = False來禁用此功能。

markdown_splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on, 
    strip_headers=False)
md_header_splits = markdown_splitter.split_text(
  markdown_document)
print(md_header_splits)

可以看到,標題添加到內容中了。

[Document(page_content='# Foo  \n## Bar  \nHi this is Jim  \nHi this is Joe', metadata={'Header 1': 'Foo', 'Header 2': 'Bar'}),
 Document(page_content='### Boo  \nHi this is Lance', metadata={'Header 1': 'Foo', 'Header 2': 'Bar', 'Header 3': 'Boo'}),
 Document(page_content='## Baz  \nHi this is Molly', metadata={'Header 1': 'Foo', 'Header 2': 'Baz'})]

如何將 Markdown 行返回為單獨的文檔

默認情況下,MarkdownHeaderTextSplitter根據headers_to_split_on中指定的標題聚合行。我們可以通過指定return_each_line來禁用此功能,使得一行就是一條內容:

markdown_splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on,
    return_each_line=True,
)
md_header_splits = markdown_splitter.split_text(markdown_document)
print(md_header_splits)
[Document(page_content='Hi this is Jim', metadata={'Header 1': 'Foo', 'Header 2': 'Bar'}),
 Document(page_content='Hi this is Joe', metadata={'Header 1': 'Foo', 'Header 2': 'Bar'}),
 Document(page_content='Hi this is Lance', metadata={'Header 1': 'Foo', 'Header 2': 'Bar', 'Header 3': 'Boo'}),
 Document(page_content='Hi this is Molly', metadata={'Header 1': 'Foo', 'Header 2': 'Baz'})]

如何限制塊大小:

然后,我們可以在每個 markdown 組中應用任何我們想要的文本分割器,例如RecursiveCharacterTextSplitter,它允許進一步控制塊大小。

markdown_document = "# Intro \n\n    ## History \n\n Markdown[9] is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004 as a markup language that is appealing to human readers in its source code form.[9] \n\n Markdown is widely used in blogging, instant messaging, online forums, collaborative software, documentation pages, and readme files. \n\n ## Rise and divergence \n\n As Markdown popularity grew rapidly, many Markdown implementations appeared, driven mostly by the need for \n\n additional features such as tables, footnotes, definition lists,[note 1] and Markdown inside HTML blocks. \n\n #### Standardization \n\n From 2012, a group of people, including Jeff Atwood and John MacFarlane, launched what Atwood characterised as a standardisation effort. \n\n ## Implementations \n\n Implementations of Markdown are available for over a dozen programming languages."


headers_to_split_on = [
    ("#", "Header 1"),
    ("##", "Header 2"),
]


# MD splits
markdown_splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on=headers_to_split_on, strip_headers=False
)
md_header_splits = markdown_splitter.split_text(markdown_document)


# Char-level splits
from langchain_text_splitters import RecursiveCharacterTextSplitter


chunk_size = 250
chunk_overlap = 30
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=chunk_size, chunk_overlap=chunk_overlap
)


# Split
splits = text_splitter.split_documents(md_header_splits)
splits
責任編輯:武曉燕 來源: 哎呀AIYA
相關推薦

2025-06-10 04:30:00

2025-06-24 09:51:10

2022-01-07 14:00:35

分庫分表業務量

2019-11-25 10:12:59

Python技巧工具

2011-08-18 16:03:48

數據切分MySQL

2021-03-17 16:15:55

數據MySQL 架構

2017-06-19 16:45:41

數據庫水平切分用戶中心

2017-07-17 14:45:43

數據庫DB分庫切分策略

2024-04-11 13:51:47

markdown前端

2023-10-10 14:03:47

swap排序解法

2017-08-28 16:40:07

Region切分觸發策略

2017-12-08 10:42:49

HBase切分細節

2020-10-14 11:37:07

MAXHUB

2024-07-09 11:48:47

2016-01-25 14:38:49

金蝶企業定制

2017-08-11 13:55:13

數據庫水平切分架構

2017-07-11 16:44:04

數據庫水平切分架構

2011-08-11 18:54:01

數據庫分頁查詢

2022-08-21 17:35:31

原子多線程

2025-02-11 08:50:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久亚洲精品 | 久久99精品久久久久久青青日本 | 亚洲欧美一区二区三区视频 | 欧美久久久久 | 成人网av| 一级黄色毛片a | 午夜网| 欧美日韩亚洲一区 | 91超碰在线观看 | 国产一级一片免费播放 | 3级毛片 | 日本午夜网 | 成人不卡视频 | 国产激情视频网站 | 91精品久久久久久久久 | 国产精品a久久久久 | 九九亚洲 | 亚洲一区二区三区高清 | 亚洲视频一区二区三区 | 免费激情网站 | 欧美日韩高清在线一区 | 秋霞在线一区 | 国产伊人久久久 | 日韩在线三级 | 国产一级淫片a直接免费看 免费a网站 | 91精品国产一区二区三区蜜臀 | 欧美一区二区免费 | 午夜精品一区二区三区在线观看 | 国产精品免费小视频 | 精品欧美一区二区三区久久久小说 | 久草在线在线精品观看 | 国产精品中文字幕在线观看 | 超碰伊人 | 成人亚洲网 | 亚洲免费视频在线观看 | 国产精品久久久久久久三级 | 欧美精品一区二区三区蜜桃视频 | 国产精品久久久久一区二区三区 | 亚洲欧洲一区 | 不卡视频一区二区三区 | 久草中文在线观看 |