分類目錄:《大模型從入門到應(yīng)用》總目錄
LangChain系列文章:
- 基礎(chǔ)知識
- 快速入門
- 安裝與環(huán)境配置
- 鏈(Chains)、代理(Agent:)和記憶(Memory)
- 快速開發(fā)聊天模型
- 模型(Models)
- 基礎(chǔ)知識
- 大型語言模型(LLMs)
- 基礎(chǔ)知識
- LLM的異步API、自定義LLM包裝器、虛假LLM和人類輸入LLM(Human Input LLM)
- 緩存LLM的調(diào)用結(jié)果
- 加載與保存LLM類、流式傳輸LLM與Chat Model響應(yīng)和跟蹤tokens使用情況
- 聊天模型(Chat Models)
- 基礎(chǔ)知識
- 使用少量示例和響應(yīng)流式傳輸
- 文本嵌入模型
- Aleph Alpha、Amazon Bedrock、Azure OpenAI、Cohere等
- Embaas、Fake Embeddings、Google Vertex AI PaLM等
- 提示(Prompts)
- 基礎(chǔ)知識
- 提示模板
- 基礎(chǔ)知識
- 連接到特征存儲
- 創(chuàng)建自定義提示模板和含有Few-Shot示例的提示模板
- 部分填充的提示模板和提示合成
- 序列化提示信息
- 示例選擇器(Example Selectors)
- 輸出解析器(Output Parsers)
- 記憶(Memory)
- 基礎(chǔ)知識
- 記憶的類型
- 會話緩存記憶、會話緩存窗口記憶和實體記憶
- 對話知識圖譜記憶、對話摘要記憶和會話摘要緩沖記憶
- 對話令牌緩沖存儲器和基于向量存儲的記憶
- 將記憶添加到LangChain組件中
- 自定義對話記憶與自定義記憶類
- 聊天消息記錄
- 記憶的存儲與應(yīng)用
- 索引(Indexes)
- 基礎(chǔ)知識
- 文檔加載器(Document Loaders)
- 文本分割器(Text Splitters)
- 向量存儲器(Vectorstores)
- 檢索器(Retrievers)
- 鏈(Chains)
- 基礎(chǔ)知識
- 通用功能
- 自定義Chain和Chain的異步API
- LLMChain和RouterChain
- SequentialChain和TransformationChain
- 鏈的保存(序列化)與加載(反序列化)
- 鏈與索引
- 文檔分析和基于文檔的聊天
- 問答的基礎(chǔ)知識
- 圖問答(Graph QA)和帶來源的問答(Q&A with Sources)
- 檢索式問答
- 文本摘要(Summarization)、HyDE和向量數(shù)據(jù)庫的文本生成
- 代理(Agents)
- 基礎(chǔ)知識
- 代理類型
- 自定義代理(Custom Agent)
- 自定義MRKL代理
- 帶有ChatModel的LLM聊天自定義代理和自定義多操作代理(Custom MultiAction Agent)
- 工具
- 基礎(chǔ)知識
- 自定義工具(Custom Tools)
- 多輸入工具和工具輸入模式
- 人工確認(rèn)工具驗證和Tools作為OpenAI函數(shù)
- 工具包(Toolkit)
- 代理執(zhí)行器(Agent Executor)
- 結(jié)合使用Agent和VectorStore
- 使用Agents的異步API和創(chuàng)建ChatGPT克隆
- 處理解析錯誤、訪問中間步驟和限制最大迭代次數(shù)
- 為代理程序設(shè)置超時時間和限制最大迭代次數(shù)和為代理程序和其工具添加共享內(nèi)存
- 計劃與執(zhí)行
- 回調(diào)函數(shù)(Callbacks)
當(dāng)我們需要處理長文本時,有必要將文本分割成塊。雖然這聽起來很簡單,但這里存在很多潛在的復(fù)雜性。理想情況下,我們希望將語義相關(guān)的文本塊保持在一起,但什么是"語義相關(guān)"可能取決于文本的類型。本文就展示了幾種實現(xiàn)這一目標(biāo)的方法。
在高層次上,文本分割器的工作原理如下:
- 將文本分割成小的、語義有意義的塊(通常是句子)。
- 開始將這些小塊組合成較大的塊,直到達(dá)到一定的大小(由某個函數(shù)衡量)。
- 一旦達(dá)到該大小,將該塊作為自己的文本片段,然后開始創(chuàng)建一個具有一定重疊的新文本塊(以保持塊之間的上下文)。
這意味著有兩個不同的方向可以定制文本分割器:
- 文本如何被分割
- 塊的大小如何衡量
默認(rèn)推薦的文本分割器是RecursiveCharacterTextSplitter
。該文本分割器接受一個字符列表作為參數(shù)。它嘗試根據(jù)第一個字符進(jìn)行分塊,但如果有任何分塊過大,它將繼續(xù)嘗試下一個字符,依此類推。默認(rèn)情況下,它嘗試進(jìn)行分割的字符是\n\n
、\n
等。除了控制分割的字符之外,我們還可以控制其他一些內(nèi)容:
-
length_function
:如何計算分塊的長度。默認(rèn)只計算字符數(shù),但通常在這里傳遞一個標(biāo)記計數(shù)器。 -
chunk_size
:分塊的最大大?。ㄓ砷L度函數(shù)測量)。 -
chunk_overlap
:分塊之間的最大重疊量。保持一些重疊可以保持分塊之間的連續(xù)性(例如使用滑動窗口)。 -
add_start_index
:是否在元數(shù)據(jù)中包含每個分塊在原始文檔中的起始位置。
# This is a long document we can split up.
with open('../../state_of_the_union.txt') as f:
state_of_the_union = f.read()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
# Set a really small chunk size, just to show.
chunk_size = 100,
chunk_overlap = 20,
length_function = len,
add_start_index = True,
)
texts = text_splitter.create_documents([state_of_the_union])
print(texts[0])
print(texts[1])
輸出:
page_content='Madam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and' metadata={'start_index': 0} page_content='of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans.' metadata={'start_index': 82}
我們還可以使用文本分割器分割下列類型的文件:文章來源:http://www.zghlxwxcb.cn/news/detail-663421.html
- Character
- HTML
- Latex
- Markdown
- NLTK
- Python
- Recursive Character
- spaCy
- tiktoken(OpenAI)
參考文獻(xiàn):
[1] LangChain官方網(wǎng)站:https://www.langchain.com/
[2] LangChain ????? 中文網(wǎng),跟著LangChain一起學(xué)LLM/GPT開發(fā):https://www.langchain.com.cn/
[3] LangChain中文網(wǎng) - LangChain 是一個用于開發(fā)由語言模型驅(qū)動的應(yīng)用程序的框架:http://www.cnlangchain.com/文章來源地址http://www.zghlxwxcb.cn/news/detail-663421.html
到了這里,關(guān)于自然語言處理從入門到應(yīng)用——LangChain:索引(Indexes)-[文本分割器(Text Splitters)]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!