必须将检索段落清洗去重、按相关性排序并以完整段落为单位截断至1500–2800字符,再用三重分隔线包裹作为user消息前置上下文传给豆包,避免使用过长system提示词。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在火山引擎的检索增强问答(RAG)系统中,把从向量库或知识库检索出的段落准确、完整地传给豆包(Doubao)作为上下文生成答案,必须确保段落内容按语义完整性拼接、去重、截断,并严格适配豆包的输入格式要求。
获取并清洗检索返回的段落
调用火山引擎VESS或KnowledgeBase API后,原始响应中hits数组包含多个document对象,每个含content字段。先提取所有content,再逐条执行:去除首尾空白→替换连续换行符为单个\n→删掉纯空行和仅含“——”“***”等分隔符的行。
这一步不能跳过,否则豆包会因收到大量无意义空行或乱码分隔符而降低回答质量,甚至触发内容过滤。
按相关性排序并截断拼接
第一步:按score降序排列所有段落;
第二步:从最高分段落开始累加字符数,直到总长度≥1500且≤2800(豆包推荐上下文窗口上限);
第三步:在拼接末尾插入\n---\n作为段落分隔标记;
第四步:若最后一段被截断,舍弃该段,不保留半截句子。
【截断必须以完整段落为单位,不能切开一个自然段】 否则豆包会误解语义边界,把半句话当成独立指令处理。
构造符合豆包API要求的prompt结构
方法一:直接拼入system提示词
将清洗+截断后的全部段落文本,放在system角色中,格式为:"你是一个专业助手,以下为参考信息:\n{拼接好的段落}\n请基于以上内容回答用户问题,不要编造信息。"
方法二:作为user消息的前置上下文(推荐)
构造user消息时,把段落放在问题前面,用三重分隔线包裹:"参考信息:\n---\n{段落1}\n---\n{段落2}\n---\n用户问题:{原始提问}"。
注意:豆包对system角色中的长文本支持不稳定,部分版本会忽略超过2000字符的system内容,因此【优先使用方法二】。











