例如,我有一个博物馆的展品资料,我需要用这个资料作为模型的上下文环境,能够根据资料对用户的提问进行回答。 使得用户提问关于展品的问题,模型能够给出正确的解答。
Q
[THUDM/ChatGLM-6B][Feature] 请问如何基于特定文本对其中的内容进行解答?
7
A
回答
5
最好是自己建立资料然后Fintune模型,整体会麻烦一些,但是训练得好的话用起来会比较简单效果也好。
简单的方式就是把资料全部分成段落,每个段落建立embedding,然后根据用户提问计算embedding相似的段落,拿着段落作为context放到prompt里面直接向现有的模型进行提问,例如:根据下面的段落请回答用户的这个问题:xxxxxx。这种方式不用自己Finetuen模型,操作简单一些,但是由于每次提问只有少量的段落作为context,无法回答那种需要对不同段落进行联系才能回答的问题。
2
@MoCongxin 可以参考这个 https://github.com/THUDM/ChatGLM-6B/pull/216 对应到 @AndersonBY 体积的简单方式
8
@imClumsyPanda 这个好,但是我还没大看懂,我需要多研究下😂
@AndersonBY 实际上我没有什么finetune经验,所以想请教一下:
- finetune需要多大的语料才能达到比较好的效果?博物馆的资料说多不多说少也不少
- finetune后的模型会出现编造的现象吗?比如把a的介绍说成b的,或者杂糅多个展品的介绍?
8
embedding的上边说的很清楚 , 不过 chatGLM 对上下文的理解还不够.
finetune 用 loar来做 数据集以qa为主 可以参考 https://github.com/LC1332/CamelBell-Chinese-LoRA
6
https://github.com/l15y/wenda 里面有完整实现
1
@MoCongxin 我做了一个相对简单点的实现,可以看看 langchain-ChatGLM
5
@imClumsyPanda @l15y 非常感谢!
2
发现把您项目Api中qa.top_k…改为3,基本能命中文档,输出效果较好。