基于LangChain RAG的图书推荐系统:仅返回书名而非完整句问题
解决RAG图书推荐系统仅返回书名的问题
问题核心
当前使用google/flan-t5-base轻量模型搭建的RAG系统,因prompt指令约束不足、模型参数限制,导致仅返回书名,无法生成带描述的完整语句。
优化方案
1. 强化Prompt指令
调整prompt为更明确的分步要求,降低模型理解成本:
prompt_template = """ 基于给定的图书上下文信息,完成以下任务: 1. 找出与《杀死一只知更鸟》题材、内容最相似的图书(排除自身) 2. 用完整句子输出该图书的全名 3. 详细描述两本书在题材、主题或核心内容上的相似之处 问题:{question} 上下文:{context} """ prompt = PromptTemplate(template=prompt_template, input_variables=["context", "question"])
- 拆解任务为具体步骤,明确要求输出完整语句;
- 限定输出内容的维度(题材、主题、内容),避免模型仅返回关键词。
2. 调整模型生成参数
适当增大输出长度限制,微调温度参数提升输出丰富度:
llm = HuggingFaceHub( repo_id="google/flan-t5-base", model_kwargs={ "temperature": 0.7, # 适度提高温度增加输出多样性 "max_length": 800, "max_new_tokens": 300 # 增大生成token数,确保能容纳完整描述 } )
3. 额外优化建议
- 检查
texts中的图书数据是否包含完整的题材、描述信息,上下文信息缺失会导致模型无法生成有效描述; - 尝试替换
chain_type="stuff"为"map_reduce",当检索到的上下文内容较多时,分块处理后再整合结果,提升输出质量; - 若
flan-t5-base效果仍不理想,可尝试同系列更大模型(如google/flan-t5-large),但需注意资源消耗。
内容的提问来源于stack exchange,提问作者Mrunmayee Dhapre
相关产品推荐
相关产品推荐

