训练还是比较困难。如果真的要训练的话,可以采用 LoRA 等高效参数微调的方式。
但是现在的 LLM 都是指令模型,微调并不是直接将文档放进去就行,而是需要构造问答形式的数据。如果只在文档上训练得到的模型就只有补全能力,并不具有针对问题回答的能力。
举个例子,如果直接将唐诗三百首喂给模型。你给模型输入“怀民亦未寝”,它能够继续续写。但你如果说“请给我写一个有关月亮的诗”模型就无法可靠输出,因为训练数据里并没有这样的指令形式。
目前主流的方法还是使用知识库,将文档放到一个基于向量的 KnowledgeBase 中,每次提问时自动在知识库中检索相关条目,拼接在上文里进行提问,也就是检索增强生成 Retrieval Augmented Generation (RAG)。
这种方法不需要对模型进行训练,因此可以使用本地部署的模型,也可以直接调用 OpenAI 的 API 。
现在已经有许多相关的框架了,如 [LangChain](
https://github.com/langchain-ai/langchain) 或是对 LangChain 的高层封装 [Chatchat](
https://github.com/chatchat-space/Langchain-Chatchat)