LlamaIndex中的文档和节点:核心抽象
在LlamaIndex中,文档(Document)和节点(Node)是两个核心抽象。理解它们的概念和使用模式对于有效地利用LlamaIndex至关重要。
概念
文档(Document)
文档是一个通用容器,可以包含任何数据源,例如PDF文件、API输出或从数据库中检索的数据。文档可以手动构造,也可以通过数据加载器自动创建。默认情况下,文档存储文本以及其他一些属性,例如:
- metadata:一个字典,包含可以附加到文本的注释。
- relationships:一个字典,包含与其他文档/节点的关系。
注意:我们正在积极改进LlamaIndex的多模态能力,目前处于beta阶段,支持文档存储图像。
节点(Node)
节点代表源文档的一个“块”,无论是文本块、图像还是其他形式。与文档类似,节点也包含元数据和与其他节点的关系信息。
节点在LlamaIndex中是一等公民。你可以选择直接定义节点及其所有属性,也可以通过我们的NodeParser类将源文档“解析”为节点。默认情况下,从文档派生的每个节点将继承文档中的相同元数据(例如,文档中的“file_name”字段会传播到每个节点)。
使用模式
以下是一些简单的代码片段,帮助你开始使用文档和节点。
文档(Document)
from llama_index.core import Document, VectorStoreIndex
text_list = [text1, text2, ...]
documents = [Document(text=t) for t in text_list]
# 构建索引
index = VectorStoreIndex.from_documents(documents)
节点(Node)
from llama_index.core.node_parser import SentenceSplitter
# 加载文档
...
# 解析节点
parser = SentenceSplitter()
nodes = parser.get_nodes_from_documents(documents)
# 构建索引
index = VectorStoreIndex(nodes)
通过这些简单的示例,你可以开始在LlamaIndex中使用文档和节点。理解这些核心抽象将帮助你更有效地管理和查询数据。