【自然语言处理与大模型】LlamaIndex快速入门②
给大家介绍LlamaIndex的数据加载、数据连接和文本分割。
LlamaIndex使用阿里百炼的大模型。给大家介绍LlamaIndex的数据加载、数据连接和文本分割。
(1)加载本地数据
SimpleDirectoryReader 是一个简单的本地文件加载器。它会遍历指定目录,并根据文件扩展名自动加载文件。支持的文件类型:.csv.docx.epub.hwp.ipynb.jpeg.jpg.mbox.md.mp3.mp4.pdf.png.ppt.pptm.pptx
from llama_index.core import SimpleDirectoryReader
reader = SimpleDirectoryReader(
input_dir="./data", # 目标目录
recursive=False, # 是否递归遍历子目录
required_exts=[".pdf"] # (可选)只读取指定后缀的文件
)
documents = reader.load_data()
print(documents[0].text)
(2)数据连接器
Data Connectors 用于处理更丰富的数据类型,并将其读取为 Document 的形式。
# pip install llama-index-readers-web
from llama_index.readers.web import SimpleWebPageReader
documents = SimpleWebPageReader(html_to_text=True).load_data(
["https://baidu.com"]
)
print(documents[0].text)
更多关于 Data Connectors 的用法可以参考官方说明。还可以使用第三方的数据加载器。
(3)文本分割
在 LlamaIndex 中,为了提高检索效率和准确性,通常会将 Document 切分为更小的单元,称为 Node。每个 Node 代表一个文本块(chunk),是索引和检索的基本单位。
from llama_index.core import Document
from llama_index.core.node_parser import TokenTextSplitter
node_parser = TokenTextSplitter(
chunk_size=512, # 每个 chunk 的最大长度
chunk_overlap=200 # chunk 之间重叠长度
)
nodes = node_parser.get_nodes_from_documents(
documents, show_progress=False
)
LlamaIndex 提供了丰富的 TextSplitter,例如:
-
SentenceSplitter:在切分指定长度的 chunk 同时尽量保证句子边界不被切断(用的最多);
-
CodeSplitter:根据 AST(编译器的抽象句法树)切分代码,保证代码功能片段完整;
-
SemanticSplitterNodeParser:根据语义相关性对将文本切分为片段。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)