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:根据语义相关性对将文本切分为片段。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐