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
    }
)
相关推荐
AI小百科3 天前
Embedding 是什么?为什么它是 AI 的“翻译官“
人工智能·embedding
npupengsir11 天前
LUXICAL文档embedding模型介绍
embedding
前端.火鸡15 天前
Embedding:机器是怎么“理解“语义的
人工智能·embedding
旋生万物16 天前
全息结构入门:Embedding、向量库、知识图谱的统一视角
人工智能·大模型·aigc·软件工程·知识图谱·embedding·后端开发
HySpark19 天前
从5秒延迟到轻量级推理:eGeMAPS与Embedding原型库的情感识别实践
embedding·语音情感识别·egemaps·opensmile
浪子明X20 天前
LangChain 接入 Embedding 之前:先画清文本、向量与检索器的契约
人工智能·langchain·embedding
智码看视界21 天前
向量数据库选型实战:Milvus vs Chroma vs Qdrant 谁更适合 RAG
embedding·milvus·向量数据库·chroma·rag·语义检索·选型对比
坊钰22 天前
【LangChain框架入门级】10. 文本向量与向量数据库(Embedding / Redis / Pinecone / MMR)
数据库·python·langchain·embedding