You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LlamaIndex中为文档的每个Chunk添加源文档标题

给LlamaIndex的每个Chunk添加电影标题的实现方法

你可以通过以下几种方式实现给每个Chunk添加电影标题,让上下文呈现为{title}\n{relevant plot chunk}的格式:

方法1:自定义分割逻辑(推荐)

在文档分割阶段直接给每个Chunk前缀加上电影标题,确保后续检索时上下文自带标题信息:

from llama_index.core.node_parser import SimpleNodeParser
from llama_index.core.schema import TextNode

# 替换为你的电影标题和剧情文本
movie_title = "星际穿越"
plot_text = "维基百科上的电影剧情全文..."

def generate_nodes_with_title(text, title, chunk_size=1024):
    # 使用默认分割器拆分文本
    parser = SimpleNodeParser.from_defaults(chunk_size=chunk_size)
    base_nodes = parser.get_nodes_from_text(text)
    
    # 为每个节点添加标题前缀
    nodes_with_title = []
    for node in base_nodes:
        formatted_text = f"{title}\n{node.text}"
        new_node = TextNode(text=formatted_text, metadata=node.metadata)
        nodes_with_title.append(new_node)
    
    return nodes_with_title

# 生成带标题的Chunk节点
title_nodes = generate_nodes_with_title(plot_text, movie_title)

方法2:批量修改已分割的节点

如果已经完成了文档分割,可直接遍历节点列表,修改文本内容添加标题:

# 假设nodes是已分割好的原始节点列表
for node in nodes:
    # 从元数据或外部变量获取电影标题
    movie_title = node.metadata.get("movie_title", "未知电影")
    node.text = f"{movie_title}\n{node.text}"

方法3:通过提示模板组合标题与上下文

若不想修改Chunk本身,可在查询阶段通过自定义提示模板,将元数据中的标题与Chunk文本合并:

from llama_index.core import PromptTemplate

# 自定义提示模板,整合标题和上下文内容
qa_template = PromptTemplate(
    "参考以下电影内容回答问题:\n{title}\n{context_str}\n\n用户问题:{query_str}\n回答:"
)

# 将模板传入查询引擎(需结合你的聊天机器人构建逻辑调整)
query_engine = index.as_query_engine(text_qa_template=qa_template)

内容的提问来源于stack exchange,提问作者Nick Zorander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:52:11