要使用 SentenceWindowNodeParser
,你需要按照以下步骤进行操作:
-
导入必要的模块和类:
SentenceWindowNodeParser
Document
- 其他可能需要的模块
-
初始化
SentenceWindowNodeParser
:- 提供必要的参数,如
sentence_splitter
、include_metadata
和include_prev_next_rel
。
- 提供必要的参数,如
-
创建文档对象:
- 使用
Document
类创建文档对象。
- 使用
-
使用
build_window_nodes_from_documents
方法:- 将文档对象传递给
build_window_nodes_from_documents
方法,以生成包含窗口信息的节点。
- 将文档对象传递给
以下是一个完整的示例代码:
from llama_index.core.node_parser.text.sentence_window import SentenceWindowNodeParser
from llama_index.core import Document
from typing import List, Callable, Sequence
# 假设 split_by_sentence_tokenizer 是一个可用的句子分割函数
def split_by_sentence_tokenizer(text: str) -> List[str]:
# 这里实现你的句子分割逻辑
pass
# 初始化 SentenceWindowNodeParser
sentence_splitter = split_by_sentence_tokenizer
include_metadata = True
include_prev_next_rel = True
node_parser = SentenceWindowNodeParser(
sentence_splitter=sentence_splitter,
include_metadata=include_metadata,
include_prev_next_rel=include_prev_next_rel
)
# 创建文档对象
documents = [
Document(text="这是第一个文档的内容。这是第一个文档的第二句话。"),
Document(text="这是第二个文档的内容。这是第二个文档的第二句话。")
]
# 使用 build_window_nodes_from_documents 方法
nodes = node_parser.build_window_nodes_from_documents(documents)
# 输出节点信息
for node in nodes:
print(f"Node Text: {node.text}")
print(f"Node Metadata: {node.metadata}")
print("-" * 40)
详细步骤说明:
-
导入必要的模块和类:
from llama_index.core.node_parser.text.sentence_window import SentenceWindowNodeParser from llama_index.core import Document from typing import List, Callable, Sequence
-
初始化
SentenceWindowNodeParser
:sentence_splitter = split_by_sentence_tokenizer include_metadata = True include_prev_next_rel = True node_parser = SentenceWindowNodeParser( sentence_splitter=sentence_splitter, include_metadata=include_metadata, include_prev_next_rel=include_prev_next_rel )
-
创建文档对象:
documents = [ Document(text="这是第一个文档的内容。这是第一个文档的第二句话。"), Document(text="这是第二个文档的内容。这是第二个文档的第二句话。") ]
-
使用
build_window_nodes_from_documents
方法:nodes = node_parser.build_window_nodes_from_documents(documents)
-
输出节点信息:
for node in nodes: print(f"Node Text: {node.text}") print(f"Node Metadata: {node.metadata}") print("-" * 40)
通过这些步骤,你可以使用 SentenceWindowNodeParser
将文档分割成包含窗口信息的节点,并输出节点的文本和元数据。