rag ollama + qwen3+ embedding + chroma_db 回答content为空

resp "message""content" content 响应内容为什么为空

核心原因

现象:done_reason='length',message.content="",message.thinking="一大段思考文字"

Ollama 新版 Qwen3 的特殊机制:

模型优先把推理内容写到 thinking 字段 ,消耗你的 num_predict 输出 token;

当 token 预算(1024)全部被 thinking 吃光,还没来得及生成最终答案写入 content ,推理就被 Ollama 强制终止,于是 content 是空字符串。

⚠️ 重点:Prompt 里写的「禁止输出思考」,只能约束模型不要把思考写进 content ,无法阻止新版 Qwen3 在 Ollama 底层单独生成

方案 1:调高 num_predict(最简单)

把 num_predict 从 1024 → 2048 / 3072,给模型留出足够 token 写完思考 + 答案

python 复制代码
resp = ollama.chat(
    model=GEN_MODEL,
    messages=[{"role": "user", "content": prompt}],
    options={
        "temperature": 0.2,
        "num_predict": 3072,  # 改大!
        "num_ctx": 8192
    }
)
方案 2:优化 Prompt,强制模型减少思考,直接输出答案

在你的 PROMPT_TEMPLATE 顶部加强约束,减少模型内部思考消耗 token:

python 复制代码
必须遵守:
1. 不要输出任何思考推理过程,不要写分析步骤,不要写草稿!
2. 直接输出最终答案,不要多余文字。
3. 只能根据提供的资料回答。

这样模型不会占用大量 token 写思考,1024 就够用。

额外重要知识点(Qwen3 + Ollama 特殊结构)

Qwen3 在 Ollama 新版支持分离输出:

  • message.thinking:模型内部思考内容(就是看到那一大段推理文字)
  • message.content:最终回答内容
    之前代码取的是 resp["message"]["content"],思考文本不在这个字段里!

当 done_reason='length',token 耗尽,模型写完 thinking,还没生成 content,content 就是空。

验证,可以打印:

python 复制代码
print("思考内容:", resp["message"].thinking)
print("最终回答:", resp["message"].content)
总结

❌ 根因:num_predict=1024 不够,Qwen3 消耗大量 token 写思考,预算耗尽,被截断,还没输出正式答案。

✅ 解决:调高 num_predict,或者改 prompt 禁止模型写思考过程。

上述无效----关闭thingking
python 复制代码
# ✅ 重点:think=False 放在顶层!
resp = ollama.chat(
    model=GEN_MODEL,
    messages=[{"role": "user", "content": prompt}],
    think=False,
    options={
        "temperature": 0.2,
        "num_predict": 1024,
        "num_ctx": 8192
    }
)
相关推荐
智码看视界21 小时前
向量数据库选型实战:Milvus vs Chroma vs Qdrant 谁更适合 RAG
embedding·milvus·向量数据库·chroma·rag·语义检索·选型对比
坊钰2 天前
【LangChain框架入门级】10. 文本向量与向量数据库(Embedding / Redis / Pinecone / MMR)
数据库·python·langchain·embedding
吱屋猪_4 天前
一个RAG系统是怎样运行的:从文档分块到大模型回答
embedding·健康医疗·ai编程
XLYcmy5 天前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
jinyishu_6 天前
Embedding 向量嵌入:语义空间、相似度与模型选择
embedding
lie..7 天前
30天从零开始学AI应用开发(Day 16):Embedding 是什么?用人话讲明白“向量检索”
人工智能·算法·embedding
大连好光景8 天前
RAG中为什么要做Embedding?嵌入模型如何选?
embedding·ai-native
Light Gao8 天前
Encoder 与 Decoder 详解:从 Embedding 到 Seq2Seq 的完整数据流
java·开发语言·embedding
Light Gao9 天前
RNN 原理、架构与一次完整手算
人工智能·rnn·深度学习·神经网络·embedding