如何为GPT/LLM模型添加额外知识?
61 个回答
1、retrieve-then-generate:类ChatGPT Retrieval Plugin的技术方案
核心:根据 输入query 检索本地/私有数据库/文档中的文档片段(检索可以是文本检索或者基于向量的检索),作为扩充的上下文 context,通过 prompt template 组合成一个完整的输入,继而调用模型生成response。
简版工作流:chunk -> index -> retrieve -> construct input -> LLM
推荐开源工具:
(1)OpenAI 的官方插件: ChatGPT Retrieval Plugin
(2)llama-index: https:// github.com/jerryjliu/ll ama_index ,提供了一个本地/私有数据收集(ingestion)和数据索引(indexing)的解决方案,构建起外部数据和 LLM 之间的接口。
一个利用 llama-index 定制个人论文检索的示例: llama_index/examples/paul_graham_essay at main · jerryjliu/llama_index 。
(在没有OpenAI API的情况下,llama-index 支持调用自定义的 LLM。)
(3)LangChain: https:// github.com/hwchase17/la ngchain ,也是为了更好的构建外部数据、其他应用与 LLM 进行交互的接口层框架。
LangChain应用参考示例: GPT-4 & LangChain——PDF聊天机器人-地表最强全文搜索 。
llama-index 和 LangChain 可以组合使用,LangChain 中提供了 面向不同任务的 prompt template 和 prompt chain。
2、其他回答中也提到了基于 fine-tuning 的方式,相比于第一种方案,基于 fine-tuning 的方式需要额外的训练开销,同时还是会受限于LLM的最大长度限制。
“让 LLM 具备理解定制数据库的能力”是很有挑战的目标,同时也会有很多应用场景。
(简版回答,后续再来扩充)