在上一篇文章中,讨论了基于“先检索后整合”的文档问答的实现方案,本文将针对这个方案的缺陷,讨论另一种基于微调gpt的技术方案。对于文档问答还不熟悉的读者,可以先阅读上一篇文章:
“先检索再整合”方法的缺陷
“先检索再整合”方法在工程上突破了LLM接口对max_token的限制,但是仍然存在以下两个问题:
缺陷1: 较高的调用成本
首先,在最后调用LLM接口时,由于prompt中需要将文档的片段也注入其中,导致prompt的长度很长,LLM接口的调用成本仍然较高。
例如上一篇文章中,prompt的模板如下:
"Context information is below. n" "---------------------n" "{context_str}" "n---------------------n" "Given the context information and not prior knowledge, " "answer the question: {query_str}n"
调用成本如下:
> [query] Total LLM token usage: 576 tokens > [query] Total embedding token usage: 10 tokens
- 'Total LLM token usage: 576 tokens'对应的是用整个prompt调用LLM语言模型的成本,又可分成四部分
- context_str: 500 tokens
- query_str: 10 tokens
- prompt模板中的其他文本:16 tokens
- answer_str: 50 tokens
可以看到,其中大部分的tokens都被context_str占掉。