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

使用Llama Index时,response_mode设为NO_TEXT为何返回None?

Llama Index 查询未返回带评分源节点JSON的解决方法
  • 问题原因:ResponseMode.NO_TEXT模式仅返回检索到的源节点集合,不会自动封装成包含查询响应的JSON结构,且默认结果对象并非JSON格式。

  • 修正步骤:

    1. 若需要生成查询响应文本,将response_mode改为ResponseMode.DEFAULT(或COMPACT等其他生成文本的模式);若仅需源节点数据,可保留NO_TEXT模式。
    2. 从查询结果中提取带评分的源节点,手动构造目标JSON结构。
  • 示例代码:

    from llama_index.core.response_synthesizers import ResponseMode
    
    # 初始化查询引擎(根据需求选择response_mode)
    engine = RetrieverQueryEngine.from_args(
        retriever, 
        service_context,
        # 如需生成回答文本用DEFAULT;仅需源节点用NO_TEXT
        response_mode=ResponseMode.DEFAULT  
    )
    res = engine.query('about price comment')
    
    # 构造包含响应和带评分源节点的JSON对象
    result_json = {
        "query_response": res.response,  # 若用NO_TEXT,此处为空字符串
        "source_nodes": [
            {
                "node_text": node.node.get_content(),
                "score": node.score,
                "metadata": node.node.metadata
            } for node in res.source_nodes
        ]
    }
    
    # 输出或使用目标JSON对象
    print(result_json)
    
  • 关键说明:

    • res.source_nodes中的每个元素都是NodeWithScore对象,直接包含score属性和对应的节点数据。
    • 若坚持使用NO_TEXT模式,res.response会是空字符串,此时JSON中可仅保留source_nodes部分。

内容的提问来源于stack exchange,提问作者bai you

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:02:01