-
第一个经常碰到的典型问题是,大模型在脑补它自己的内容。
:这个解决方案就是修改prompt模板。调试中发现,需要约束模型在加工匹配后的结果时不要添加不存在的内容。还有就是匹配不到尝试自己回答问题时,应给出提示。测试效果不错
PROMPT_TEMPLATE = """已知信息:
{context}
根据已知信息,找到与问题匹配的答案,只需要简洁的来回答我的问题,
不要举例,更不要添加已知信息里不存在的内容。
如果在已知信息里匹配不到答案,则通过模型回答问题,
并在答案前加上“知识库中找不到答案,我来尝试回答您的问题:”
我的问题是:{question}"""
temperature: float = 0.01
top_p = 0.9
2.除了大模型的问题,更关键的是导入的数据质量及切割
:导入的数据如果是FAQ的问答是最理想的,这样还可以约束切割符。
chunk_size=1000,chunk_overlap=200,separator="\n\n"
还有一个chunk_size是约束匹配后的文本块长度的,这个在GLM2扩展后,可以适度设置大些,目前设置500。
这里有个小坑,导入的docx用office的报错,用wps的就可以。所以搞个批量转换函数。
3.搜索匹配
:涉及向量化。开源的这些对比OpenAI的向量服务,效果会差点。如果不涉及敏感信息,建议用OpenAI的。如果用开源的,相关度参数可以先设置0,后面根据效果再逐步从500往下调。