有些文档具有固有的结构,例如HTML、Markdown或JSON文件。在这种情况下,基于文档结构进行拆分往往是有益的,因为这种结构通常能自然地组合语义相关的文本。
有些文档具有固有的结构,例如HTML、Markdown或JSON文件。在这种情况下,基于文档结构进行拆分往往是有益的,因为这种结构通常能自然地组合语义相关的文本。
文本自然地被组织为段落、句子和单词等层级单元。我们可以利用这种固有结构来指导分割策略,从而创建既能保持自然语言流畅性、又能维持分块内语义连贯性、还能适应不同文本粒度的分块。
LangChain 的递归字符文本分割器(RecursiveCharacterTextSplitter)实现了这一理念。
大语言模型存在Token数量限制,不应超出该限制。因此,在分割文本成块时,需要计算好Token的数量。市面上存在多种tokenizer,计算文本token数量时,应使用与语言模型相匹配的tokenizer。
LangChain:文本切割器TextSplitter的split_documents()与split_text()
在 LangChain 库中,文本切割器基类TextSplitter 提供了split_documents() 和 split_text() 两个切割方法常用的文本分割方法。
TextSplitter的子类都继承的这两个方法。下面分别介绍它们的作用和区别。
在Langchain的数据增强模块,数据以 Document 对象和向量形式在各个包装器之间流转。向量形式的数据由向量数据库管理,而被转换为向量之前,数据以 Document 对象的形式存在。
在自然语言处理(NLP)和大语言模型(LLM)中,嵌入(Embedding) 是一个核心概念。它的本质是将文本(如单词、句子或文档)转换为数值形式的向量(一串数字),使得计算机能够理解和处理这些文本的语义信息。
在LangChain框架中,嵌入模型包装器(Embedding Model Wrappers) 是用于将文本转换为向量表示的标准化接口,支持多种底层模型和服务。
LangChain框架中的Loader组件是数据增强处理流程中的核心模块,负责将不同格式的数据源转换为统一的Document对象。这些文档对象包含文本内容(page_content)和元数据(metadata),为后续的文本处理、嵌入、问答等操作奠定基础。
LangChain 框架的数据增强模块主要基于**检索增强生成(RAG)**技术,通过整合外部知识库提升大语言模型(LLM)在专业领域、实时性要求和私有数据场景下的表现。
Agent的ReAct框架是一种结合**推理(Reasoning)与行动(Acting)**的AI智能体开发框架,旨在通过动态的思考与执行循环解决复杂任务。